from vnpy_ctastrategy import (
CtaTemplate,
StopOrder,
TickData,
BarData,
TradeData,
OrderData,
BarGenerator,
ArrayManager,
)
class QSJL(CtaTemplate):
""""""
author = "天才交易员"
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.am = ArrayManager()
def on_init(self):
"""
Callback when strategy is inited.
"""
self.write_log("策略初始化")
self.load_bar(10)
def on_start(self):
"""
Callback when strategy is started.
"""
self.write_log("策略启动")
self.put_event()
def on_stop(self):
"""
Callback when strategy is stopped.
"""
self.write_log("策略停止")
self.put_event()
def on_tick(self, tick: TickData):
"""
Callback of new tick data update.
"""
self.bg.update_tick(tick)
def on_bar(self, bar: BarData):
"""
Callback of new bar data update.
"""
#self.cancel_all()
am = self.am
am.update_bar(bar)
if not am.inited:
return
# 计算历史收盘价
if len(am.close) < 10: # 确保有足够的历史数据
return
#ZZ = am.ema(3,array=True)
ZXX_values0 = (bar.close_price + 0.618 * am.close[-2] + 0.382 * am.close[-3] + 0.236 * am.close[-4] + 0.146 * am.close[-5]) / 2.382
ZXX_values1 = (bar.close_price+ 0.618 * am.close[-3] + 0.382 * am.close[-4] + 0.236 * am.close[-5] + 0.146 * am.close[-6]) / 2.382
self.ZXX0 = ZXX_values0
self.ZXX1 = ZXX_values1
#参考线:EMA(重心线,4);
CKX = am.ema(self.ZXX0, 4)
self.CKX0 = CKX[-1]
self.CKX1 = CKX[-2]
cross_over = self.ZXX0 > self.CKX0 and self.ZXX1 < self.CKX1
cross_below = self.CKX0 > self.ZXX0 and self.CKX1 < self.ZXX1
if cross_over:
if self.pos == 0:
self.buy(bar.close_price, 1)
elif self.pos < 0:
self.cover(bar.close_price, 1)
self.buy(bar.close_price, 1)
elif cross_below:
if self.pos == 0:
self.short(bar.close_price, 1)
elif self.pos > 0:
self.sell(bar.close_price, 1)
self.short(bar.close_price, 1)
self.put_event()
def on_order(self, order: OrderData):
"""
Callback of new order data update.
"""
pass
def on_trade(self, trade: TradeData):
"""
Callback of new trade data update.
"""
self.put_event()
def on_stop_order(self, stop_order: StopOrder):
"""
Callback of stop order update.
"""
pass
哪位大佬能帮我看看我的策略为啥回测一直没结果,谢谢大佬