from datetime import timedelta from src.analysis.result_analyzer import ResultAnalyzer # 导入 TqsdkEngine,而不是原来的 BacktestEngine from src.indicators.indicators import RSI, HistoricalRange from src.tqsdk_real_engine import TqsdkEngine # 导入你的策略类 from src.strategies.OpenTwoFactorStrategy import SimpleLimitBuyStrategyLong, SimpleLimitBuyStrategyShort, SimpleLimitBuyStrategy from tqsdk import TqApi, TqBacktest, TqAuth, TqKq, TqAccount # --- 配置参数 --- # Tqsdk 的本地数据文件路径,注意 Tqsdk 要求文件名为 KQ_m@交易所_品种名_周期.csv # 主力合约的 symbol main_symbol = "KQ.m@DCE.jm" strategy_parameters = { 'symbol': main_symbol, # 根据您的数据文件中的品种名称调整 'trade_volume': 1, 'lag': 1, # 'range_factor': 1.3, # 示例值,需要通过网格搜索优化 # 'profit_factor': 4.8, # 示例值 # 'range_factor': 1.1, # 示例值,需要通过网格搜索优化 # 'profit_factor': 4.9, # 示例值 'range_factor_l': 1.3, # 示例值,需要通过网格搜索优化 'profit_factor_l': 4.8, # 示例值 'range_factor_s': 1.1, # 示例值,需要通过网格搜索优化 'profit_factor_s': 4.9, # 示例值 'max_position': 10, 'enable_log': True, 'stop_loss_points': 20, 'use_indicator': True, # 'indicator': RSI(5, 63, 95), # 'indicator': RSI(5, 5, 25), 'indicator_l': RSI(5, 63, 95), 'indicator_s': RSI(5, 0, 100), } # 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=SimpleLimitBuyStrategy, strategy_params=strategy_parameters, api=api, symbol=main_symbol, duration_seconds=60 * 60, roll_over_mode=True, # 启用换月模式检测 history_length=50, close_bar_delta=timedelta(minutes=58) ) engine.run() # 这是一个同步方法,内部会运行 asyncio 循环