如题。最近在做量化交易的软件,会涉及到 ws 消息推送,还有数据检测,数据处理等,性能其实要求不多,因为用户不多,就几个人玩,估计 js 都能胜任。
主要考虑的是业务代码的安全(不用考虑多线程等带来的问题),因为涉及到很多异步通知,变化比较多。。比如:这边刚挂单,那边就通知要撤单了。数据处理能更简单方便就好了。
目前能接触到的是 java ,nodejs ( python ),go 。
初选是 java:vertx ,账号行为在 Verticle 里,Actor 模式,不用考虑多线程,也挺符合面向对象编程的模式。但是实际上开发起来比较蛋疼。。没有协程,业务开发难度增加不少,全是异步,也带来其他的问题,流程不好控制。。
nodejs:比较喜欢脚本语言,应该可以代替 python 把。单线程,支持 async ,业务代码的安全性,应该比较高的。担心的主要是性能问题。当然多实例部署的也可以解决,但是就是要提前考虑架构的设计了。
go:只是入门把,所以很多东西不是特别了解,性能肯定是没问题的,也支持协程。
另外内置的数据结构问题,比如 Treemap ,ConcurrentSkipListMap 。go 和 nodejs 都不支持,应该要重写或者用内存数据库。如果要选这 2 个语言的话,那么本地可能要运行一个内存数据库,能内嵌或独立部署的也可以。有没有哪些比较轻量级的内存数据库推荐的呢。能内嵌就最好了,独立部署的话就需要支持 NIO 的客户端。
1
vrqq 2023-01-20 23:32:30 +08:00
如果网络环境快(如网络协议、地理位置等) + 数据量大,那编程语言只有 c++等 native code 可选,需要程序员有多线程把控能力、cpu 执行优化、编译器优化等理论知识来指导写代码。。
像楼主提到的性能要求不高,虚拟机语言例如 java 也可以用,推荐选择自己熟悉的语言,快速构建业务模型,但 python 等轻型虚拟机要谨慎 在大量数据压迫下很可能出现奇奇怪怪的 IO latency |
3
shaoyie 2023-09-14 01:04:20 +08:00
最好是用 Go ,我玩过自动化交易,比如你要并发的请求 N 个币的 k 线,然后等都返回后马上计算个因子啥的,没有协程的处理起来就麻烦多了,另外,要考虑 Python ,pandas 是做量化和交易策略绕不开的东西
|