Home >  > Vn.py学习记录六(无界面模拟盘)

Vn.py学习记录六(无界面模拟盘)

0

一、关于服务器

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的代码,现在一看,发现有判断交易时间的代码,而且会自动关闭子进程,那么一切就简单了。

直接加上工作日的判断,基本满足需求了。

本文暂无标签

发表评论

*

*