Files
jyx_code4/strategy/config.py
2026-02-21 14:46:34 +08:00

152 lines
4.2 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""
全局配置 — 交易参数、指标参数、模型参数
"""
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分钟
# 辅助周期(用于多周期融合特征);加入 1m 可捕捉 15m 内短时冲高回落,减少“涨到一半又跌止损”
AUX_PERIODS = [1, 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,
# 成交量类部分指标需要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,
},
}
# ============ 统计筛选参数 ============
STAT_CONFIG = {
'top_n_features': 15, # 筛选Top N个指标
'correlation_threshold': 0.9, # 去除高相关特征的阈值
'grid_search_cv': 3, # 网格搜索交叉验证折数
}
# ============ 信号标签映射 ============
SIGNAL_MAP = {
0: '观望',
1: '做多',
2: '做空',
}