rt
rt
def init(self, cta_engine, strategy_name, vt_symbol, setting):
""" 初始化策略 """
super().init(cta_engine, strategy_name, vt_symbol, setting)
self.bg = BarGenerator(self.on_bar)
#self.bg = BarGenerator(self.on_bar,window=5,on_window_bar=self.on_5min_bar)
self.am = ArrayManager(1000)
def on_init(self):
self.write_log("策略初始化")
self.load_bar(20)
def on_start(self):
self.write_log("策略启动")
self.put_event()
def on_stop(self):
self.write_log("策略停止")
self.put_event()
def on_tick(self, tick: TickData):
self.bg.update_tick(tick)
self.bid_price = tick.bid_price_2
self.ask_price = tick.ask_price_2
'''
def on_bar(self, bar: BarData):
self.bg.update_bar(bar)'''
def on_bar(self, bar: BarData):
self.cancel_all()
am = self.am
am.update_bar(bar)
if not am.inited:
return
self.normalize_pos()
# 计算均线
fast_ma = am.sma(self.fast_window,array=True)
self.fast_ma0 = fast_ma[-1]
self.fast_ma1 = fast_ma[-2]
slow_ma = am.sma(self.slow_window,array=True)
self.slow_ma0 = slow_ma[-1]
self.slow_ma1 = slow_ma[-2]
# 计算ATR
self.atr_value = am.atr(self.atr_length)
ATR(真实波幅均值)的计算结果在 VeighNa(使用 TA-Lib)和 TradingView 上出现较大差异,通常由以下原因导致:
差异通常源于 数据源、计算公式或参数设置 的不同。建议优先对比原始数据,再逐步验证计算逻辑。若仍无法解决,可联系平台确认具体实现细节。