打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
backtrader策略参数大规模优化
userphoto

2022.05.10 浙江省

关注
# example of optimizing SMA crossover strategy parameters using # Particle Swarm Optimization in the opptunity python library # https://github.com/claesenm/optunity from datetime import datetime import backtrader as bt import optunity import optunity.metrics class SmaCross(bt.SignalStrategy): params = ( ('sma1', 10), # 需要优化的参数1,短期均线窗口 ('sma2', 30), # 需要优化的参数2,长期均线窗口 ) def __init__(self): SMA1 = bt.ind.SMA(period=int(self.params.sma1)) # 用int取整 SMA2 = bt.ind.SMA(period=int(self.params.sma2)) # 用int取整 crossover = bt.ind.CrossOver(SMA1, SMA2) self.signal_add(bt.SIGNAL_LONG, crossover) data0 = bt.feeds.YahooFinanceData(dataname='YHOO', fromdate=datetime(2011, 1, 1), todate=datetime(2012, 12, 31)) def runstrat(sma1,sma2): cerebro = bt.Cerebro() cerebro.addstrategy(SmaCross, sma1=sma1, sma2=sma2) cerebro.adddata(data0) cerebro.run() return cerebro.broker.getvalue() # 执行优化,执行100次回测(num_evals),设置两个参数的取值范围 opt = optunity.maximize(runstrat, num_evals=100,solver_name='particle swarm', sma1=[2, 55], sma2=[2, 55]) optimal_pars, details, _ = opt print('Optimal Parameters:') print('sma1 = %.2f' % optimal_pars['sma1']) print('sma2 = %.2f' % optimal_pars['sma2']) cerebro = bt.Cerebro() cerebro.addstrategy(SmaCross, sma1=optimal_pars['sma1'], sma2=optimal_pars['sma2']) cerebro.adddata(data0) cerebro.run() cerebro.plot()
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Backtrader量化平台教程(七)Optimizer
backtrader量化回测框架入门与参数调优
「手把手教你」入门量化回测最强神器backtrader(三)
Backtrader量化平台教程(五)Signal
backtrader:基于信号的策略开发及参数优化
Backtrader库 | 均线买入卖出策略实现
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服