请教一下如何实现基于CTP和R语言的自动化交易。仿佛方案有二, 一: 利用现成的CTP-Python,然后在Python里面调用R。 二: 弄个CTP-R出来。 主要是做到下面: 1. 自动下单,读取实际成交价格,实际止损价格,当前仓位等。 2. 数据频率为1,3,5分钟这三个频率的开高低收。 有高人愿意赐教一二吗? 有一定报酬,但不高。 联系方式:ruser168@gmail.com
如果考虑专业性,速度,性能, 把CTP的库封装成R语言的一个库就可以了。 用R做实时性的交易还是有不少的问题。它的运行速度慢,分析算法可能费不少时间。 综合考虑,我认为拿R作盘后分析还可以,拿它做交易的平台,实在看不出来有什么优点。
我猜测你考虑R作为平台很大可能性是因为想实时用library做比MA稍微复杂一点的统计分析(比如实时聚类,实时的协整分析,实时的主成分),而又不想用C重写这部分代码,所以才考虑使用接口。而且既然是实时的,那么策略应该不是日间的。如果不是因为这个原因,那最好不用R,最主要的原因如下: R是单线程,,而实际交易需要同时处理行情数据和订单执行情况...如果是按照 “ 获取实时数据 -> 计算指标和交易逻辑 -> 下单 -> 根据下单回报情况决定撤单,或者追单,然后更新持仓,浮动盈亏等等指标 -> 接受下一个Tick,重复以上逻辑 ” 这样单线程的思维,那么有可能中间某个步骤会阻塞整个流程(比如假设3个Tick之后撤单,则完成这个流程需要至少4个Tick,那中间3个Tick的行情怎么处理?直接丢弃?)。。 如果要硬要设计,,那么我自己想的一种办法是:: R的线程中优先处理与行情有关的指标(比如你的聚类,主成分,小波等),这样的话应该在C中单独开辟一个线程存放行情数据,,用Rcpp的DataFrame和R交换数据。。订单执行的策略全部由C另开一个线程完成。。下单只需一个函数(指定价格,量,开平,止损止赢价,等待时间,订单编号等等)完成从R到C的通信。这样的话实际上是在写一个C的平台了,因为大多数细节都放在了C的接口上,R只是完成了从行情数据到下单命令发出这个步骤呢,。 扯了这么多,总之,个人觉得还是用R作日间的策略吧。日内的矩阵运算还是用C好了。
多谢qsoft_cn大侠的点评。用R的原因基本是就是大侠猜到的,自己弄了些算法,但是不想重写代码。模型代码,资金管理等重写很麻烦,而且一部分东西还要依赖某些R包。我的日内策略一个特点是对下单速度要求不是特别高,一定的滑点可以接受,从接收新OHLC,实际账户情况,实际成交价格等到下单完成如果不超过10秒,对我的策略都应该可以,硬件应该是高速内存+SSD+高频CPU。 Rcpp本人只是知道把一些loop用Rcpp写,然后在R里面调用。难的是我不知道怎么在R里面下单和接收实际止损价格,实际成交价格等信息。由于本人没有任何使用API的经验,对开发CTP-R接口很无知,望不吝赐教。
发你邮箱了。linux64 是比较好的平台,而windows版本的R就是用mingwGCC编译的,还必须先把CTP的VC编译的C++ API转为纯C的API才能被RTOOLS的GCC支持,,微软真烂。PS:切身体会,我在win下用R处理大数据经常卡,所以在win下做交易,而且又是用R要慎重。随时做好手动干预的准备。
简单来说就是通过某种方式完成C++和R两个进程之间的信息交换。以文件(包括数据库,下同)为例: 1. 行情部分:用C++收行情数据,收到的行情数据写文件,R那边不断地读文件获取最新的行情数据来做分析。 2. 交易部分:R要下单时也是写文件,C++的交易模块不断检查下单文件,发现R那边新下单了就立刻发送出去。类似的,C++收到的各种回报也写文件,R那边根据需要读取相关的部分。 这个方法的好处是通用,与编程语言没有任何关系,风险小。坏处是可能工作量大一些,性能较难做到极致(看你的要求这点倒不是问题)。合适与否,你得自己斟酌了
再次感谢WenYan的建议,我以前也想过甚至用txt来让自动交易平台和R语言交互: 1. 自动交易平台把最新的帐号信息,实际成交,实际止损等发到某一txt文件中,然后我读取。 2. 根据最新信息,更新信号,仓位,止损等,然后写到txt文件,自动交易平台再到txt中读取。 俺的策略不是高频,只是日内调仓而已,可能一笔持仓几天,所以对下单速度没有很高的要求。俺目前先按照qsoft大侠的思路去做,如果俺学不会,再来向您请教,十分感谢!
qsoft_cn真是传说中的武林高手,不但本领高,还愿意帮帮俺这样的菜鸟,多谢! 对在windows下面用RTOOLS和RCPP的繁琐性我也有些体会。在windows里面用R做并行运算就经常断掉,看来现在不得不学习Linux了。 有机会,去上海当面谢过qsoft!
http://www.benvanvliet.net/ 以及此人的<build automated trading system> 额,,老兄,这个综合交易平台的论坛板块就是专门为回答你这个问题而设的..