vnpy2.0与simnow搭建简单的量化策略开发环境

刚接触量化的时候,开始研究的是python的package:ctpwrapper调用CTP接口,毕竟自己也擅长Qt和pyQt的开发,但是后来渐渐的发现,个人的力量真的太渺小,于是决定将开发环境转到vnpy上,大神造好的轮子,何苦自己还要再去搞一套?

上网一搜,vnpy居然已经出了2.0版本,还支持64位的python3,立马决定搞定它:

新的vnpy的安装和部署,已经百年的非常的简单了,直接下载VNConda-2.0-Windows-x86_64.exe,以管理员方式运行,一路的确定即可,安装包已经集成了python3.7和所有的依赖包,安装的时候,记得勾选所有的选项。安装完成之后,桌面会显示图标VN Station

 

然后上simnow网站,注册一个账号,然后记下investorid和brokerid,这个在后面vntrader中需要使用

 

双击打开VN Station,会要求填写账户密码,(这个其实可以通过修改代码屏蔽掉,嘿嘿~~~,谁让python源代码开放的),先去https://www.vnpy.com/portal/上注册一个账户,这样,就能顺利的进入vnpy软件

进入软件之后,界面是一个简易的网页浏览器,直接指向了vnpy论坛,没事可以看看最新的信息啥的

然后,点击左下角的VN Trader进入界面,每次进入都会要求你给一个运行目录,其实就是存放你的账户配置的一个文件夹,里面会保存数个json文件,先创建一个空文件夹路径给它

然后会弹出界面,要求选择使用的交易接口和策略,这里我只用CTP

完成选择之后,点击右下角的“启动”,进入vntrader的界面中,

选择右上角的“系统”->“连接CTP”

弹出界面要求填写各种相关信息,这个时候,我们前面注册的simnow的信息,就派上用场啦

userid填写simnow注册的investorid, brokerid照抄,模拟账户都是9999, password填写simnow注册时候的密码就可以,最后两个必须要填写的是td_address和md_address,这两个分别是交易服务器和行情数据源服务器,我一开始一直给我报告非法登录,原因查找了半天,原来就是这两个服务器的地址填写不对导致的。网上查了好久,许多教程都没有讲明白,自己懵懵懂懂的才摸索出来。

所以,这里分享一个直接的解决办法,首先,回到simnow网站上,点击“常用下载”->“点击下载客户端”

选择下载:“快期期货交易终端V2”,并安装

安装完成之后,在软件的登录面板上,选择“代理/测速”,就能看到可用的行情和交易服务器地址了

  • 8
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
【vn.py】CTP首次登陆修改密码 之 接口调用法 c++量化 阅读约 7 分钟 编辑 背景 最近一直在玩vn.py,上一篇文章vn.py开发环境搭建(windows)介绍了如何搭建二次开发环境,解决了一些搭建环境过程中遇到的坑。那么接下来这篇文章将解决运行期间的第一个问题。 开始vn.py 1.环境部署完成之后,启动examples/vn_trader/run.py,弹出启动页面。具体搭建过程参考vn.py开发环境搭建(windows)。 image.png 2。连接CTP,点击系统->连接CTP,弹出连接界面。 image.png 3.介绍一下个字段 用户名:在simnow注册的用户名6位数字 密码:登录simnow使用的密码 经纪商代码:9999 交易服务器地址:180.168.146.187:10101 行情服务器地址:180.168.146.187:10111 产品名称:simnow_client_test 授权码:0000000000000000 16个0 4.获取你的用户名和密码 登录http://www.simnow.com.cn/,从右上角的注册账号开始操作,这里就不讲了,大家自己鼓捣吧。 问题来了 所有准备工作做好后,点击连接,这时左下角会显示日志。 image.png 如果你是第一次登陆,那么会提示CTP首次登陆需要修改密码,这也就是我们今天要解决的问题 试图解决 刚看到这个问题觉得没什么,修改一下密码就可以了,但是。。。。。 首先没有再vn.py上找到可以修改密码的地方,后来想了想,也正常人家只是策略平台,也不仅仅是给CTP用, 所以去注册的地方simnow官网找找吧,但是。。。。 很遗憾仍然没有找到,这里不得不吐槽一下simnow了。是不是应该给个改密码的地方? 据说可以使用市场上的交易应用修改密码,大家可以去试试。或者大家有更好的方法也可以回复留言。 开始撸它 好吧,那么我们用程序员的方式来解决这个问题吧。 1.在vnpy/api/ctp目录下可以看到完整ctp开发的api,包括库和头文件。哈哈,是不是会让你产生非分之想? 2.我们在ThostFtdcTraderApi.h中发现了我们想要的东西 ///用户口令更新请求 virtual int ReqUserPasswordUpdate(CThostFtdcUserPasswordUpdateField *pUserPasswordUpdate, int nRequestID) = 0; 3.找到ctp api文档在simnow官网上可以找到,我这里用的事《综合交易平台TraderAPI接口说明.pdf》 4.开始撸代码吧,我显示在linux开始撸,后来发现我的操作系统编译器版本太低,当然升级版本应该可以解决,但升级gcc,glibc还是相当耗时的。所以后来移植到了windows,但工程还是linux风格,使用cmake构建,好在现在vs对cmake支持的不错。 5.继续撸,先贴一段吧 #include "ctp_trade_handler.h" #include "INIReader.h" #include int main(int argc, char* argv[]) { string a; INIReader reader("../conf/ctp.ini"); if (reader.ParseError() != 0) { std::cout << "Can't load 'test.ini'\n"; return 1; } std::cout << reader.GetInteger("user","BrokerID",9999) << endl; ctp_trade_handle ctp; ctp.CreateFtdcTraderApi(); ctp.RegisterFront("tcp://180.168.146.187:10100"); ctp.init(); //CThostFtdcReqAuthenticateField reqAuthenticate = { 0 }; //strcpy(reqAuthenticate.AppID, "simnow_client_test"); //strcpy(reqAuthenticate.UserID, "158477"); //strcpy(reqAuthenticate.AuthCode, "0000000000000000"); //strcpy(reqAuthenticate.BrokerID, "9999"); //ctp.ReqAuthenticate(&reqAuthenticate, 1); CThostFtdcReqUserLoginField reqUserLogin = { 0 }; strcpy(reqUserLogin.BrokerID,"9999"); strcpy(reqUserLogin.UserID,"158477"); strcpy(reqUserLogin.Password,"qwe123"); ctp.ReqUserLogin(&reqUserLogin, 1); std::cout <> a; CThostFtdcUserPasswordUpdateField reqUserPasswordUpdate = { 0 }; strcpy(reqUserPasswordUpdate.BrokerID, "9999"); strcpy(reqUserPasswordUpdate.UserID, "158477"); strcpy(reqUserPasswordUpdate.OldPassword, "qwe123"); strcpy(reqUserPasswordUpdate.NewPassword, a.c_str()); ctp.ReqUserPasswordUpdate(&reqUserPasswordUpdate, 3); std::cin >> a; ctp.exit(); return 0; } 代码很简单,这里就不多说了。目前只是为了解决我修改密码的需求,后续还会不断完善。 如有需要可以自己取来撸,代码托管地址:https://github.com/FrankXMX/c... 欢迎watch和star 5.使用上就是写好你的相关信息,编译运行,输入新密码。得到屏幕输出。 6.回到vn.py,使用新密码重新连接ctp。 大功告成!!!
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值