自动化交易,量化交易,用哪个语言比较方便呢?

2022-10-03 07:59:52 +08:00
 byte10

背景

如题。最近在做量化交易的软件,会涉及到 ws 消息推送,还有数据检测,数据处理等,性能其实要求不多,因为用户不多,就几个人玩,估计 js 都能胜任。

考虑点

主要考虑的是业务代码的安全(不用考虑多线程等带来的问题),因为涉及到很多异步通知,变化比较多。。比如:这边刚挂单,那边就通知要撤单了。数据处理能更简单方便就好了。

候选区

目前能接触到的是 java ,nodejs ( python ),go 。

初选是 java:vertx ,账号行为在 Verticle 里,Actor 模式,不用考虑多线程,也挺符合面向对象编程的模式。但是实际上开发起来比较蛋疼。。没有协程,业务开发难度增加不少,全是异步,也带来其他的问题,流程不好控制。。

nodejs:比较喜欢脚本语言,应该可以代替 python 把。单线程,支持 async ,业务代码的安全性,应该比较高的。担心的主要是性能问题。当然多实例部署的也可以解决,但是就是要提前考虑架构的设计了。

go:只是入门把,所以很多东西不是特别了解,性能肯定是没问题的,也支持协程。

另外内置的数据结构问题,比如 Treemap ,ConcurrentSkipListMap 。go 和 nodejs 都不支持,应该要重写或者用内存数据库。如果要选这 2 个语言的话,那么本地可能要运行一个内存数据库,能内嵌或独立部署的也可以。有没有哪些比较轻量级的内存数据库推荐的呢。能内嵌就最好了,独立部署的话就需要支持 NIO 的客户端。

686 次点击
所在节点    问与答
4 条回复
vrqq
2023-01-20 23:32:30 +08:00
如果网络环境快(如网络协议、地理位置等) + 数据量大,那编程语言只有 c++等 native code 可选,需要程序员有多线程把控能力、cpu 执行优化、编译器优化等理论知识来指导写代码。。

像楼主提到的性能要求不高,虚拟机语言例如 java 也可以用,推荐选择自己熟悉的语言,快速构建业务模型,但 python 等轻型虚拟机要谨慎 在大量数据压迫下很可能出现奇奇怪怪的 IO latency
byte10
2023-01-27 20:29:56 +08:00
@vrqq ok 好
shaoyie
228 天前
最好是用 Go ,我玩过自动化交易,比如你要并发的请求 N 个币的 k 线,然后等都返回后马上计算个因子啥的,没有协程的处理起来就麻烦多了,另外,要考虑 Python ,pandas 是做量化和交易策略绕不开的东西
byte10
227 天前
@shaoyie nodejs python 都支持协程的。 我选 java 20 版本了,也有虚拟线程,问题不大。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/884438

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX