from vnpy_ctastrategy import (CtaTemplate,StopOrder,TickData,BarData,TradeData,OrderData,BarGenerator,ArrayManager)
class DemoStrategy(CtaTemplate):
fast_window =10
slow_window =20
fast_ma0 = 0
slow_ma0 = 0
fast_ma1 = 0
slow_ma1 = 0
parameters = ["fast_window", "slow_window"]
variables = ["fast_ma0","slow_ma0","fast_ma1","slow_ma1"]
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):
self.write_log("策略初始化")
self.load_bar(10)
def on_start(self):
self.write_log("策略启动")
self.put_event()
def on_tick(self, tick: TickData):
self.bg.update_tick(tick)
def on_bar(self, bar: BarData):
am=self.am
if not am.inited:
return
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]
cross_over=(self.fast_ma0>self.slow_ma0 and self.fast_ma1<self.slow_ma1)
cross_below=(self.slow_ma0>self.fast_ma0 and self.fast_ma1>self.slow_ma1)
if cross_over:
price=bar.close_price+5
if self.pos==0:
self.buy(price,1)
elif self.pos<0:
self.cover(price,1)
self.buy(price,1)
elif cross_below:
price = bar.close_price - 5
if self.pos == 0:
self.short(price, 1)
elif self.pos > 0:
self.sell(price, 1)
self.short(price, 1)
self.put_event()
def on_order(self, order: OrderData):
pass
def on_trade(self, trade: TradeData):
self.put_event()
def on_stop_order(self, stop_order: StopOrder):
pass
def on_stop(self):
self.write_log("策略停止")
self.put_event()
这是我写的代码,运行的时候没有任何报错,却没有产生任何交易记录
崩溃,研究好多天了,都没搞懂