本文共 1953 字,大约阅读时间需要 6 分钟。
先推荐一片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的ipyfrom 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数据,跑回测,显示结果