V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
myself659410
V2EX  ›  程序员

设计开发一个高频交易系统,有哪些地方需要注意的?

  •  
  •   myself659410 · 2017-08-14 18:40:51 +08:00 · 9460 次点击
    这是一个创建于 2437 天前的主题,其中的信息可能已经有所发展或是发生改变。

    例如开发语言的选择是否应该选择 java,c/c++这种?(业界高性能一般都 c++ 对硬件有更好的控制能力) 更新与升级需要在设计上注意上什么? 撮合系统分布式还是集中式?如果实现分布式撮合系统有哪些业界的案例? 硬件方面是采用 x86 的服务器,是否可以考虑采用一些最新服务器,充分利用新硬件加速?

    采用 disruptor 开源怎么样?

    37 条回复    2017-08-16 00:03:41 +08:00
    wekw
        1
    wekw  
       2017-08-14 18:48:35 +08:00 via Android
    x86 的网卡不行,网卡延迟 200 毫秒,都是钱呐
    pimin
        2
    pimin  
       2017-08-14 20:39:56 +08:00 via Android
    首先应该找一个有同类项目开发经验的团队
    LosLord
        3
    LosLord  
       2017-08-14 20:41:47 +08:00 via Android
    交易系统,这种东西偏业务型的,感觉用 java 好一些
    lydasia
        4
    lydasia  
       2017-08-14 20:48:35 +08:00 via iPad   ❤️ 2
    @wekw 什么网卡延迟 200 毫秒?
    vitalbo
        5
    vitalbo  
       2017-08-14 20:51:16 +08:00
    java c 都可以 用 c 的多一点
    whileFalse
        6
    whileFalse  
       2017-08-14 21:05:48 +08:00
    java 的话,内存回收会不会卡一秒
    wohenyingyu01
        7
    wohenyingyu01  
       2017-08-14 21:09:35 +08:00   ❤️ 1
    @wekw 咸鱼上 10 块钱买的网卡 10ms 延时,你的 200ms 的 x86 网卡应该是 3 块钱买的吧?
    allenhu
        8
    allenhu  
       2017-08-14 21:11:50 +08:00 via Android
    关键是网速
    binux
        9
    binux  
       2017-08-14 21:12:01 +08:00   ❤️ 4
    @wohenyingyu01 #7 「 10 块钱买的网卡 10ms 延时」,200ms 当然是 200 块啊
    introom
        10
    introom  
       2017-08-14 21:12:49 +08:00 via Android
    @whileFalse 会,看 spark 就知道 gc 很影响效率。所以要么 gc 调优,要么自定义钻石类型跳过 GC.
    然而 cpp 这么美丽,为什么不用? cpp standard draft 那么醍醐灌顶,为什么不像圣经一样人手一本,顶礼膜拜?
    JanDai
        11
    JanDai  
       2017-08-14 21:15:28 +08:00
    做高频交易不用 FPGA 反而用 Java,或许可以试试用 FPGA 实现的 JVM
    wdlth
        12
    wdlth  
       2017-08-14 21:42:52 +08:00
    内核和网络要进行优化,加钱上 IPLC、搞根独揽……
    wevsty
        13
    wevsty  
       2017-08-14 22:10:50 +08:00
    追求运行效率的话,开发语言上当然 C or CPP,当然如果有能力和毅力用 ASM 的话,算你狠。
    nVic
        14
    nVic  
       2017-08-14 23:58:41 +08:00 via iPhone
    最重要的地方其实不是用什么语言和网卡。
    4ever911
        15
    4ever911  
       2017-08-15 00:16:39 +08:00 via iPhone
    楼上的回答都好 young 好 simple
    Admstor
        16
    Admstor  
       2017-08-15 00:22:19 +08:00
    高频似乎对延迟非常非常敏感
    java 应该不行
    基本上只能用 C/CPP

    x86 必须直通上光纤才行吧
    ibx
        17
    ibx  
       2017-08-15 00:23:13 +08:00
    @nVic 请问最重要的地方是什么
    hst001
        18
    hst001  
       2017-08-15 00:24:54 +08:00
    服务器搬到交易所机房旁边
    uuair
        19
    uuair  
       2017-08-15 00:29:23 +08:00
    你是打算自己做,还是有团队呢?
    uxstone
        20
    uxstone  
       2017-08-15 00:40:19 +08:00
    费这么大的劲, 能稳定在多少收益率?
    lightening
        21
    lightening  
       2017-08-15 00:49:55 +08:00
    不是他们搞高频交易的都要把机房放到交易所旁边吗?不然因为光速有限,延迟太大了?
    lsmgeb89
        22
    lsmgeb89  
       2017-08-15 01:01:32 +08:00
    不是搞微波通信吗?

    来点干活,看地一个回答:
    https://www.zhihu.com/question/23185359
    buseni
        23
    buseni  
       2017-08-15 08:01:41 +08:00 via Android
    和语言关系不大吧,golang 或者 php 都可以
    kuno1
        24
    kuno1  
       2017-08-15 08:07:05 +08:00
    这些都是金融科技公司的看家本事,需要相关的网络技术沉淀才有成功机会,先看看内核的 tcp/ip 协议栈 :)
    wekw
        25
    wekw  
       2017-08-15 08:40:38 +08:00 via Android
    #更正# x86 网卡延迟 200 微秒……
    wekw
        26
    wekw  
       2017-08-15 08:45:02 +08:00 via Android
    经过我对办公室内常见以太网设备的 ping 分钟,延迟最低的是惠普打印机,然后是路由器,然后是 x86 机器的网卡。
    jerseyjerk
        27
    jerseyjerk  
       2017-08-15 08:55:42 +08:00 via Android   ❤️ 1
    现在几乎都使用 FPGA 了. 核心部分代码是 C 直接烧入 FPGA. 机器通常部署在离交易所很近的地方,尽可能地减少延迟。你所说的撮合系统,并非一个高频交易系统考虑的问题,通常是由交易所实现的。一个高频交易系统的核心并不极其复杂,真正复杂的是两部分。第一是 compliance, auditing 等金融监管的需求。第二是 Routing,因为很少有通用的高频交易系统,一般都是 commodity 一套,Equity 一套这样,上下游都是不同的系统,所以要做到很高效率的 routing.
    nicevar
        28
    nicevar  
       2017-08-15 09:17:03 +08:00
    @jerseyjerk 上层最重要的部分一定要用 php 或者 go 来写,否则整套系统垮掉
    hienchu
        29
    hienchu  
       2017-08-15 09:18:31 +08:00 via iPhone
    还是先搞清楚什么是高频交易,为什么要高频交易吧
    danielmiao
        30
    danielmiao  
       2017-08-15 09:26:45 +08:00
    不知道你的啥网卡,我的 2 台 gen8 上的虚机互 ping 也就 0.1ms 。。。。。
    另外如果真是这样高频的交易,不应该先考虑用什么样的数据存储再考虑用什么语言么。。相对语言的效率区别,磁盘 I/O 的影响会更大吧
    areless
        31
    areless  
       2017-08-15 09:28:45 +08:00
    有发现没?大多量化高频对冲基金都没有跑赢现在的一系列大盘指数,策略上有专门对付策略的策略,量化上有专门对付量化的量化,重要的是想法不是系统。先玩熟 MT4 吧,MT4 里什么都能做。而且这种庞大的计算系统在市场上获利的作用,并没有被证明过。要么就是用了一段时间没有收益了,要么有了收益一段时间系统出问题了,那跟江湖巫术又有何异?
    zhongkouwei
        32
    zhongkouwei  
       2017-08-15 09:46:46 +08:00
    策略很重要吧,我猜
    china521
        33
    china521  
       2017-08-15 10:14:38 +08:00   ❤️ 1
    什么都不如实盘过的源码来的实在: https://www.botvs.com/strategy/34388
    vjnjc
        34
    vjnjc  
       2017-08-15 11:00:49 +08:00
    @china521 这个看起来厉害
    winglight2016
        35
    winglight2016  
       2017-08-15 11:33:26 +08:00
    @vjnjc 居然 js 写的,作为客户端 nodejs 大概已经是效率比较高的实现方式吧
    omg21
        36
    omg21  
       2017-08-15 13:56:58 +08:00
    1.自己做交易系统,数据源从哪来?就是说怎么知道现在到什么价格了?
    2.现有的文华、金字塔这些程序化交易软件,为什么不用?
    谁能给简单科普一下?
    leloext
        37
    leloext  
       2017-08-16 00:03:41 +08:00
    @Admstor 光纤速度比不过空气中的电磁波速度,介质的区别。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3747 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 10:48 · PVG 18:48 · LAX 03:48 · JFK 06:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.