vnpy交易接口学习
1、按照github中环境准备要求,配置好环境要求。
https://github.com/vnpy/vnpy
mongdb安装在D:\Program Files\MongoDB\Server\3.4 将MongoDB配置为系统服务 http://blog.csdn.net/Tong_T/article/details/78698122
sc.exe create MongoDB binPath= "\"D:\Program Files\MongoDB\Server\3.4\bin\mongod.exe\" --service --config=\"D:\Program Files\MongoDB\mongod.cfg\"" DisplayName= "MongoDB" start= "auto" 电脑配置信息,注意:我电脑是3.6,别人是3.4版本,一点微小差别就导致不成功,一定要细心。
如果自己手动关掉了,可以win+r 运行中输入 services.msc 启动mongodb即可。关掉了MySQL57。可视化工具:robomongo
2、安装完成后将csv数据导入mongo数据库。
运行 E:\vnpy0413\examples\CtaBacktesting\loadCsv.py文件,python2版本注销掉__init__.py文件,ctaHistoryData.py采用绝对引用,修改file,python2和3不一样。
reader = csv.DictReader(open(fileName, 'r',encoding='utf8'))
3、debug runBacktesting.py文件,流程如下:
engine=BacktestingEngine()实例化回测引擎--->
engine.set()参数设置 --->
engine.initStrategy(AtrRsiStrategy,d)策略初始化 --->ctaBacktesting.py initStrategy(self,strategyClass,setting=None)--->strategyAtrRsi.py
self.strategy.onInit()--->self.putEvent() ---->ctaTemplate.py self.ctaEngine.putStrategyEvent(self.name) pass---> self.strategy.onstart() 策略初始化--->
self.putEvent()--->ctaTemplate.py self.ctaEngine.putstrategyEvent(self.name) pass --->
engine.runBacktesting()--->self.runHistoryDataFromMongo()--->host,port,log=loadMongoSetting() --->vtFunction.py 函数 loadMongoSetting()--->
疑问:
7、为什么会有限价字典?
ctaBacktesting.py
def SendOrder(*******):
****
self.workingLimitOrderDict[key]=order
self.limitOrderDict[key]=order
6、停止单是什么意思?为什么会出现?
5、self.symbol self.exchange self.vtSymbol均没有赋值,是故意的还是中间有问题?
4、ctaTemplate.py中buy方法,DIRECTION_LONG、OFFSET_OPEN,参数在哪里?
解答:在language文件下面constant.py文件中。
3、strategyAtrRsi.py中的onInit方法,有self.putEvent(),这个方法是在哪里写的?
解答:继承了父类的ctaTemplate,父类中有putEvent方法。写法分别如下
strategyAtrRsi.py
def onInit(self):
"""初始化策略(必须由用户继承实现)"""
self.writeCtaLog(u'%s策略初始化' %self.name) # 初始化RSI入场阈值
self.rsiBuy = 50 + self.rsiEntry
self.rsiSell = 50 - self.rsiEntry # 载入历史数据,并采用回放计算的方式初始化策略数值
initData = self.loadBar(self.initDays)
for bar in initData:
self.onBar(bar) self.putEvent()
ctaTemplate.py
def putEvent(self):
"""发出策略状态变化事件"""
self.ctaEngine.putStrategyEvent(self.name)
2、ctaEngine在哪里入的参数呢?为什么实例化的时候不需要入参?
ctaBacktesting.py
def initStrategy(self, strategyClass, setting=None):
"""
初始化策略
setting是策略的参数设置,如果使用类中写好的默认设置则可以不传该参数
"""
self.strategy = strategyClass(self, setting)
#为什么没有入ctaEngine的参数呢?
解答:有ctaEngine的参数,就是self,即在初始化策略的时候,把self作为ctaEngine参数传入策略类中,self.strategy作为策略类的实例化对象,也为回测引擎的属性。
每个策略类继承cta策略模板类:ctaTemplate,策略模板类初始化__init__方法的时候传入ctaEngine和setting,策略类初始化也有__init__方法,为了传入策略引擎,需要使用super方法初始化父类(策略模板类)的__init__方法。所有如下写法:
#strategyAtrRsi.py
def __init__(self, ctaEngine, setting):
"""Constructor"""
super().__init__(ctaEngine, setting) ctaTemplate.py
def __init__(self, ctaEngine, setting):
"""Constructor"""
self.ctaEngine = ctaEngine
self.entrust =
self.uncompletedOrders = {}
if setting:
self.writeCtaLog(u'基类设置参数')
d = self.__dict__
for key in self.paramList:
if key in setting:
d[key] = setting[key]
1、vtglobal.py中的 __file__ 是在什么时候赋值的呢?还是说每个py脚本文件都可以这样写?
解答:每个脚本文件都可以这样写,是获得该文件所在位置
print(__file__)
E:/exercise/call.py
vnpy交易接口学习的更多相关文章
- C# 常用接口学习 ICollection<T>
C# 常用接口学习 ICollection<T> 作者:乌龙哈里 时间:2015-11-01 平台:Window7 64bit,Visual Studio Community 2015 参 ...
- C# 常用接口学习 IComparable 和 IComparer
C# 常用接口学习 IComparable 和 IComparer 作者:乌龙哈里 时间:2015-11-01 平台:Window7 64bit,Visual Studio Community 201 ...
- 工程化编程实战callback接口学习笔记
一.编译并运行 help.version命令执行正常,但quit命令出错 二.Debug 从命令输入到执行过程: 源代码: 更改后: 运行结果:能正确运行quit命令 Callback接口学习成果: ...
- vnpy交易学习接口(2)
#来源于github下载vnpy版本 20180413 11.多投资标的情况下,该如何修改? 10.stop和limit报单有什么区别呢? 在交易时用得最多的是二类定单,第一类是市价单(Market ...
- caffe的python接口学习(1):生成配置文件
caffe是C++语言写的,可能很多人不太熟悉,因此想用更简单的脚本语言来实现.caffe提供matlab接口和python接口,这两种语言就非常简单,而且非常容易进行可视化,使得学习更加快速,理解更 ...
- PHP 开发 APP 接口 学习笔记与总结 - APP 接口实例 [3] 首页 APP 接口开发方案 ② 读取缓存方式
以静态缓存为例. 修改 file.php line:11 去掉 path 参数(方便),加上缓存时间参数: public function cacheData($k,$v = '',$cacheTim ...
- OpenCV(C++接口)学习笔记1-图像读取、显示、保存
OpenCV在2.0加入版本号之后C++接口函数,学习前C语言的接口功能.现在OpenCV它已被发展到2.4.9版本号,所以,我决定学习C++接口函数,与步伐. 1.创建图像 cv::Mat imag ...
- C# 常用接口学习 IEnumerable<T>
作者:乌龙哈里 时间:2015-10-24 平台:Window7 64bit,Visual Studio Community 2015 本文参考: MSDN IEnumerable<T> ...
- java Thread 接口学习
对于程序员来说 Thread应该都不会陌生,具体的接口调用不是本篇的重点.Thread的基本概念及接口的使用:java多线程 下面将更多的从底层实现角度讲一下Thread. Thread的声明如下: ...
随机推荐
- python merge、join、concat用法与区别
由于合并变化较大,以后函数可能会修改,只给出一些例子作为参考 总结: merge.join 1.当没有索引时:merge.join为按照一定条件合并 2.当有索引.并按照索引合并时,得到结果为两者混 ...
- 第2节 网站点击流项目(下):3、流量统计分析,分组求topN
四. 模块开发----统计分析 select * from ods_weblog_detail limit 2;+--------------------------+---------------- ...
- 清北学堂模拟赛2 T2 ball
题目大意: 多组数据,每组给定n,m,表示将n个小球放进m个箱子,每个小球均有两个箱子(可能相同)可放,求所有小球均放好的方案mod998244353的总数. 思路: 算是我和题解思路肥肠相近的一道题 ...
- 007、Java中定义int型变量
01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...
- gem5-gpu 全系统FS模式 系统调用SE模式
SE模式中无线程调度器,只能运行单线程程序,如SPEC CPU 2006,仅模拟片上CPU.GPU.Network和DRAM等. FS模式需加载虚拟Linux和磁盘,Linux负责线程调度.实现了Pt ...
- Javascript获取当前鼠标在元素内的坐标定位
代码如下: <!doctype html> <html> <head> <meta charset="utf-8"> <tit ...
- javascript中call与this的初见
call定义 语法:call([thisObj[,arg1[, arg2[, [,.argN]]]]]) 定义:调用一个对象的一个方法,以另一个对象替换当前对象. 说明:call 方法可以用来代替另一 ...
- php中date('Y/m/d',time())显示不对
一. 时间不对是因为没设置时区 在xampp/php/php.ini中ctrl + f 查找date.timezone 该行默认注释,去掉 ; 修改为 date.timezone = PRC 二 上述 ...
- 精简总结redis/rabbitmq/zookeeper在linux centos7上的安装
因为本博主之前已经写过了相关的一些安装及集群,可以参考前面的记录,但是由于博最近更换了VM14和centos7,为了适应这些环境,所以后续会逐渐重新搭建相关环境,并对之前的安装思路进一步精简梳理,以期 ...
- Arduino读取串口数据并进行字符串分割
String comdata = ""; int numdata[6] = {0}, PWMPin[6] = {3, 5, 6, 9, 10, 11}, mark = 0; voi ...