Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions notifications/telegram.py
Original file line number Diff line number Diff line change
Expand Up @@ -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} 名轮动",
Expand Down Expand Up @@ -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",
Expand Down
11 changes: 11 additions & 0 deletions tests/test_notifications.py
Original file line number Diff line number Diff line change
Expand Up @@ -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():
Expand Down