先推荐一片vnpy专栏教程:
钱塘小甲子:https://blog.csdn.net/qtlyx/column/info/30705
他写的也比较不错
他基本是按照”先深遍历”的思路阅读的,每个代码块追究比较细致,
我个人喜欢先易后难,否则代码太多,看起来容易灰心,先把容易的清理干净,在追溯代码。
vnpy文件夹结构
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| ├── 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个文件(夹)
1 2 3 4 5 6
| trader /vtEngine.py /vtGateway.py /app/
event /eventEngine.py
|
第三步:先从例子入手:
TurtleStrategy下的run的ipy
1 2 3 4 5 6 7 8
| 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数据,跑回测,显示结果