2025-07-10 15:07:31 +08:00
|
|
|
|
from datetime import timedelta
|
|
|
|
|
|
from src.analysis.result_analyzer import ResultAnalyzer
|
|
|
|
|
|
|
|
|
|
|
|
# 导入 TqsdkEngine,而不是原来的 BacktestEngine
|
2025-07-15 22:45:51 +08:00
|
|
|
|
from src.indicators.indicators import RSI, HistoricalRange
|
2025-07-10 15:07:31 +08:00
|
|
|
|
from src.tqsdk_real_engine import TqsdkEngine
|
|
|
|
|
|
|
|
|
|
|
|
# 导入你的策略类
|
|
|
|
|
|
from src.strategies.OpenTwoFactorStrategy import SimpleLimitBuyStrategyLong, SimpleLimitBuyStrategyShort, SimpleLimitBuyStrategy
|
|
|
|
|
|
|
|
|
|
|
|
from tqsdk import TqApi, TqBacktest, TqAuth, TqKq
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# --- 配置参数 ---
|
|
|
|
|
|
# Tqsdk 的本地数据文件路径,注意 Tqsdk 要求文件名为 KQ_m@交易所_品种名_周期.csv
|
|
|
|
|
|
# 例如: KQ_m@SHFE_rb_min60.csv
|
|
|
|
|
|
initial_capital = 100000.0
|
|
|
|
|
|
slippage_rate = 0.000 # 在 Tqsdk 模拟中,滑点通常由 TqSim 处理或在策略中手动模拟
|
|
|
|
|
|
commission_rate = 0.0001 # 同上
|
|
|
|
|
|
# 主力合约的 symbol
|
2025-07-15 22:45:51 +08:00
|
|
|
|
main_symbol = "KQ.m@DCE.jm"
|
2025-07-10 15:07:31 +08:00
|
|
|
|
strategy_parameters = {
|
|
|
|
|
|
'symbol': main_symbol, # 根据您的数据文件中的品种名称调整
|
|
|
|
|
|
'trade_volume': 1,
|
2025-07-15 22:45:51 +08:00
|
|
|
|
'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, # 示例值
|
2025-07-10 15:07:31 +08:00
|
|
|
|
'max_position': 10,
|
|
|
|
|
|
'enable_log': True,
|
|
|
|
|
|
'stop_loss_points': 20,
|
2025-07-15 22:45:51 +08:00
|
|
|
|
'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),
|
2025-07-10 15:07:31 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
api = TqApi(TqKq(), auth=TqAuth("emanresu", "dfgvfgdfgg"))
|
|
|
|
|
|
# --- 1. 初始化回测引擎并运行 ---
|
|
|
|
|
|
print("\n初始化 Tqsdk 回测引擎...")
|
|
|
|
|
|
engine = TqsdkEngine(
|
2025-07-15 22:45:51 +08:00
|
|
|
|
strategy_class=SimpleLimitBuyStrategy,
|
2025-07-10 15:07:31 +08:00
|
|
|
|
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 循环
|