V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
byte10
V2EX  ›  问与答

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

  •  
  •   byte10 · 2022-10-03 07:59:52 +08:00 · 836 次点击
    这是一个创建于 782 天前的主题,其中的信息可能已经有所发展或是发生改变。

    背景

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

    考虑点

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

    候选区

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

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

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

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

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

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

    像楼主提到的性能要求不高,虚拟机语言例如 java 也可以用,推荐选择自己熟悉的语言,快速构建业务模型,但 python 等轻型虚拟机要谨慎 在大量数据压迫下很可能出现奇奇怪怪的 IO latency
    byte10
        2
    byte10  
    OP
       2023-01-27 20:29:56 +08:00
    @vrqq ok 好
    shaoyie
        3
    shaoyie  
       2023-09-14 01:04:20 +08:00
    最好是用 Go ,我玩过自动化交易,比如你要并发的请求 N 个币的 k 线,然后等都返回后马上计算个因子啥的,没有协程的处理起来就麻烦多了,另外,要考虑 Python ,pandas 是做量化和交易策略绕不开的东西
    byte10
        4
    byte10  
    OP
       2023-09-14 09:52:01 +08:00
    @shaoyie nodejs python 都支持协程的。 我选 java 20 版本了,也有虚拟线程,问题不大。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2848 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 09:20 · PVG 17:20 · LAX 01:20 · JFK 04:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.