R/C++/IB 计算机交易

Discussion in 'Julia / MATLAB / SAS' started by utrading, Jul 11, 2012.

  1. 我一直都觉得用R, MATLAB, EXCEL 开发交易系统
    比直接在交易平台上(TS, MC, NJ, AB, TB,MT4)开发要好很多,
    只是一开始起步比较难,之后优势会越来越明显,
    因为这些工具不仅能编程,还有无比强大的计算引擎和无数的工具库,接口也非常多。

    用C/C++/Java/.Net的唯一优势就是运行效率高一点。

    打个比喻(开玩笑的,各位不要对号入座)。对于开发交易系统而言:
    用R, MATLAB, EXCEL 的人是站在超人的肩膀上
    用C/C++/Java/.Net 的人是站在机器人的肩膀上
    用交易平台(TS, MC, NJ, AB, TB,MT4)的人是把自己的钱包挂在别人的裤腰带上(因为人家一升级,倒闭,不高兴卖给你,你就傻眼了)

    当然啦,你的交易平台或者机器人也可以召唤小超人。
    我的小超人也可以操作机器人和交易平台。:D
     
  2. espresso说得很透彻. 在R/Matlab/Excel之中,我现在只用R.

    R不光有"无比强大的计算引擎和无数的工具库", 还支持矢量运算, 极大的方便了编程和调试.

    不过具体到运行一个交易系统, 还是C++更有效率和稳定性, 所以R/C++其实是近乎完美的
    组合.
     
  3. R 是统计软件,做分析很不错,实时没用过,做后分析也嫌慢。为了避免跨语言编程,我考虑用数据库做数据交换,一台机器放数据库和虚拟机做前后端,另外用了两台机器专门做R运算(R的功力不够,只能用暴力方法),结果放回数据库,交易程序只需要从数据库提取结果,判断下指令。

    多语言混合编程有个不好的方面,版本升级后有可能不支持同样的调用,我之前是用的perl+R,后来升级perl发现不支持,要自个修改RSPerl的库,再这样下去要找到赚钱的交易方法前,先成为perl专家。后来我就不再考虑混合编程。
     
  4. R 代码用 compiler包编译后, 执行速度上有提高
     
  5. r不适合实时交易,做回测和非实时的支持是没问题的。
     
  6. 不适合?能否说的详细些。

    我正在开发的一个日内策略,就是用R/C++写的,运行效率还不错。因为我不做
    高频,所以速度不是问题。

     

  7. 速度、稳定性、维护。

    c++可以解决速度问题,但稳定性和可维护性是不可知的。

    商业软件最大的好处是出了问题,有人负责,至少你可以出钱解决。

    开源软件一切都要靠自己。

    如果自己实现的部分结构简单,可以自己维护的了,或者足够复杂,反正你要组建一个维护团队的话,那就差别不太大了。
     
  8. 很同意这位前辈的观点,小弟创建了一个 R-trading QQ群,群号273832756,希望大家一起来讨论、研究、进步!
     
  9. 你可以试Revolution
     
  10. 好消息,Kuhasu也开始用R啦?Revolution就是开源的R加上Enterprise
    features, 而且不是免费的。Kuhasu如果有经验请介绍一下。

    其实如果自己很精通的话,用开源的C++和R写出来稳定性可靠的系统,
    及后续维护,都是没有问题的。至少我现在是这个情况,虽然我的系统还
    不很复杂。当然我只是少例,毕竟两种语言我都用了很多年了。

    如果一味依靠付费的的服务,首先能不能长期存活都是问题,其次会产生
    平台依赖性。

     
  11. 呃~其实我算Revolution第一批用户,他们老板我认识,看着二次创业又起来的。
    名义上我的确是“xx中国专家”,不过我也不希望xx一家独大缺乏革新动力,我也是什么都用的,尽管C++依旧菜鸟:p
     
  12. Revolution,要不是你们说,居然不知道这个软件。

    那么,能说下Revolution相对于r,有啥特别值得使用的优势么?
     
  13. 在某些方面专就好了,没有必要面面俱到。我相信你的团队里肯定有C++或其他
    语言的专家的。其实这几年C++的市场也是越来越小,我已经成了少数中的少数
    派了。


    Revolution对个人来说没有优势,除非你要用并行计算,或超大规模数据处理。
    就我个人而言,R小巧灵活,反而更方便。不过R是开源的,所以公司一般不愿意用,
    出了问题没有技术支持。Revolution就是在R的基础上加了很多Enterprise features,
    同时提供技术支持的付费服务。

     
  14. 企业版的R,原生服务器部署,多线程,bug少。
    效率上实际运行比R的基础模块要好很多。
    除此之外,对于其他自行开发的包,本质无区别。
    R的基础模块在内存管理,大数据处理,以及统计规范和准确程度上因为是开源的,所以难免问题多多,其他统计包的话,Revolution有重写的,稳定性和数值运算准确性有保证。
    开发者版本免费。
     
  15. 膜拜C++高手!有几位大侠都是论坛里C++的高手,打心底就佩服!
    R在处理数据方面还是有些效率和稳定性问题的,但是新算法方面好很多,当然因为新算法,所以也就不一定可靠,这个不是缺点。欧洲公司R用的人有些。不过大型机构,基本没有用R的,这个也是R应该改进的地方。
     
  16. 这位兄弟,你的例子也太不靠谱了。R的专长是数据处理和统计分析,你却用它来读取socket, 这不是自找麻烦吗?不用写就该知道有稳定性问题。

    虽然我对socket一窍不通,但如果我是你,我会用C++或Java之类更合适,有效率的语言写成库,然后用R来调用。

     
  17. 逼着大象用鼻子去捡地上的米.... :D
     
  18. 确实麻烦,最快的方式是找有socket的R例程来改,或者直接看R文档把,不过我记得Je rey A. Ryan写过一个Real Time Processing in R的东西你在网上找找可能有帮助
     
  19. 我猜你说的是Jeff Ryan, 他写过很多对金融分析非常有用的R包。

    你说的那个包是不是IBrokers? 我前一段时间试过,确实可以运行,从IB接受市场数据,以及下单。问题是IB连接本身不稳定,有很多错误码需要处理,还有R运行效率的问题,等等,最后导致无法实时运行。不过如果只是定时运行一次还是可以的。

    最后我的解决方案就是我开头说的,IB的接口全C++,只是用R分析数据,产生信号,达到物尽其用:-)