河北专业信息门户网站定制,湖南湘潭网站建设,室内设计平面图立面图效果图,福田祥菱m1图片及报价Backtrader 文档学习-Strategy
策略通过方法的形式体现生命周期。 是BackTrader的核心模块#xff0c;需要好好研读。
1.Strategy
#xff08;1#xff09;怀胎 在init中创建indicator和需要的属性值#xff08;2#xff09;出生 start方法#xff0c;策略启动#x…Backtrader 文档学习-Strategy
策略通过方法的形式体现生命周期。 是BackTrader的核心模块需要好好研读。
1.Strategy
1怀胎 在init中创建indicator和需要的属性值2出生 start方法策略启动start默认是空方法3儿童 prenext方法indicator 在init初始化的时候设置了成熟期的时间称为最小周期。上面在 __init__创建了一个周期15的SimpleMovingAverage。4成人 next方法一旦系统生成15个barSMA缓存了足够的用于启动的数据策略就可以真正执行。 nextstart方法执行一次是从prenext切换到next的标志nextstart默认执行是调用next方法。5生育 策略中并没有真正的生育但是从某种意义上来说是存在的因为如果优化用不同的参数的话系统会实例化多次。算是生育吧6死亡 stop方法系统通知策略重启恢复所有设置默认是空方法。
策略就像现实世界中的交易员一样会在事件发生时得到通知。实际上在每一个next循环在回测过程中
通过notify_order(order)获得订单状态变化的通知通过notify_trade(trade)通知所有开仓/更新/平仓交易通过notify_cashvalue(cashvalue)通知在broker中当前现金和投资组合通过notify_fund(cashvaluefundvalueshares)跟踪broker中当前现金和投资组合以及基金价值和份额通过notify_store(msg*args**kwargs)实现特定事件 请参见Cerebro的关于store的说明。event将被传递给策略即使已经被传递给cerebro实例(通过重写notify_store方法或通过回调)
策略像交易者有机会在市场期间通过next方法试图实现获利
buy方法 是做多或减少/平仓空头的头寸sell方法 是做空或减少/平仓多头的头寸close方法 是平仓存在的仓位cancel方法 是取消尚未执行的订单
2. How to Buy/Sell/Close
order常用的方法是Buy和Sell方法。当被调用时它们返回一个订单(或子类)实例作参考。该订单具有唯一的参考标识符可用于对比。
order的参数
data默认:无 必须为其创建订单的数据。如果没有则将使用系统中的第一个数据即self.datas[0]或self.data0也称为self.datasize默认值:无 用于订单的数据单位的大小正值。 如果没有将使用通过getsizer检索的sizer来确定大小。price默认值:无 如要设置的价格实时broker会对其进行限制如果格式不符合最小报价单位要求 None对market订单和close订单是有效市价决定价格 对于limit限价单、stop止损单和stoplimit单该值price决定是否触发在限价单limit的情况下触发点显然是订单应该匹配priceexectype(默认值None) 执行订单的类型 Order.Market or None市价单将以next可用价格执行。回测中next使用第二天的开盘价执行订单。Order.Limit只能以给定价格或更低好价格执行的订单Order.Stop止损价格被触发和订单一样执行。Order.StopLimit以价格触发的订单隐含限价订单执行价格由pricelimit执行理解应该是止损单的止损价格。numeric value: 如果是一个与matplotlib编码中的日期时间相对应的值(backtrader使用的日期时间)就是该数字能转换成正确的日期可以生成一个在该时间(截止日期)之前有效的订单。
如果backtrader直接支持的4种订单执行类型还不够用例如在交互时broker可以将作为kwargs传递:
orderTypeLIT, lmtPrice10.0, auxPrice9.8将重写backtrader创建的设置并生成一个触及限价单触及价格为9.8限价为10.0。
3.Information Bits
策略的长度总是等于主数据(datas[0])的长度可以用len(self) 。 如果正在replay数据或正载入数据并且新tick正在到达相同的时间点调用next而不改变长度 。没有理解
4.Member Attributes
未完待续