This commit is contained in:
songkunling
2025-08-14 23:17:12 +08:00
parent e8226edd96
commit 2ad610d8fd
23 changed files with 6022 additions and 586 deletions
+18 -55
View File
@@ -5,7 +5,8 @@ INITIAL_CAPITAL = 20000 # 初始资金
SPREAD = 32 # 点差(点数),买卖合起来的总共点差成本
# 时间配置
TIMEFRAME = 1# M1 (1分钟图) - MT5常量值
from mt5_constants import TIMEFRAME_M1
TIMEFRAME = TIMEFRAME_M1 # 1分钟K线 - 使用MT5标准常量
# 回测时间范围 (格式: "YYYY-MM-DD")
# 注意:这些日期需要确保在MT5服务器上有可用数据
@@ -24,14 +25,20 @@ USE_DATE_RANGE = False # 设置为False可强制使用数据量模式
BACKTEST_COUNT = 30000 # 回测数据量
OPTIMIZER_COUNT = 15000 # 优化器数据量
# 性能与调试配置 --- 优化器模式下,需要True 实盘模式下False,可以保证重启程序保持持仓的最大盈利记录,便于计算回撤
# True: 使用内存变量存储持仓峰值数据,优化器模式下更快且能避免文件冲突
# False: 使用 position_peaks.json 文件存储,适合需要持久化的单进程实盘模式
USE_MEMORY_FOR_PEAK_DATA = True
RISK_CONFIG_CONST = {
'enable_time_based_exit': True
}
# 资金分配配置
CAPITAL_ALLOCATION = {
"long_pct": 0.7, # 多头持仓分配资金比例
"short_pct": 0.3, # 空头持仓分配资金比例
"long_pct": 0.5, # 多头持仓分配资金比例
"short_pct": 0.5, # 空头持仓分配资金比例
}
# 模拟交易特定配置 (用于dry_run模式)
@@ -55,8 +62,8 @@ BACKTEST_CONFIG = {
REALTIME_CONFIG = {
"update_interval": 5, # 更新间隔(秒)
"daily_reset_time": "00:00", # 每日重置时间
"max_long_positions": 3, # 最大多头持仓数(增加为3个)
"max_short_positions": 3, # 最大空头持仓数(增加为3个)
"max_long_positions": 1, # 最大多头持仓数(增加为3个)
"max_short_positions": 1, # 最大空头持仓数(增加为3个)
"min_trade_interval": 0, # 最小交易间隔(分钟),0表示无限制
"enable_auto_trading": True, # 是否启用自动交易
"dry_run": False, # 是否为模拟运行(不实际下单)
@@ -106,20 +113,20 @@ GENETIC_OPTIMIZER_CONFIG = {
# 信号阈值配置
SIGNAL_THRESHOLDS = {
"buy_threshold": 1.5, # 买入信号阈值 (优化后)
"sell_threshold": -0.87 # 卖出信号阈值 (优化后)
"sell_threshold": -1.5 # 卖出信号阈值 (优化后)
}
# 风险管理参数
RISK_CONFIG = {
"stop_loss_pct": -0.01, # 固定止损:亏损1% (优化后)
"stop_loss_pct": -0.0005, # 固定止损:亏损0.1% (优化后)
"profit_retracement_pct": 0.1, # 利润回撤10%止盈 (优化后)
"min_profit_for_trailing": 0.01, # 追踪止损激活阈值:利润0.1% (降低阈值以激活追踪止损)
"min_profit_for_trailing": 0.001, # 追踪止损激活阈值:利润0.1% (降低阈值以激活追踪止损)
"take_profit_pct": 0.001, # 固定止盈:盈利0.1% (优化后)
"max_position_size": 1, # 最大仓位100%
"max_daily_loss": -0.3, # 最大日亏损30%
"max_holding_minutes": 140, # 持仓超过140分钟 (优化后)
"min_profit_for_time_exit": 0.01, # 且盈利未达到0.1%则平仓 (优化后)
"min_profit_for_time_exit": 0.001, # 且盈利未达到0.1%则平仓 (优化后)
}
# 市场状态分析参数
@@ -216,7 +223,7 @@ TREND_THRESHOLDS = {
}
# 动态权重配置(经过优化器优化的最佳权重)
# 策略权重配置
DEFAULT_WEIGHTS = {
"ma_cross": 0.44428771408324463,
"rsi": 1.6518277343219148,
@@ -230,50 +237,6 @@ DEFAULT_WEIGHTS = {
"wave_theory": 0.7354173414675755,
}
# 市场状态策略权重配置
MARKET_STATE_WEIGHTS = {
"uptrend": {
"ma_cross": 1.50,
"momentum_breakout": 1.20,
"turtle": 0.25,
"macd": 0.35,
"daily_breakout": 1.50,
"rsi": 1.00,
"bollinger": 1.00,
"kdj": 0.40,
"mean_reversion": 0.80,
"wave_theory": 0.20
},
"downtrend": {
"ma_cross": 1.50,
"momentum_breakout": 1.20,
"turtle": 0.25,
"macd": 0.35,
"daily_breakout": 1.50,
"rsi": 1.00,
"bollinger": 1.00,
"kdj": 0.40,
"mean_reversion": 0.80,
"wave_theory": 0.20
},
"ranging": {
"rsi": 1.60,
"bollinger": 1.70,
"mean_reversion": 1.50,
"kdj": 1.00,
"wave_theory": 0.50,
"ma_cross": 0.70,
"macd": 0.20,
"turtle": 0.10,
"momentum_breakout": 0.50,
"daily_breakout": 0.90
},
"none": DEFAULT_WEIGHTS
}
# 市场趋势置信度阈值配置
CONFIDENCE_THRESHOLDS = {
"high_confidence": 0.941049792261965, # 高置信度阈值
"medium_confidence": 0.8881796011658835, # 中等置信度阈值
}