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交易接口学习的更多相关文章

  1. C# 常用接口学习 ICollection<T>

    C# 常用接口学习 ICollection<T> 作者:乌龙哈里 时间:2015-11-01 平台:Window7 64bit,Visual Studio Community 2015 参 ...

  2. C# 常用接口学习 IComparable 和 IComparer

    C# 常用接口学习 IComparable 和 IComparer 作者:乌龙哈里 时间:2015-11-01 平台:Window7 64bit,Visual Studio Community 201 ...

  3. 工程化编程实战callback接口学习笔记

    一.编译并运行 help.version命令执行正常,但quit命令出错 二.Debug 从命令输入到执行过程: 源代码: 更改后: 运行结果:能正确运行quit命令 Callback接口学习成果: ...

  4. vnpy交易学习接口(2)

    #来源于github下载vnpy版本  20180413 11.多投资标的情况下,该如何修改? 10.stop和limit报单有什么区别呢? 在交易时用得最多的是二类定单,第一类是市价单(Market ...

  5. caffe的python接口学习(1):生成配置文件

    caffe是C++语言写的,可能很多人不太熟悉,因此想用更简单的脚本语言来实现.caffe提供matlab接口和python接口,这两种语言就非常简单,而且非常容易进行可视化,使得学习更加快速,理解更 ...

  6. PHP 开发 APP 接口 学习笔记与总结 - APP 接口实例 [3] 首页 APP 接口开发方案 ② 读取缓存方式

    以静态缓存为例. 修改 file.php line:11 去掉 path 参数(方便),加上缓存时间参数: public function cacheData($k,$v = '',$cacheTim ...

  7. OpenCV(C++接口)学习笔记1-图像读取、显示、保存

    OpenCV在2.0加入版本号之后C++接口函数,学习前C语言的接口功能.现在OpenCV它已被发展到2.4.9版本号,所以,我决定学习C++接口函数,与步伐. 1.创建图像 cv::Mat imag ...

  8. C# 常用接口学习 IEnumerable<T>

    作者:乌龙哈里 时间:2015-10-24 平台:Window7 64bit,Visual Studio Community 2015 本文参考: MSDN IEnumerable<T> ...

  9. java Thread 接口学习

    对于程序员来说 Thread应该都不会陌生,具体的接口调用不是本篇的重点.Thread的基本概念及接口的使用:java多线程 下面将更多的从底层实现角度讲一下Thread. Thread的声明如下: ...

随机推荐

  1. iOS中html打开APP传参

    1.在项目info.plist中添加URL Types以供html调用 2.html代码 <html> <head lang="en"> <meta ...

  2. Vue生命周期 钩子函数和组件传值

    Vue生命周期 钩子函数 每个 Vue 实例在被创建时都要经过一系列的初始化过程——例如,需要设置数据监听.编译模板.将实例挂载到 DOM 并在数据变化时更新 DOM 等. 同时在这个过程中也会运行一 ...

  3. XV6源代码阅读-虚拟内存管理

    Exercise1 源代码阅读 1.内存管理部分: kalloc.c vm.c 以及相关其他文件代码 kalloc.c:char * kalloc(void)负责在需要的时候为用户空间.内核栈.页表页 ...

  4. Ubuntu 更新源 内核升级

    cat /etc/apt/sources.listdeb http://mirrors.sohu.com/ubuntu/ precise main restricted universe multiv ...

  5. 用BusyBox制作Linux最小系统

    1.下载busybox-1.30.1 地址:https://busybox.net/downloads/busybox-1.30.1.tar.bz2 2.解压:tar xvf busybox-1.30 ...

  6. 《新标准C++程序设计》4.5(C++学习笔记15)

    实例:长度可变的整型数组类 int main() { //要编写可变长整型数组类,使之能如下使用: CArray a; //开始里的数组是空的 ; i < ; ++i) a.push_back( ...

  7. 构造方法与setter方法

    上一个随笔提到了constructor-arg子标签,此随笔将会介绍一些类型的赋值方法 ①String类型.基本数据类型或其包装类都可以使用value标签属性赋值 String类型和基本类型的操作如下 ...

  8. class(二)--派生类的继承

    前言 从我之前的一篇笔记对象的继承中, 我们可以知道JS的继承方式依赖原型链,而比较好的继承方式是寄生组合式继承 先来温习下什么是寄生组合式继承 function Rectangle(length, ...

  9. js封装、继承

    封装:http://www.ruanyifeng.com/blog/2010/05/object-oriented_javascript_encapsulation.html 继承:http://ww ...

  10. Docker-harbor-V1.3.0 ”私有仓库“搭建 Easy

    准备: centos     7.0 Docker version 1.12.6    docker-compose version 1.19.0   1: updata-yum:   更新yum 源 ...