feat: gradient liquidation scoring - no threshold, ratio-based
Removed USD threshold gates. Now any liquidation data triggers scoring: - ratio ≥ 2.0 → +5 (extreme imbalance) - ratio ≥ 1.5 → +3 - ratio ≥ 1.2 → +1 - ratio 0.8~1.2 → 0 (balanced) - Inverse for SHORT direction
This commit is contained in:
parent
8279b16c68
commit
a571a221e5
@ -521,20 +521,29 @@ class SymbolState:
|
|||||||
if liq_data:
|
if liq_data:
|
||||||
liq_long_usd = liq_data.get("long_usd", 0)
|
liq_long_usd = liq_data.get("long_usd", 0)
|
||||||
liq_short_usd = liq_data.get("short_usd", 0)
|
liq_short_usd = liq_data.get("short_usd", 0)
|
||||||
thresholds = {"BTCUSDT": 500000, "ETHUSDT": 200000, "XRPUSDT": 100000, "SOLUSDT": 100000}
|
|
||||||
threshold = thresholds.get(self.symbol, 100000)
|
|
||||||
total = liq_long_usd + liq_short_usd
|
total = liq_long_usd + liq_short_usd
|
||||||
if total >= threshold:
|
if total > 0:
|
||||||
if liq_short_usd > 0 and liq_long_usd > 0:
|
# ratio = 空头清算 / 多头清算
|
||||||
|
# ratio高 = 空头爆仓多 = 有利于做多
|
||||||
|
if liq_long_usd > 0:
|
||||||
ratio = liq_short_usd / liq_long_usd
|
ratio = liq_short_usd / liq_long_usd
|
||||||
elif liq_short_usd > 0:
|
|
||||||
ratio = float("inf")
|
|
||||||
else:
|
else:
|
||||||
ratio = 0
|
ratio = float("inf") if liq_short_usd > 0 else 1.0
|
||||||
if ratio >= 2.0 and direction == "LONG":
|
|
||||||
liq_score = 5
|
# 梯度评分:ratio越极端分越高
|
||||||
elif ratio <= 0.5 and direction == "SHORT":
|
def liq_ratio_to_score(r: float) -> int:
|
||||||
liq_score = 5
|
if r >= 2.0: return 5
|
||||||
|
if r >= 1.5: return 3
|
||||||
|
if r >= 1.2: return 1
|
||||||
|
return 0
|
||||||
|
|
||||||
|
if direction == "LONG":
|
||||||
|
# 做多:空头爆仓多(ratio高)有利
|
||||||
|
liq_score = liq_ratio_to_score(ratio)
|
||||||
|
else:
|
||||||
|
# 做空:多头爆仓多(ratio低=1/ratio高)有利
|
||||||
|
inv_ratio = (1.0 / ratio) if ratio > 0 else float("inf")
|
||||||
|
liq_score = liq_ratio_to_score(inv_ratio)
|
||||||
|
|
||||||
# 5) 辅助层(5分)
|
# 5) 辅助层(5分)
|
||||||
coinbase_premium = to_float(self.market_indicators.get("coinbase_premium"))
|
coinbase_premium = to_float(self.market_indicators.get("coinbase_premium"))
|
||||||
|
|||||||
@ -20,3 +20,23 @@
|
|||||||
2026-03-01 23:14:20,717 [INFO] signal-engine: [SOLUSDT] 🚨 信号[v51_baseline]: LONG score=92 price=83.2
|
2026-03-01 23:14:20,717 [INFO] signal-engine: [SOLUSDT] 🚨 信号[v51_baseline]: LONG score=92 price=83.2
|
||||||
2026-03-01 23:14:20,717 [INFO] signal-engine: [SOLUSDT] 🚨 信号[v52_8signals]: LONG score=97 price=83.2
|
2026-03-01 23:14:20,717 [INFO] signal-engine: [SOLUSDT] 🚨 信号[v52_8signals]: LONG score=97 price=83.2
|
||||||
2026-03-01 23:14:52,024 [INFO] signal-engine: 冷启动保护期结束,模拟盘开仓已启用
|
2026-03-01 23:14:52,024 [INFO] signal-engine: 冷启动保护期结束,模拟盘开仓已启用
|
||||||
|
2026-03-01 23:23:48,162 [INFO] signal-engine: 已加载策略配置: v51_baseline, v52_8signals
|
||||||
|
2026-03-01 23:23:51,129 [INFO] signal-engine: [BTCUSDT] 冷启动完成: 加载454,017条历史数据 (窗口=4h)
|
||||||
|
2026-03-01 23:23:54,321 [INFO] signal-engine: [ETHUSDT] 冷启动完成: 加载489,974条历史数据 (窗口=4h)
|
||||||
|
2026-03-01 23:23:54,744 [INFO] signal-engine: [XRPUSDT] 冷启动完成: 加载65,115条历史数据 (窗口=4h)
|
||||||
|
2026-03-01 23:23:55,256 [INFO] signal-engine: [SOLUSDT] 冷启动完成: 加载72,235条历史数据 (窗口=4h)
|
||||||
|
2026-03-01 23:23:55,257 [INFO] signal-engine: === Signal Engine (PG) 启动完成 ===
|
||||||
|
2026-03-01 23:23:55,497 [INFO] signal-engine: [BTCUSDT] 🚨 信号[v51_baseline]: LONG score=95 price=65616.4
|
||||||
|
2026-03-01 23:23:55,497 [INFO] signal-engine: [BTCUSDT] 🚨 信号[v52_8signals]: LONG score=95 price=65616.4
|
||||||
|
2026-03-01 23:23:55,960 [INFO] signal-engine: [SOLUSDT] 🚨 信号[v51_baseline]: LONG score=92 price=83.4
|
||||||
|
2026-03-01 23:23:55,961 [INFO] signal-engine: [SOLUSDT] 🚨 信号[v52_8signals]: LONG score=92 price=83.4
|
||||||
|
2026-03-01 23:24:27,328 [INFO] signal-engine: 冷启动保护期结束,模拟盘开仓已启用
|
||||||
|
2026-03-01 23:32:18,630 [INFO] signal-engine: [XRPUSDT] 🚨 信号[v51_baseline]: SHORT score=82 price=1.4
|
||||||
|
2026-03-01 23:32:18,630 [INFO] signal-engine: [XRPUSDT] 🚨 信号[v52_8signals]: SHORT score=82 price=1.4
|
||||||
|
2026-03-01 23:32:18,652 [INFO] signal-engine: [XRPUSDT] 📝 模拟开仓: SHORT @ 1.35 score=82 tier=standard strategy=v52_8signals TP1=1.34 TP2=1.33 SL=1.36
|
||||||
|
2026-03-01 23:34:08,143 [INFO] signal-engine: [BTCUSDT] 🚨 信号[v51_baseline]: LONG score=85 price=65781.9
|
||||||
|
2026-03-01 23:34:08,144 [INFO] signal-engine: [BTCUSDT] 🚨 信号[v52_8signals]: LONG score=85 price=65781.9
|
||||||
|
2026-03-01 23:34:08,165 [INFO] signal-engine: [BTCUSDT] 📝 模拟开仓: LONG @ 65781.85 score=85 tier=heavy strategy=v52_8signals TP1=66122.21 TP2=66547.66 SL=65271.31
|
||||||
|
2026-03-01 23:34:08,664 [INFO] signal-engine: [SOLUSDT] 🚨 信号[v51_baseline]: LONG score=87 price=83.5
|
||||||
|
2026-03-01 23:34:08,664 [INFO] signal-engine: [SOLUSDT] 🚨 信号[v52_8signals]: LONG score=87 price=83.5
|
||||||
|
2026-03-01 23:34:08,686 [INFO] signal-engine: [SOLUSDT] 📝 模拟开仓: LONG @ 83.54 score=87 tier=heavy strategy=v52_8signals TP1=84.10 TP2=84.80 SL=82.70
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user