initial-import: 2026-04-11 21:18:55
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
from vnpy_ctastrategy import (
|
||||
CtaTemplate,
|
||||
StopOrder,
|
||||
TickData,
|
||||
BarData,
|
||||
TradeData,
|
||||
OrderData,
|
||||
BarGenerator,
|
||||
ArrayManager,
|
||||
)
|
||||
|
||||
class SimpleTestStrategy(CtaTemplate):
|
||||
"""最简单的测试策略,用于排查回测API问题"""
|
||||
|
||||
author = "姜维"
|
||||
|
||||
# 策略参数
|
||||
fast_window = 5
|
||||
slow_window = 20
|
||||
|
||||
# 策略变量
|
||||
fast_ma = 0
|
||||
slow_ma = 0
|
||||
|
||||
parameters = ["fast_window", "slow_window"]
|
||||
variables = ["fast_ma", "slow_ma"]
|
||||
|
||||
def __init__(self, cta_engine, strategy_name, vt_symbol, setting):
|
||||
"""初始化策略"""
|
||||
super().__init__(cta_engine, strategy_name, vt_symbol, setting)
|
||||
|
||||
# 创建K线合成器
|
||||
self.bg = BarGenerator(self.on_bar)
|
||||
# 创建数组管理器
|
||||
self.am = ArrayManager()
|
||||
|
||||
def on_init(self):
|
||||
"""策略初始化"""
|
||||
self.write_log("策略初始化")
|
||||
# 预加载10根K线
|
||||
self.load_bar(10)
|
||||
|
||||
def on_start(self):
|
||||
"""策略启动"""
|
||||
self.write_log("策略启动")
|
||||
|
||||
def on_stop(self):
|
||||
"""策略停止"""
|
||||
self.write_log("策略停止")
|
||||
|
||||
def on_tick(self, tick: TickData):
|
||||
"""Tick推送"""
|
||||
self.bg.update_tick(tick)
|
||||
|
||||
def on_bar(self, bar: BarData):
|
||||
"""K线推送"""
|
||||
# 更新数组
|
||||
self.am.update_bar(bar)
|
||||
if not self.am.inited:
|
||||
return
|
||||
|
||||
# 计算指标
|
||||
self.fast_ma = self.am.sma(self.fast_window)
|
||||
self.slow_ma = self.am.sma(self.slow_window)
|
||||
|
||||
# 简单交易逻辑
|
||||
if self.fast_ma > self.slow_ma and not self.pos:
|
||||
self.buy(bar.close_price, 1)
|
||||
elif self.fast_ma < self.slow_ma and self.pos > 0:
|
||||
self.sell(bar.close_price, 1)
|
||||
Reference in New Issue
Block a user