Updated the stop-loss calculation for short positions to ensure it locks in profits effectively. Added logic to automatically synchronize stop-loss and take-profit orders for positions without existing SL/TP on the exchange. This improves risk management and ensures positions are adequately protected. Enhanced logging for better tracking of stop-loss updates and synchronization events.
6.2 KiB
6.2 KiB
持仓分析:持仓记录_2026-02-28T10-43-05.json
一、20% 以上盈利的持仓(共 3 个)
| 交易对 | 方向 | 盈亏% | 入场价 | 标记价 | 止损 | 止盈 | 交易所 SL/TP |
|---|---|---|---|---|---|---|---|
| WIFUSDT | SELL | 40.3% | 0.2051 | 0.1863 | 无 | 无 | 无 |
| ZECUSDT | SELL | 26.3% | 221.44 | 207.78 | 无 | 无 | 无 |
| BCHUSDT | SELL | 23.7% | 470.74 | 444.40 | 479.05 | 436.04 | 有 |
止损问题诊断
-
WIF、ZEC:完全没有止损/止盈
- 两笔已浮盈 40%、26%,但交易所无任何 SL/TP 挂单,一旦反转会全部回吐甚至变亏。
- 可能原因:非本系统开仓(手动/别处)、或开仓时未成功挂出 SL/TP、或同步/补建时未补挂。
- 建议:尽快在交易所或通过系统对这两笔至少挂上保本/锁利止损(例如锁住一半利润或 5%~10% 利润)。
-
BCH:有 SL/TP,但止损未上移锁利
- 空头:入场 470.74,当前 444.40,止损仍在 479.05(开仓时的初始止损,高于入场价)。
- 正确做法:盈利 23.7% 后,做空的移动止损应下移(例如从 479 移到 455~460 一带),锁住部分利润;否则价格反弹到 479 才触发,会几乎回吐全部盈利。
- 可能原因:
- 该持仓不在本系统
active_positions内(例如由同步/补建得到),未参与定时检查的移动止损逻辑; - 或做空方向的移动止损更新条件/方向在代码中有误(见下文「策略执行」)。
- 该持仓不在本系统
二、全部 13 笔持仓汇总
| 交易对 | 方向 | 盈亏% | 止损 | 止盈 | 交易所有 SL/TP |
|---|---|---|---|---|---|
| WIFUSDT | SELL | 40.3 | 无 | 无 | 无 |
| ZECUSDT | SELL | 26.3 | 无 | 无 | 无 |
| BCHUSDT | SELL | 23.7 | 479.05 | 436.04 | 有 |
| VVVUSDT | BUY | 15.1 | 无 | 无 | 无 |
| PUMPUSDT | SELL | 7.8 | 0.001813 | 0.001651 | 有 |
| ZROUSDT | SELL | 4.7 | 1.5763 | 1.4348 | 有 |
| SAHARAUSDT | BUY | 2.5 | 0.01829 | 0.02356 | 有 |
| ASTERUSDT | SELL | -0.0 | 0.7152 | 0.651 | 有 |
| MYXUSDT | SELL | -0.5 | 无 | 无 | 无 |
| FARTCOINUSDT | SELL | -0.8 | 无 | 无 | 无 |
| HYPEUSDT | SELL | -3.8 | 无 | 无 | 无 |
| VIRTUALUSDT | BUY | -9.5 | 无 | 无 | 无 |
| ICPUSDT | BUY | -24.5 | 无 | 无 | 无 |
- 无任何止损/止盈的共 7 笔:VIRTUAL, ZEC, HYPE, FARTCOIN, VVV, ICP, WIF, MYX。其中 ICP 已亏 24.5%,若无止损会继续放大亏损。
三、策略执行问题分析
1. 为何大量持仓「无止损/无止盈」?
- 若这些仓位是本系统开仓:开仓后应调用
_ensure_exchange_sltp_orders在交易所挂 SL/TP;若仍无挂单,可能是:- 开仓流程中未成功挂单(网络/权限/参数错误)且未重试或告警;
- 或仓位来自同步/补建(币安有仓、DB 无记录),补建时若未同时挂 SL/TP,就会一直处于「无保护」状态。
- 建议:
- 对「有持仓但无 SL/TP」的 symbol,在同步/健康检查中自动补挂(至少止损,止盈可按配置或保守价);
- 开仓后若挂单失败,要有重试与日志/告警,便于排查。
2. 做空(SELL)移动止损方向是否正确?
- 做空盈利时,应下移止损价(从高位往当前价方向移)才能锁利;当前 BCH 空头止损仍在 479,未下移。
- 代码中做空分支(
position_manager定时检查)有:new_stop_loss = entry_price + (pnl_amount - protect_amount) / quantitynew_stop_loss = min(new_stop_loss, breakeven),再判断new_stop_loss > current_sl才更新。
- 做空时
pnl_amount = (entry - current)*q > 0,entry + (pnl - protect)/q可能大于初始止损 479,导致条件new_stop_loss > current_sl不成立,从而从不更新;即便更新,也是把止损往更上方移(更宽松),而不是往下锁利。这与「盈利后锁利」的目标相反。 - 建议:复查做空移动止损公式与更新条件,确保「盈利后新止损比当前止损更靠近当前价」(空头即新止损 < 当前止损),并只在「锁利方向」上更新。
3. 亏损单 ICP -24.5% 且无止损
- 单笔已亏 24.5%,若无止损会继续暴露风险。
- 建议:立即对该仓设止损(或减仓/平仓);并检查为何该仓从未挂上止损(是否补建、是否开仓失败挂单等)。
4. 多账号/多数据源一致性
- 持仓记录中
id、entry_time、created_at多为 null,说明可能来自交易所快照 + 部分本地合并,而非全部来自本系统 DB。要确保:- 凡在交易所存在的仓位,只要被本系统「认领」或展示,就应纳入监控并在缺失时补挂 SL/TP;
- 移动止损/滞涨早止盈等逻辑应对所有被监控仓位生效,包括同步/补建进来的。
四、建议汇总
| 优先级 | 建议 |
|---|---|
| P0 | WIF、ZEC:立即在交易所或通过系统挂上止损(至少保本或锁 5%~10% 利润),避免 40%/26% 盈利回吐。 |
| P0 | ICP:已亏 24.5% 且无止损,立即设止损或减仓/平仓,并排查为何无 SL。 |
| P1 | BCH:检查该仓是否在 active_positions、是否参与移动止损;若在,复查做空移动止损公式与更新条件,确保盈利后下移止损锁利。 |
| P1 | 对所有「有仓但无 SL/TP」的持仓(含同步/补建)在同步或健康检查中自动补挂止损(止盈可选)。 |
| P2 | 开仓后 SL/TP 挂单失败时增加重试与告警;移动止损(尤其做空)逻辑做代码审查与单测。 |
| P2 | 滞涨早止盈:若已开启,确认对 20%+ 盈利的仓位在「长时间不创新高」时能触发分批减仓+抬止损。 |
五、小结
- 3 笔 20%+ 盈利:2 笔(WIF、ZEC)完全没有止损,1 笔(BCH)有止损但未随盈利下移锁利,整体「止损不对」的观感成立。
- 7 笔无任何 SL/TP,其中 1 笔已亏 24.5%(ICP),风险突出。
- 策略执行上需:补挂缺失 SL/TP、修正做空移动止损方向与条件、保证同步/补建仓位也纳入监控并补挂保护单。