From 816c487073a5e74eb1bb43e343933f2e0c9cdac9 Mon Sep 17 00:00:00 2001 From: Pigbibi <20649888+Pigbibi@users.noreply.github.com> Date: Fri, 17 Apr 2026 10:35:29 +0800 Subject: [PATCH] Localize SOXL SOXX blend gate notifications --- notifications/telegram.py | 8 ++++++++ tests/test_notifications.py | 11 +++++++++++ 2 files changed, 19 insertions(+) diff --git a/notifications/telegram.py b/notifications/telegram.py index 7fbdc96..63a5248 100644 --- a/notifications/telegram.py +++ b/notifications/telegram.py @@ -51,6 +51,10 @@ "market_status_delever": "🛡️ 降杠杆({asset})", "signal_risk_on": "SOXL 站上 {window} 日均线,持有 SOXL,交易层风险仓位 {ratio}", "signal_delever": "SOXL 跌破 {window} 日均线,切换至 SOXX,交易层风险仓位 {ratio}", + "market_status_blend_gate_risk_on": "🚀 风险开启({asset})", + "market_status_blend_gate_defensive": "🛡️ 降杠杆({asset})", + "signal_blend_gate_risk_on": "{trend_symbol} 站上 {window} 日门槛线,持有 SOXL {soxl_ratio} + SOXX {soxx_ratio}", + "signal_blend_gate_defensive": "{trend_symbol} 跌破门槛线,防守持有 SOXX {soxx_ratio}", "no_trades": "✅ 无需调仓", "emergency": "🛡️ 金丝雀应急: {n_bad}/4 坏, 全部转入 {safe}", "quarterly": "📊 季度调仓: 前 {n} 名轮动", @@ -119,6 +123,10 @@ "market_status_delever": "🛡️ DE-LEVER ({asset})", "signal_risk_on": "SOXL above {window}d MA, hold SOXL, risk {ratio}", "signal_delever": "SOXL below {window}d MA, switch to SOXX, risk {ratio}", + "market_status_blend_gate_risk_on": "🚀 RISK-ON ({asset})", + "market_status_blend_gate_defensive": "🛡️ DE-LEVER ({asset})", + "signal_blend_gate_risk_on": "{trend_symbol} above {window}d gated entry, hold SOXL {soxl_ratio} + SOXX {soxx_ratio}", + "signal_blend_gate_defensive": "{trend_symbol} below gated entry, hold defensive SOXX {soxx_ratio}", "no_trades": "✅ No rebalance needed", "emergency": "🛡️ Canary Emergency: {n_bad}/4 bad, rotating to {safe}", "quarterly": "📊 Quarterly Rebalance: Top {n} rotation", diff --git a/tests/test_notifications.py b/tests/test_notifications.py index 835dbb0..605ed3d 100644 --- a/tests/test_notifications.py +++ b/tests/test_notifications.py @@ -7,6 +7,17 @@ def test_build_translator_supports_chinese(): assert translate("target_weights_title") == "目标持仓" assert translate("market_status_risk_on", asset="SOXL") == "🚀 风险开启(SOXL)" assert translate("signal_risk_on", window=150, ratio="40.2%") == "SOXL 站上 150 日均线,持有 SOXL,交易层风险仓位 40.2%" + assert translate("market_status_blend_gate_risk_on", asset="SOXX+SOXL") == "🚀 风险开启(SOXX+SOXL)" + assert ( + translate( + "signal_blend_gate_risk_on", + trend_symbol="SOXX", + window=140, + soxl_ratio="70.0%", + soxx_ratio="20.0%", + ) + == "SOXX 站上 140 日门槛线,持有 SOXL 70.0% + SOXX 20.0%" + ) def test_strategy_display_name_translates_new_live_profiles():