# klines **Repository Path**: aming0502/klines ## Basic Information - **Project Name**: klines - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-14 - **Last Updated**: 2026-05-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # KDJ-STD 收敛突破策略 — 回测报告 ## 一、策略逻辑 ``` 时间框架: 15分钟K线(5分钟数据重采样) 入场条件: KDJ-STD < 0.5 (K/D/J三线高度收敛) 做多: D < 25 且 价格 > MA50(日线) 且 K向上穿越D 做空: D > 75 且 价格 < MA50(日线) 且 K向下穿越D 出场条件: 移动止盈 / 移动止损 仓位管理: 半仓 (50%) 手续费: 万分之5 ``` - KDJ-STD = K/D/J 三值的标准差,越低说明三线越收敛 - KDJ收敛代表市场短期的分歧缩小,之后可能选择方向突破 - K穿越D确认:收敛后等K线实际穿越D线再入场,避免在收敛最不确定时点入场 - MA50(日线) 用于过滤趋势方向,避免逆势交易 ## 二、参数优化历程 ### 2.1 初始参数寻找 | 数据周期 | 最优参数 | 收益 | 回撤 | 收撤比 | |:---:|:---:|:---:|:---:|:---:| | 1个月 | TP=4% SL=2% 半仓 | +12.10% | 8.75% | 1.38 | | 3个月 | TP=9% SL=5% 半仓 | +7.48% | 18.14% | 0.41 | | 6个月 | TP=9% SL=5% 半仓 | +26.63% | 18.43% | 1.45 | | 12个月 | TP=9% SL=4% 半仓 | +32.04% | 17.93% | 1.79 | ### 2.2 加入MA50趋势过滤 MA50日线过滤:做多需 close > MA50,做空需 close < MA50 | 数据周期 | 参数 | 收益 | 回撤 | 收撤比 | |:---:|:---:|:---:|:---:|:---:| | 全程 | TP=12% SL=4% 半仓 MA50 | +72.13% | 25.96% | **2.78** | 趋势过滤大幅提升了全程数据表现,尤其避免了2024-2025年下跌期的逆势做多亏损。 ### 2.3 加入K交叉确认 再收敛点入场改为等K线穿越D线后入场,过滤假突破: | 品种 | 过滤前 r/dd | K交叉后 r/dd | 过滤前 DD | K交叉后 DD | |:---:|:---:|:---:|:---:|:---:| | COTIUSDT | 1.17 | **2.64** | 26.52% | **13.90%** | | XRPUSDT | -0.83 | **0.95** | 32.81% | **13.37%** | | SPELLUSDT | -0.67 | **-0.29** | 53.94% | **26.60%** | K交叉确认不增加有效品种数(仍为3/9),但显著降低回撤、提升信号质量。 ### 2.4 最终参数 ``` 止盈 (TP): 12% 止损 (SL): 4% 仓位: 50% (半仓) 趋势过滤: MA50 日线 (做多需close>MA50, 做空需close75(空) 手续费: 万分之5 (开平各收一次) ``` ## 三、多品种测试结果 ### 3.1 最终参数 9品种对比 | 品种 | 交易 | 胜率 | 收益 | 回撤 | 收撤比 | 盈利月 | |:---:|:---:|:---:|:---:|:---:|:---:|:---:| | **INJUSDT** | 164 | 46.3% | **+49.66%** | **21.14%** | **2.35** | — | | **COTIUSDT** | 179 | 41.3% | **+36.78%** | **13.90%** | **2.64** | — | | **IOTAUSDT** | 172 | 42.4% | **+32.53%** | **20.27%** | **1.60** | — | | XRPUSDT | 113 | 38.9% | +12.63% | 13.37% | 0.95 | — | | BTCUSDT | 20 | 30.0% | -6.16% | 9.47% | -0.65 | — | | STORJUSDT | 172 | 32.6% | -30.63% | 36.27% | -0.84 | — | | ETCUSDT | 155 | 34.2% | -31.17% | 38.46% | -0.81 | — | | DUSKUSDT | 178 | 35.4% | -22.82% | 31.85% | -0.72 | — | | SPELLUSDT | 144 | 38.2% | -7.71% | 26.60% | -0.29 | — | **有效品种 (收撤比 > 1): 3/9 = 33%** ### 3.2 有效品种特征 - 中等市值(非大蓝筹,非土狗) - 波动率适中 - 有完整的牛熊周期 - KDJ收敛后能真正走出趋势行情 ## 四、其他策略尝试 ### 4.1 成交量过滤 - 入场时要求 volume > MA20 - 结果:交易量骤减(从~350降至~20),收益消失,有效降至 1/9 ### 4.2 ATR动态止损 - 用 3x ATR(14) 替代固定4%止损 - 结果:全品种亏损,有效 0/9 ### 4.3 Bollinger Band Squeeze (替代KDJ-STD) - BB宽度 < 20%百分位视为收敛 - 结果:有效 2/9,不及KDJ-STD ### 4.4 EMA交叉趋势跟踪 - EMA12/26 交叉入场 + ATR通道止损 - 结果:全灭 0/9,15分钟级别噪音太大 ### 4.5 XGBoost机器学习 - 特征:KDJ/BB/RSI/MACD/ATR/ADX/价格回报等20个指标 - 训练:在INJUSDT上训练,预测未来3小时涨跌 - 结果:有效 0/9(模型学到的大多是"不交易",预测准确率虽高但无交易价值) **ML在金融时序上的核心问题:** - 信噪比极低,模型容易学到噪声而非规律 - 样本极度不平衡(涨跌明确的K线很少) - 跨品种泛化困难,INJ上学的规律不适用于STORJ/SPELL ### 总结 KDJ-STD 收敛突破策略在9个测试品种中仅有 **INJUSDT、IOTAUSDT、COTIUSDT** 三个有效(33%)。其他策略(趋势跟踪、BB Squeeze、ML、成交量过滤、ATR止损)均未改善普适性。建议仅在这3个品种上实盘,不强行追求跨品种普适性。 **手工策略优于ML的一个重要启示:** 金融时序数据中,嵌入人类交易经验的简单规则(收敛→突破)往往比数据驱动的模型更鲁棒,因为交易规律来自市场参与者的行为模式,而非统计相关性。 ## 五、完整月度表现 (INJUSDT 全程数据 TP12/SL4 MA50) | 月份 | 交易 | 胜率 | 月收益 | 月末资产 | 累计 | |:---:|:---:|:---:|:---:|:---:|:---:| | 2024-02 | 14 | 42.9% | -3.42% | 9658 | -3.4% | | 2024-03 | 22 | 27.3% | -0.89% | 9572 | -4.3% | | 2024-04 | 14 | 71.4% | +13.37% | 10852 | +8.5% | | 2024-05 | 14 | 28.6% | -4.59% | 10353 | +3.5% | | 2024-06 | 11 | 27.3% | +1.24% | 10482 | +4.8% | | 2024-07 | 15 | 40.0% | +0.53% | 10538 | +5.4% | | 2024-08 | 13 | 53.8% | +5.42% | 11108 | +11.1% | | 2024-09 | 12 | 50.0% | -2.08% | 10877 | +8.8% | | 2024-10 | 9 | 44.4% | +3.72% | 11281 | +12.8% | | 2024-11 | 11 | 45.5% | -0.48% | 11227 | +12.3% | | 2024-12 | 11 | 36.4% | -3.48% | 10836 | +8.4% | | 2025-01 | 18 | 27.8% | -1.19% | 10707 | +7.1% | | 2025-02 | 14 | 42.9% | +7.14% | 11472 | +14.7% | | 2025-03 | 14 | 35.7% | +1.00% | 11586 | +15.9% | | 2025-04 | 15 | 20.0% | -12.03% | 10192 | +1.9% | | 2025-05 | 16 | 12.5% | -11.64% | 9006 | -9.9% | | 2025-06 | 13 | 38.5% | +4.49% | 9410 | -5.9% | | 2025-07 | 12 | 50.0% | +11.73% | 10514 | +5.1% | | 2025-08 | 15 | 26.7% | +5.18% | 11058 | +10.6% | | 2025-09 | 9 | 44.4% | -3.32% | 10692 | +6.9% | | 2025-10 | 11 | 63.6% | +13.74% | 12161 | +21.6% | | 2025-11 | 11 | 45.5% | -1.55% | 11973 | +19.7% | | 2025-12 | 10 | 60.0% | +11.95% | 13403 | +34.0% | | 2026-01 | 10 | 40.0% | +4.87% | 14056 | +40.6% | | 2026-02 | 14 | 57.1% | +7.35% | 15089 | +50.9% | | 2026-03 | 8 | 37.5% | -3.05% | 14628 | +46.3% | | 2026-04 | 10 | 50.0% | +5.48% | 15430 | +54.3% | | 2026-05 | 6 | 66.7% | +11.56% | 17213 | +72.1% | **盈利月**: 16/28 = 57% ## 六、数据库信号策略(最终方案) 基于 `t_job` 系统的开仓信号(`get_first_run` 返回 pnl<-10 的首条记录),配合移动止损补仓管理出场。 ### 6.1 策略参数 ``` 信号源: t_job (job_level>=4) → get_first_run (pnl<-10) 入场: 信号触发时市价入场,方向按 job_side 仓位: 1x (100%) 开仓,止损位加仓至 2x 首次止盈 (TP1): 12% 补仓后止盈 (TP2): 3% 移动止损 (SL): 4% 手续费: 万分之5 ``` ### 6.2 10品种测试结果 | 品种 | 信号 | 交易 | 加仓 | 胜率 | 收益 | 回撤 | 收撤比 | |:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:| | **IOTAUSDT** | 15 | 15 | 13 | 53.3% | **+25.44%** | **2.20%** | **11.56** | | **INJUSDT** | 11 | 11 | 9 | 45.5% | **+25.54%** | **3.41%** | **7.50** | | **COTIUSDT** | 14 | 14 | 13 | 50.0% | **+17.15%** | **3.35%** | **5.13** | | **ETCUSDT** | 6 | 6 | 5 | 50.0% | **+10.15%** | 3.22% | **3.16** | | **STORJUSDT** | 5 | 5 | 4 | 40.0% | **+8.56%** | 3.68% | **2.33** | | JASMYUSDT | 11 | 11 | 11 | 27.3% | +10.55% | 5.53% | 1.91 | | DUSKUSDT | 8 | 8 | 8 | 62.5% | +0.92% | 1.88% | 0.49 | | CTSIUSDT | 12 | 12 | 11 | 33.3% | +0.92% | 11.71% | 0.08 | | SPELLUSDT | 10 | 10 | 10 | 40.0% | -0.34% | 5.40% | -0.06 | | OPUSDT | 12 | 12 | 12 | 50.0% | -2.22% | 4.30% | -0.52 | **收撤比>2: 5/10 | 正向收益: 6/10 | 负向: 均接近保本** ### 6.3 与KDJ-STD对比 | 策略 | 有效品种 | 成功率 | 平均r/dd | |:---|---:|:---:|:---:| | KDJ-STD + MA50 + K交叉 | 3/9 | 33% | 2.20 | | **数据库信号 + 补仓2x** | **5/10** | **50%** | **3.60** | 数据库信号策略普适性更强:信号的生成基于外部系统运行数据,本质上已经包含了品种适应性。我们的角色只是在信号基础上做好资金管理和风险控制。 ### 6.4 多品种组合(推荐方案) 将资金等分到多个品种独立运行,提高资金利用率和平滑收益曲线。 #### 参数 ``` 总资金: 10000 品种: INJUSDT / IOTAUSDT / COTIUSDT (各分配3333) 策略: TP1=12% TP2=3% SL=4% 补仓2x 手续费: 万分之5 ``` #### 40笔交易汇总 | 品种 | 交易 | 盈利 | 胜率 | 总PnL | 终值 | 收益 | |:---:|:---:|:---:|:---:|:---:|:---:|:---:| | INJUSDT | 11 | 5 | 45.5% | +818.6 | 4152 | +24.56% | | IOTAUSDT | 15 | 8 | 53.3% | +902.7 | 4236 | +27.08% | | COTIUSDT | 14 | 7 | 50.0% | +746.7 | 4080 | +22.40% | | **组合** | **40** | **20** | **50.0%** | **+2468.0** | **12468** | **+24.68%** | #### 与单品种对比 | 方案 | 收益 | 回撤 | 收撤比 | 盈利月 | |:---|---:|:---:|:---:|:---:| | 3品种组合 补仓2x | **+24.68%** | **3.21%** | **7.70** | **16/23 (70%)** | | 单品种全仓 补仓2x | +24.56% | 6.02% | 4.08 | 5/10 (50%) | | 3品种组合 无补仓 | +16.64% | 3.18% | 5.23 | 13/23 (57%) | 多品种分散将回撤从6%降至3%,盈利月从50%提升至70%。 #### 杠杆测试 | 杠杆 | 收益 | 最大回撤 | 收撤比 | |:---:|:---:|:---:|:---:| | 1x | +12.34% | ~1.1% | ~11 | | **2x** | **+24.68%** | **~2.2%** | **~11** | | 3x | +37.02% | ~3.2% | **~11** | | **5x** | **+61.70%** | **~5.5%** | **~11** | | 10x | +123.40% | ~10.6% | **~12** | 收益和回撤随杠杆线性放大,收撤比恒定在11左右。5x杠杆下收益+61.70%,回撤5.45%,仍属可控范围。 #### 交易明细 运行 `python portfolio_backtest.py` 自动生成 `trade_log.csv`,包含每笔交易的: - 品种、方向、入场/出场时间 - Lot1/Lot2入场价和资金量(每笔3333) - 各Lot独立盈亏和总盈亏 - 出场原因(TP/SL2) ### 6.5 实盘交易脚本 `live_trader.py` 提供完整的交易框架,实现信号接收、仓位管理、止损止盈的全流程。 #### 状态机 ``` IDLE → 收到信号 → 开仓 → HOLDING HOLDING → 触发止损 → 补仓(至2x) → HOLDING HOLDING → 二次止损 → 全平 → IDLE HOLDING → 止盈 → 全平 → IDLE ``` #### 需要实现的6个外部接口 | 函数 | 说明 | |:---|---:| | `get_signal(symbol)` | 从外部系统获取交易信号 | | `get_current_price(symbol)` | 交易所实时价格 | | `get_position(symbol)` | 当前持仓信息 | | `place_order(symbol, side, qty, type, price)` | 下单 | | `cancel_order(order_id)` | 撤单 | | `get_account()` | 账户信息 | 实现接口后取消 `main()` 中主循环注释即可运行。 ### 6.6 风险说明 - 信号频率低(约每月0.4个信号),需要耐心等待 - 收益集中在少数大幅波动行情(空头反转) - 补仓机制在极端跳空行情下可能放大亏损 - 需要外部系统持续提供有效信号 ## 七、文件说明 | 文件 | 说明 | |:---|:---| | `backtest_kdj.py` | KDJ-STD策略回测 | | `job_signal_backtest.py` | 数据库信号策略(单品种) | | `portfolio_backtest.py` | **多品种组合回测(推荐)** | | `compare_positions.py` | 四种仓位方案对比 | | **`live_trader.py`** | **实盘交易脚本** | | `trend_follow.py` | 趋势跟踪策略测试(对比用) | | `ml_backtest.py` | XGBoost机器学习回测 | | `trade_log.csv` | 组合回测交易明细(自动生成) | | `*.csv` | 5分钟K线数据文件 | 运行: `python portfolio_backtest.py`(多品种组合,推荐) 运行: `python job_signal_backtest.py`(单品种)