Files
jyx_code4/strategy/config.py

156 lines
4.5 KiB
Python
Raw Normal View History

2026-02-20 20:57:25 +08:00
"""
全局配置 交易参数指标参数模型参数
"""
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分钟
2026-02-21 14:46:34 +08:00
# 辅助周期(用于多周期融合特征);加入 1m 可捕捉 15m 内短时冲高回落,减少“涨到一半又跌止损”
AUX_PERIODS = [1, 5, 60]
2026-02-20 20:57:25 +08:00
# ============ 指标参数 ============
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,
# 成交量类部分指标需要volumeK线数据可能无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,
},
2026-02-21 15:20:33 +08:00
# 实盘信号置信度阈值get_live_signal
'confidence_threshold': 0.45, # 观望/做多/做空 通用下限,低于则输出观望
'confidence_threshold_short': None, # 若设置(如 0.40),做空时用此阈值,便于多出做空信号
2026-02-20 20:57:25 +08:00
}
# ============ 统计筛选参数 ============
STAT_CONFIG = {
'top_n_features': 15, # 筛选Top N个指标
'correlation_threshold': 0.9, # 去除高相关特征的阈值
'grid_search_cv': 3, # 网格搜索交叉验证折数
}
# ============ 信号标签映射 ============
SIGNAL_MAP = {
0: '观望',
1: '做多',
2: '做空',
}