from datetime import timedelta from futures_trading_strategies.FG.TrendlineBreakoutStrategy.DualModeTrendlineHawkesStrategy2 import \ DualModeTrendlineHawkesStrategy from src.analysis.result_analyzer import ResultAnalyzer # 导入 TqsdkEngine,而不是原来的 BacktestEngine from src.indicators.indicators import RSI, HistoricalRange, BollingerBandwidth, NormalizedATR, ADX from src.tqsdk_real_engine import TqsdkEngine # 导入你的策略类 from tqsdk import TqApi, TqBacktest, TqAuth, TqKq, TqAccount # --- 配置参数 --- # Tqsdk 的本地数据文件路径,注意 Tqsdk 要求文件名为 KQ_m@交易所_品种名_周期.csv # 主力合约的 symbol symbol = "KQ.m@CZCE.FG" strategy_parameters = { 'main_symbol': 'FG', # <-- 替换为你的交易品种代码,例如 'GC=F' (黄金期货), 'ZC=F' (玉米期货) 'trade_volume': 2, # 'indicators': [RateOfChange(10, -2.1, -0.5), ROC_MA(10, 10, -2.7, -0.4)], 'enable_log': True, 'trend_params': { "trendline_n": 10, "hawkes_kappa": 0.9, }, 'reversion_params': { "trendline_n": 70, "hawkes_kappa": 0.1, }, 'conflict_resolution': 'NONE' } # api = TqApi(TqKq(), auth=TqAuth("emanresu", "dfgvfgdfgg")) api = TqApi(TqAccount('H宏源期货', '903308830', 'lzr520102'), auth=TqAuth("emanresu", "dfgvfgdfgg")) # --- 1. 初始化回测引擎并运行 --- print("\n初始化 Tqsdk 回测引擎...") engine = TqsdkEngine( strategy_class=DualModeTrendlineHawkesStrategy, strategy_params=strategy_parameters, api=api, symbol=symbol, duration_seconds=60 * 15, roll_over_mode=True, # 启用换月模式检测 history_length=1000, close_bar_delta=timedelta(minutes=58) ) engine.run() # 这是一个同步方法,内部会运行 asyncio 循环