先推荐一片vnpy专栏教程:
钱塘小甲子:https://blog.csdn.net/qtlyx/column/info/30705
他写的也比较不错
他基本是按照”先深遍历”的思路阅读的,每个代码块追究比较细致,
我个人喜欢先易后难,否则代码太多,看起来容易灰心,先把容易的清理干净,在追溯代码。
vnpy文件夹结构
├── api #很多dll文件和so文件,结合之前wiki中的说明应该是 各个“外部对接接口”的实现了。飞鼠,数字货币等,可以先不看
│ ├── bigone
│ ├── binance
│ 。。。。。。。
│ ├── xspeed
│ └── xtp
├── data # reademe提示:shcifco:上海中期接口,可先不看
│ ├── __init__.py
│ ├── README.md
│ └── shcifco
├── event
│ ├── eventEngine.py #TODO 重点学习
│ ├── eventType.py #定义变量EVENT_TIMER,以及test()函数
│ └── __init__.py
├── __init__.py
├── __init__.pyc
├── pricing #期权相关,可不看
│ ├── black.py #Black76期权定价
│ ├── bsCython
│ ├── bsCython.pyd
│ ├── bs.py #bs期权定价公式
│ ├── crrCython
│ ├── crrCython.pyd
│ ├── crr.py #期权工具类,二叉树计算价格,计算dot等
│ ├── __init__.py
│ └── README.md
├── rpc #rpc相关工具类,核心无关
│ ├── __init__.py
│ ├── README.md
│ ├── testClient.py
│ ├── testServer.py
│ └── vnrpc.py
└── trader
├── app #TODO 重点学习
├── gateway
├── ico #图标,忽略
├── __init__.py
├── language #中英文的静态变量,显示用
├── uiBasicWidget.py
├── uiMainWindow.py
├── uiQt.py
#以上3个是显示或界面相关的
├── vtConstant.py #和vtText,读入constant.py中变量,到d中
├── vtEngine.py #主引导,TODO 重点学习
├── vtEvent.py #EVENT_TICK,EVENT_TIMER,EVENT_LOG等 EVENT开头的类枚举固定标识串的赋值
├── vtFunction.py #工具类,方法函数,getJsonPath,loadJsonSetting
├── vtGateway.py #TODO 重点学习
├── vtGlobal.py #读取配置文件VT_setting.json
├── vtObject.py #定义实体类,VtBaseData,VtTickData,VtBarData,VtTradeData等
├── VT_setting.json #字体,mongo密码等配置
├── vtText.py #读入text.py的配置文件,存到变量d中
└── vtUtility.py #工具类,class BarGenerator方法updateBar,updateTick。
class ArrayManager方法updateBar,up,down,cci,rsi等技术指标的计算
第一步:先把容易看的代码消灭了,如上
第二步:需要细看的其实就4个文件(夹)
trader /vtEngine.py
/vtGateway.py
/app/
event /eventEngine.py
第三步:先从例子入手:
TurtleStrategy下的run的ipy
from turtleEngine import BacktestingEngine
engine = BacktestingEngine()
engine.setPeriod(datetime(2014, 1, 1), datetime(2018, 12, 30))
engine.initPortfolio('setting.csv', 10000000)
engine.loadData()
engine.runBacktesting()
engine.showResult()
代码比较容易理解
执行流程:
初始变量,load数据,跑回测,显示结果