开发简单牢固的交易系统

Discussion in 'General Topics on Software and Data' started by zhimakaimen, Sep 8, 2012.

  1. 我有多年的写软件的经验了,我在开发简单的交易系统,自己用的。已经有一个东西了,但还不能用,还有问题要修改。另外现在的架构是单线程的,靠ib的事件驱动,如果同时交易太多的证券,应该改成多线程架构。

    为什么要自己写?我没有用过别的交易系统(看过几个开源的系统),但可以想象,用别人的交易软件,如果策略复杂的话,你用别人封装起来的软件实现,肯定非常麻烦,不会比你写简单的交易系统容易。简单的交易系统,有一个架构以后,需要什么功能,可以自己再写,这时候比你用别人软件简单。

    我写的是基于ib api/tws接口的,用的是vc,希望找一两个和我水平相当的,一起写,代码彼此共享。如果有人加入,单线程的可以放心使用的交易系统应该1-2个月搞好,包括开发和测试。总之,你现在加入和你买交易软件再学习它的使用成本短期相同,长期肯定自己写的代码成本低。
     
  2. ib允许单帐号多线连?
     
  3. 如果允许的话,多线是挺好的。
     
  4. 跟ib没有关系啊,接收数据还是在一个线程中,接受到数据存储后返回,处理数据在别的的线程中。
     
  5. 我问一个问题,你收来的数据怎么怎么分发到其他线程里面。其他线程自主监控是否有粉笔数据进来?然后进行动作吧。 还是有人曾经计算过这种一个线程分发, 多个线程接收数据,性能上能具体提高多少。还有另外一个问题,我记得交易连接只有一条,无论怎么样交易都是一条信道,你再快也就一个线程. 所以忙了一镇,其实没有多少性能提高的地方。倒是能把自己折腾的半死。
     
  6. 个人认为数据接收和下单都不是难点,对各种策略的支持应该是一个比较难做的地方。
     
  7. 做成多线程主要是资源均衡分配,不同策略间互相不干扰,不相互等待。至于线程之间共享数据,在windows下边,只要是在同一个进程空间里很容易实现。你要想多线程接受数据,可以多开几个tws, 每个tws对应一个用户名,一个交易软件的进程。
     
  8. 策略自身的逻辑,在每个策略里自己实现,如果某个特定的策略对公用的模组有特别要求,再随时添加和修改。这也就是我自己写交易软件的原因,我怀疑用买来的交易系统,当实现稍微复杂的策略的时候,会非常麻烦。