我一直都觉得用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)的人是把自己的钱包挂在别人的裤腰带上(因为人家一升级,倒闭,不高兴卖给你,你就傻眼了) 当然啦,你的交易平台或者机器人也可以召唤小超人。 我的小超人也可以操作机器人和交易平台。
espresso说得很透彻. 在R/Matlab/Excel之中,我现在只用R. R不光有"无比强大的计算引擎和无数的工具库", 还支持矢量运算, 极大的方便了编程和调试. 不过具体到运行一个交易系统, 还是C++更有效率和稳定性, 所以R/C++其实是近乎完美的 组合.
R 是统计软件,做分析很不错,实时没用过,做后分析也嫌慢。为了避免跨语言编程,我考虑用数据库做数据交换,一台机器放数据库和虚拟机做前后端,另外用了两台机器专门做R运算(R的功力不够,只能用暴力方法),结果放回数据库,交易程序只需要从数据库提取结果,判断下指令。 多语言混合编程有个不好的方面,版本升级后有可能不支持同样的调用,我之前是用的perl+R,后来升级perl发现不支持,要自个修改RSPerl的库,再这样下去要找到赚钱的交易方法前,先成为perl专家。后来我就不再考虑混合编程。
速度、稳定性、维护。 c++可以解决速度问题,但稳定性和可维护性是不可知的。 商业软件最大的好处是出了问题,有人负责,至少你可以出钱解决。 开源软件一切都要靠自己。 如果自己实现的部分结构简单,可以自己维护的了,或者足够复杂,反正你要组建一个维护团队的话,那就差别不太大了。
好消息,Kuhasu也开始用R啦?Revolution就是开源的R加上Enterprise features, 而且不是免费的。Kuhasu如果有经验请介绍一下。 其实如果自己很精通的话,用开源的C++和R写出来稳定性可靠的系统, 及后续维护,都是没有问题的。至少我现在是这个情况,虽然我的系统还 不很复杂。当然我只是少例,毕竟两种语言我都用了很多年了。 如果一味依靠付费的的服务,首先能不能长期存活都是问题,其次会产生 平台依赖性。
在某些方面专就好了,没有必要面面俱到。我相信你的团队里肯定有C++或其他 语言的专家的。其实这几年C++的市场也是越来越小,我已经成了少数中的少数 派了。 Revolution对个人来说没有优势,除非你要用并行计算,或超大规模数据处理。 就我个人而言,R小巧灵活,反而更方便。不过R是开源的,所以公司一般不愿意用, 出了问题没有技术支持。Revolution就是在R的基础上加了很多Enterprise features, 同时提供技术支持的付费服务。
企业版的R,原生服务器部署,多线程,bug少。 效率上实际运行比R的基础模块要好很多。 除此之外,对于其他自行开发的包,本质无区别。 R的基础模块在内存管理,大数据处理,以及统计规范和准确程度上因为是开源的,所以难免问题多多,其他统计包的话,Revolution有重写的,稳定性和数值运算准确性有保证。 开发者版本免费。
膜拜C++高手!有几位大侠都是论坛里C++的高手,打心底就佩服! R在处理数据方面还是有些效率和稳定性问题的,但是新算法方面好很多,当然因为新算法,所以也就不一定可靠,这个不是缺点。欧洲公司R用的人有些。不过大型机构,基本没有用R的,这个也是R应该改进的地方。
这位兄弟,你的例子也太不靠谱了。R的专长是数据处理和统计分析,你却用它来读取socket, 这不是自找麻烦吗?不用写就该知道有稳定性问题。 虽然我对socket一窍不通,但如果我是你,我会用C++或Java之类更合适,有效率的语言写成库,然后用R来调用。
我猜你说的是Jeff Ryan, 他写过很多对金融分析非常有用的R包。 你说的那个包是不是IBrokers? 我前一段时间试过,确实可以运行,从IB接受市场数据,以及下单。问题是IB连接本身不稳定,有很多错误码需要处理,还有R运行效率的问题,等等,最后导致无法实时运行。不过如果只是定时运行一次还是可以的。 最后我的解决方案就是我开头说的,IB的接口全C++,只是用R分析数据,产生信号,达到物尽其用:-)