vn.py量化社区
By Traders, For Traders.
Member
avatar
加入于:
帖子: 77
声望: 0

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

Administrator
avatar
加入于:
帖子: 4033
声望: 221

。。。。。。你把他变成一个类,然后实例化,能有用才怪吧

这里应该封装成一个函数

Member
avatar
加入于:
帖子: 77
声望: 0

脑残了

© 2015-2019 上海韦纳软件科技有限公司
备案服务号:沪ICP备18006526号-3