""" 全局配置 — 交易参数、指标参数、模型参数 """ from pathlib import Path # ============ 路径 ============ PROJECT_ROOT = Path(__file__).parent.parent DB_PATH = PROJECT_ROOT / 'models' / 'database.db' # ============ 交易参数 ============ TRADE_CONFIG = { 'symbol': 'ETHUSDT', 'commission': 0.0006, # 名义手续费 0.06% 'commission_rebate': 0.90, # 90% 返佣(次日 8 点结算),实付 = commission * (1 - rebate) 'slippage': 0.0001, # 滑点 0.01% 'initial_capital': 10000, # 本金 USDT 'leverage': 100, # 杠杆倍数 'position_notional_usd': 500, # 每笔名义 500U(开 100 倍),目标月均收益约 500U 'max_drawdown_limit': 300, # 最大回撤硬约束:权益从峰值回落超过 300U 则不再开新仓 # 兼容旧逻辑(若用比例算仓则用此项) 'position_size': 0.95, } # ============ K线周期 ============ KLINE_PERIODS = { 1: '1m', 3: '3m', 5: '5m', 15: '15m', 30: '30m', 60: '1h', } # 主周期(用于生成信号) PRIMARY_PERIOD = 15 # 15分钟 # 辅助周期(用于多周期融合特征) AUX_PERIODS = [5, 60] # ============ 指标参数 ============ INDICATOR_PARAMS = { # 趋势类 'sma_windows': [5, 10, 20, 50, 200], 'ema_windows': [12, 26], 'macd_fast': 12, 'macd_slow': 26, 'macd_signal': 9, 'adx_window': 14, 'ichimoku_conversion': 9, 'ichimoku_base': 26, 'ichimoku_span_b': 52, 'trix_window': 15, 'aroon_window': 25, 'cci_window': 20, 'dpo_window': 20, 'kst_roc1': 10, 'kst_roc2': 15, 'kst_roc3': 20, 'kst_roc4': 30, 'vortex_window': 14, # 动量类 'rsi_window': 14, 'stoch_window': 14, 'stoch_smooth': 3, 'williams_window': 14, 'roc_window': 12, 'mfi_window': 14, 'tsi_slow': 25, 'tsi_fast': 13, 'uo_short': 7, 'uo_medium': 14, 'uo_long': 28, 'ao_short': 5, 'ao_long': 34, 'kama_window': 10, 'ppo_slow': 26, 'ppo_fast': 12, 'stoch_rsi_window': 14, 'stoch_rsi_smooth': 3, # 波动率类 'bb_window': 20, 'bb_std': 2, 'atr_window': 14, 'kc_window': 20, 'dc_window': 20, # 成交量类(部分指标需要volume,K线数据可能无volume则跳过) 'obv_enabled': True, 'cmf_window': 20, 'emv_window': 14, 'fi_window': 13, } # ============ 特征工程参数 ============ FEATURE_CONFIG = { 'label_forward_periods': 10, # 未来N根K线用于生成标签 'label_threshold': 0.002, # 涨跌阈值(0.2%以内算震荡) 'lookback_lags': [1, 3, 5], # 滞后特征的lag值 'normalize': True, # 是否标准化 } # ============ 模型参数 ============ MODEL_CONFIG = { 'walk_forward_train_size': 20000, # Walk-Forward 训练窗口大小 'walk_forward_test_size': 2000, # Walk-Forward 测试窗口大小 'walk_forward_step': 2000, # 滚动步长 'warm_up_months': 12, # 指定回测区间时向前加载的月数,使区间首月即有预测 'lightgbm': { 'n_estimators': 300, 'max_depth': 4, 'learning_rate': 0.03, 'num_leaves': 15, 'min_child_samples': 50, 'subsample': 0.7, 'colsample_bytree': 0.6, 'reg_alpha': 1.0, 'reg_lambda': 1.0, 'objective': 'multiclass', 'num_class': 3, 'verbose': -1, }, 'xgboost': { 'n_estimators': 300, 'max_depth': 4, 'learning_rate': 0.03, 'subsample': 0.7, 'colsample_bytree': 0.6, 'reg_alpha': 1.0, 'reg_lambda': 1.0, 'objective': 'multi:softprob', 'num_class': 3, 'verbosity': 0, }, } # ============ 统计筛选参数 ============ STAT_CONFIG = { 'top_n_features': 15, # 筛选Top N个指标 'correlation_threshold': 0.9, # 去除高相关特征的阈值 'grid_search_cv': 3, # 网格搜索交叉验证折数 } # ============ 信号标签映射 ============ SIGNAL_MAP = { 0: '观望', 1: '做多', 2: '做空', }