蜗牛博客VNPY学习记录:
VN.PY 2.0学习记录一(如何回测)
VN.PY 2.0学习记录二(策略开发)
Vn.py学习记录三(米筐教程)
VN.PY 2.0学习记录四(多线程、多进程)
Vn.py学习记录五–交易时间段及Widgets
Vn.py学习记录六(无界面模拟盘)
Vn.py学习记录七(V2.0.5版本)
Vnpy学习记录八(R-Breaker及pickle)
Vn.py学习记录九(事件驱动引擎)
VN.PY学习记录十(源码概述)
VNPY学习记录11(微信+Vscode)
VNPY学习记录12(父子进程、回调函数)
VNPY学习记录13(部署到云服务器,实现自动交易)
一、关于服务器
2核4G的windows 2012
机器本身是包月便宜,流量选择按量付费
问:想问下linux 的vnpy对机器内存有要求么?
答:4g 至少
本来想搞一台服务器跑的,可是看了一下阿里云最便宜的4G内存服务器都要1800多元,果断放弃,还是先用自己的电脑跑着先吧。
二、关于无界面运行
vn.py发布v2.0.4 时,集成了无界面:https://zhuanlan.zhihu.com/p/69722867
1.下载run.py
下载地址:https://github.com/vnpy/vnpy/tree/master/examples/no_ui
下载后可以放到电脑的任意位置运行。
2.填写账号信息
ctp_setting = { "用户名": "124xxx", "密码": "asxxxx", "经纪商代码": "9999", "交易服务器": "180.168.146.187:10100", "行情服务器": "180.168.146.187:10110", "产品名称": "", "授权编码": "", "产品信息": "" }
这是以前的账号:
180.168.146.187:10000
2.运行run.py
发现运行run.py,它会自动加载strategies目录下面的所有策略,我之前strategies文件夹下面放了几个没写完的策略,结果报错了。
三、定时运行
1.直接使用Windows的计划任务即可,可参考:https://blog.csdn.net/u012849872/article/details/82719372,执行到第五步即可。
添加参数填:C:\Users\Administrator\run.py
起始于填:C:\ProgramData\VNConda\
小知识:
这里需要查询python的安装路径。
import sys sys.path
2.定时启动的界面:
备注:
1.发现启动非常慢,到策略完全启动,差不多需要2分钟的时间。
2.这种方法太粗糙了,只能设定每天、每月运行,无法满足我的需求。
四、判断是否为工作日
http://api.goseek.cn/Tools/holiday?date=20190501
说明在这里:
正常工作日对应结果为 0, 法定节假日对应结果为 1, 节假日调休补班对应的结果为 2,休息日对应结果为 3
代码:
import time import urllib.request import json #获取当前时间 格式20180213 nowTime=time.strftime('%Y%m%d',time.localtime()) date = nowTime #节假日接口 server_url = "http://api.goseek.cn/Tools/holiday?date=" vop_url_request = urllib.request.Request(server_url+date) vop_response = urllib.request.urlopen(vop_url_request) vop_data= json.loads(vop_response.read()) #打印返回的Json串 print (vop_data) if vop_data['data']==0: print ('This day is weekday 1-5') elif vop_data['data']==1: print ('This day is holiday') elif vop_data['data']==2: print ('This day is 节假日调休补班') elif vop_data['data']==3: print ('This day is weekend 6-7') else: print ('Error')
效果展示:
五、APscheduler
1.安装
pip install apscheduler
2.测试
import time from apscheduler.schedulers.blocking import BlockingScheduler def my_job(): print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))) sched = BlockingScheduler() sched.add_job(my_job, 'interval', seconds=5) sched.start()
3.效果
4.修改run.py
将上面的代码嵌入到run.py里面,没想到报错:
run at: 2019-07-07 14:16:00 CST)" raised an exception
发现日期不对,应该是时区的问题。
后来将import time去掉好了,不过到了“子进程启动成功”就不动了。
六、直接运行run.py
好吧,折腾半天,竟然没看run.py的代码,现在一看,发现有判断交易时间的代码,而且会自动关闭子进程,那么一切就简单了。
直接加上工作日的判断,基本满足需求了。
大神好, 我是自学python的小白小师妹, 在vnpy回测过程中也是下载不了历史数据, 有幸能读到大神的文章, 但是从GitHub下载了run.py文件, 发现用不了, 请问是否方便发一份run.py到我的邮箱, 971779728@qq.com 万分感谢 !
你是RQDATA没配置好
一直在看,确实很有用