encoding:utf-8
from future import division
from vnpy.trader.app.ctaStrategy.ctaBacktesting import BacktestingEngine, MINUTE_DB_NAME, OptimizationSetting
class Backtesting(object):
"""回测优化模块"""
from vnpy.trader.app.ctaStrategy.strategy.strategy1minDoubleMA import DoubleMa1Strategy
# 创建回测引擎
engine = BacktestingEngine()
# 设置引擎的回测模式为K线
engine.setBacktestingMode(engine.BAR_MODE)
print 'a'
# 设置回测用的数据起始日期
engine.setStartDate('20150101')
engine.setSlippage(1) # 设置滑点为1跳
engine.setRate(1 / 10000) # 设置手续费万1
engine.setSize(1) # 设置合约大小
engine.setPriceTick(1) # 设置最小价格变动
engine.setCapital(1000000) # 设置回测本金
# # 设置产品相关参数
# engine.setSlippage(0.2) # 股指1跳
# engine.setRate(0.3/10000) # 万0.3
# engine.setSize(300) # 股指合约大小
# engine.setPriceTick(0.2) # 股指最小价格变动
# 设置使用的历史数据库
engine.setDatabase(MINUTE_DB_NAME, 'rb0000')
# 跑优化
setting = OptimizationSetting() # 新建一个优化任务设置对象
setting.setOptimizeTarget('endBalance') # 设置优化排序的目标是策略净盈利
setting.addParameter('fastWindow', 2, 20, 10) # 增加第一个优化参数atrLength,起始12,结束20,步进2
setting.addParameter('slowWindow', 5, 30, 10) # 增加第二个优化参数atrMa,起始20,结束30,步进5
# setting.addParameter('rsiLength', 5) # 增加一个固定数值的参数
# 性能测试环境:I7-3770,主频3.4G, 8核心,内存16G,Windows 7 专业版
# 测试时还跑着一堆其他的程序,性能仅供参考
import time
start = time.time()
# 运行单进程优化函数,自动输出结果,耗时:359秒
# engine.runOptimization(AtrRsiStrategy, setting)
# 多进程优化,耗时:89秒
result = engine.runParallelOptimization(DoubleMa1Strategy, setting)
engine.outputOptimizeResult(result)
# print(fastwindow, slowwindow)
print(u'耗时:%s' % (time.time() - start))
a = Backtesting()
我把example 下的c t a回测runOptimization.py这个文件,复制重新写了一下,在trade 里strategy里,为啥在里面调用一点反应没有,我本来想在策略里调用,方便策略内部随时调用调整参数,用的是Mac电脑的1.9。2