@Channelchan
2018-12-04T23:17:27.000000Z
字数 1729
阅读 59677
1.将策略类和调用回测引擎的函数分别编写成脚本格式
2.策略回测绩效报告以及交割单
3.策略说明文档,清晰写明交易逻辑,方便复核
4.SignalCheck:从实盘Log中筛选出交易信号值,方便复核信号的准确性,代码如下
with open("vt_20181023.log","r",encoding="utf-8") as f: ###### 策略输出的日志文件
content = f.readlines()
data = []
for logRow in content:
if logRow.find("CTA_STRATEGY Mas_Strategy:eos_quarter:OKEX_WUon_1min_bar")>=0: ### 从大量日志中找出包含指标值的关键日志
result = logRow.split("CTA_STRATEGY Mas_Strategy:eos_quarter:OKEX_WUon_1min_bar")[-1]
data.append(result)
import pandas as pd
from datetime import datetime
checkDict = {'datetime':[], 'cross':[], 'trend':[], 'wave':[]}
#checkDict = {'datetime':[],'close':[],'cross':[],'trend':[],'wave':[],'n':[]}
for row in data:
dateTime = row[row.find('time')+5:row.find('date')+26]
rigthTime = datetime.strptime(dateTime, "%Y-%m-%d %H:%M:%S")
checkDict['datetime'].append(rigthTime)
#checkBtDict['close'].append(float(row[row.find('close')+6:].split(',')[0]))
checkDict['cross'].append((row[row.find('cross')+6:].split(',')[0]))
checkDict['trend'].append((row[row.find('trend')+6:].split(',')[0]))
checkDict['wave'].append((row[row.find('wave')+5:].split('\n')[0]))
realCheck = pd.DataFrame(checkDict)
realCheckDf = realCheck.set_index('datetime')
realCheckDf.head()
cross | trend | wave | |
---|---|---|---|
datetime | |||
2018-10-23 09:33:00 | 0 | 0 | 0 |
2018-10-23 09:34:00 | 0 | 0 | 0 |
2018-10-23 09:35:00 | 0 | 0 | 0 |
2018-10-23 09:36:00 | 0 | 0 | 0 |
2018-10-23 09:37:00 | 0 | 0 | 0 |
1.MultiATR_Strategy.py为策略脚本
2.CTA_setting.json和OKEX_xxx_connect.json为策略配置文件
3.run.py启动vnpy
4.run_vnpy.py、runCtaTrading.py、uiCryptoWidget、uiCryptoWindow为vnpy的启动设置和界面UI