这两年在做openctp的过程中,接触到了不少量化交易接口,太多了,有时候自己找起来也麻烦,就写个汇总吧,也方便别人。
openctp是一个与simnow提供类似服务的平台,采用CTPAPI兼容接口,支持CTP程序无缝接入进行开发测试及模拟交易,并且还支持A股(股票、基金、债券等)、港美股等全球商品交易,通过将中泰证券XTP、华鑫证券奇点、东方财富EMT等极速柜台接口封装成CTPAPI兼容接口,以支持CTP程序无需修改即可接入各大证券柜台进行股票交易。
已经开源的股票柜台行情接口CTPAPI源码有腾讯行情、新浪行情、中泰证券XTP、华鑫证券奇点,相关文章可见krenx的知乎文章及openctp公众号中的文章。
https://github.com/krenx1983/openctp/tree/master/ctpapi-python
https://github.com/krenx1983/openctp/tree/master/ctpapi-java
https://github.com/openctp/webctp
https://github.com/krenx1983/openctp/tree/master/docs/CTPAPI
http://121.37.80.177:10080/detail.html
https://github.com/nicai0609/Python-CTPAPI
https://github.com/nicai0609/J$A-CTPAPI
https://github.com/hankchan/goctp
https://github.com/shawn666liu/ftdc2c_ctp
2023-03-08: 免费仿真环境已迁至121.37.90.193,并且取消了行情前置,订阅行情请直连CTP柜台(免费的,不需要账号)。具体见:openctp仿真环境调整
openctp已经开放运营一年多了,帮助了很多CTP用户调试程序、验证策略、学习交易等,有simnow这样的官方平台,谁弄个第三方的干嘛?原因大家也都知道,正如现在所碰到的情况,simnow又停服一个月,已经是今年第二次超长时间停服了,谁知道还会不会有第三、第四次。。
也是机缘巧合,手上积累了相关的技术,这个积累可不是拿来主义啊,咱可是一个字母一个字母敲出来的,妥妥的原创技术,只是说是设计思想跟CTP接近,也仅此而已了。通过接口封装成CTPAPI形式提供了与CTP接口兼容的接入方式,CTP程序只要更改一下CTP的交易dll(thosttraderapi_se.dll)和行情dll(thostmduserapi_se.dll)即可对接到openctp的交易前置和行情前置,当然,这两个dll或so也可以只替换其中一个,比如你想连到openctp的交易前置那就只需要替换交易dll即可,openctp的两套仿真环境也只需要你替换一下交易dll就行了,行情可以直接连接CTP实盘行情前置,因为openctp的行情也是转自CTP实盘前置,又何必接这个二道贩子的数据呢。
openctp的VIP环境直接就没有提供行情前置,你必须去直连实盘行情,但是这可能操作上有点麻烦,因为vn.py默认的TTS通道使用的是openctp的行情dll,你只改个CTP实盘前置地址是不够的,还要把行情dll替换成ctp官方版本,具体位置看你安装路径了,大概是这样的位置:C:\veighna_studio\Lib\site-packages\vnpy_tts\api
需要注意的是vn.py使用的是6.5.1的win64版本dll,请不需要弄错版本号。
CTP实盘行情的地址有很多,其实CTP行情前置是不校验用户名、密码的,所以你可以连接任意一家期货公司的行情前置,我随便挑了几个实盘的地址:
tcp://180.169.112.54:42213
tcp://140.207.168.9:42213
tcp://180.168.212.75:41313
tcp://27.115.78.155:41313
tcp://180.168.102.233:41168
tcp://112.64.143.220:41168
另外也还是陆续有vn.py的朋友问4097的错误问题,这里再提一下这个问题的解决方法,因为TTS的dll与CTP的dll同名,所以不能同时勾选这两个通道,只能勾选其中一个:
TTS通道的更多信息请到openctp官方页面了解:https://github.com/krenx1983/openctp
或者关注openctp的公众号,TTS的模拟账号也会在你关注的时候自动为你创建,一个微信号可以获得免费的3个7x24和3个仿真模拟账号,需要更全品种、全好体验的可以购买相应的VIP环境模拟账号。
最后非常感谢vn.py晓优大佬的支持,希望能够跟vn.py一起为投资者提供更好的服务。
Simnow要停止服务一个月,很多朋友通过veighna连接openctp的模拟环境。
TTS系统是openctp环境的交易系统,全名是TickTradingSystem,提供与CTP兼容的SDK接口。
原先veighna用户需要下载openctp的dll替换本地dll,好像2.5以后的版本就不用用户替换了,已经直接支持了。
还是写一下具体操作吧,免得很多人一遍遍问。
通道选择界面不要同时勾选CTP和TTS,要连TTS就只勾选TTS,否则会报4097的连接错误。
后面的连接信息也只要填用户名密码和地址,其它不需要填。
地址有两套,与simnow的部署一样,其中一套为7x24小时不间断测试环境。
仿真环境(交易时段与实盘一致):
交易前置 - tcp://121.36.146.182:20002
行情前置 - tcp://121.36.146.182:20004
7x24环境(不间断轮播某天行情):
交易前置 - tcp://122.51.136.165:20002
行情前置 - tcp://122.51.136.165:20004
模拟账户只要关注下面的公众号(CTP开放平台)即可自动创建。
TTS不仅提供国内期货的模拟交易,还提供A股、港、美股模拟交易,港美股的合约不多,只有市值较大的十几个股票。
更多信息可见openctp的GitHub地址:CTP开放平台
特别注意的是,如果遇到4097连接错误,就看下面这篇文章:4097错误看这里
计划写一个纯Python语言编写的股票期货交易系统,初衷是技术交流,一定是轻量级的,但是也能够做实盘交易,先立个Flag,希望有对此感兴趣的朋友一起来完成。
已经在github上建了仓库,跟vn.py一样采用MIT协议。
https://github.com/krenx1983/PyTradingSystem
哈哈,找到组织了,知乎上发的这篇文章,分享一下。
vn.py 在量化交易圈内是非常知名的python量化交易客户端,提供完整的基于python语言的策略交易框架,几乎对接了所有我们熟悉的和不熟悉的柜台,包括股票、期货、期权等等各类品种交易。
vn.py客户端程序的结构设计非常清晰明了,接口层包括交易接口、实时行情接口、历史数据接口,均采用同一个接口原型,通过包装实现各种柜台的接入。看了部分实现,代码质量也是很高的,是个非常优秀的开源产品。
CTP接口兼容模拟交易平台之前已经发布了快期的接入方法,虽然都是只换一个dll,改一下交易前置地址,vn.py的操作就容易多了,下面教你一步实现vn.py接入CTP接口兼容模拟交易平台。
到vn.py官网下载vnstudio安装包,安装之后打开安装目录的这个位置:vnstudio\Lib\site-packages\vnpy_ctp\api,将CTP接口兼容模拟交易平台动态库的交易dll(thosttraderapi_se.dll)替换到这个目录,行情动态库不需要换,当然如果非要连tradenow的行情也可以换。
替换vn.py自带的ctp交易dll
就这么简单,只是替换一下动态库,然后就可以启动vnstudio程序,我是用微信登录,登录成功后,在界面下方点击VNTraderLite,这个比较简单点,不需要Pro版有那么多设置。
打开VNTrader之后选择菜单“系统”=>"连接CTP",输入相应的用户及前置地址等,用户填tradenow平台的用户,交易前置填tradenow交易前置地址:tcp://121.36.146.182:20002。
经纪商代码、产品名称、授权编码三项空着也可以,tradenow不检查这些信息,一律放过。设置好点击连接即可见如下效果:
接下来就玩耍吧,vn.py你们比我溜,就不多说明了。tradenow模拟平台是7x24开着的,simnow有很多的时段是不开的,所以如果之前没有更换行情dll,又想测试,可以更换一下行情dll,方法同交易dll,tradenow行情前置的地址是:tcp://121.36.146.182:20004。
关于tradenow的更多信息见github:CTP接口兼容模拟交易平台