白名单仅一币时选择币种默认显示 env 币种(关键位/实盘下单共用)。
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -4,10 +4,13 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
{% macro trade_policy_symbol(name, id, value='', required=true, placeholder='BTC 或 BTC/USDT') -%}
|
{% macro trade_policy_symbol(name, id, value='', required=true, placeholder='BTC 或 BTC/USDT') -%}
|
||||||
{% if trade_policy.symbol_restrict_enabled and trade_policy.symbol_whitelist %}
|
{% if trade_policy.symbol_restrict_enabled and trade_policy.symbol_whitelist %}
|
||||||
<select name="{{ name }}" id="{{ id }}" {% if required %}required{% endif %} class="trade-policy-symbol-select">
|
{% set wl = trade_policy.symbol_whitelist %}
|
||||||
<option value="">选择币种</option>
|
{% set sole_sym = wl[0] if (wl|length) == 1 else '' %}
|
||||||
{% for sym in trade_policy.symbol_whitelist %}
|
{% set effective = value if value else sole_sym %}
|
||||||
<option value="{{ sym }}" {% if value and ((value|upper) == sym or (value|upper).startswith(sym ~ '/')) %}selected{% endif %}>{{ sym }}/USDT</option>
|
<select name="{{ name }}" id="{{ id }}" {% if required %}required{% endif %} class="trade-policy-symbol-select"{% if sole_sym %} data-sole-symbol="{{ sole_sym }}"{% endif %}>
|
||||||
|
{% if not sole_sym %}<option value="">选择币种</option>{% endif %}
|
||||||
|
{% for sym in wl %}
|
||||||
|
<option value="{{ sym }}" {% if effective and ((effective|upper) == sym or (effective|upper).startswith(sym ~ '/')) %}selected{% endif %}>{{ sym }}/USDT</option>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</select>
|
</select>
|
||||||
{% else %}
|
{% else %}
|
||||||
|
|||||||
@@ -17,15 +17,20 @@ def trade_policy_template_context(policy: TradePolicy) -> dict:
|
|||||||
|
|
||||||
|
|
||||||
def default_symbol_for_policy(policy: TradePolicy, raw_default: str) -> str:
|
def default_symbol_for_policy(policy: TradePolicy, raw_default: str) -> str:
|
||||||
d = (raw_default or "BTC/USDT").strip() or "BTC/USDT"
|
d = (raw_default or "").strip()
|
||||||
if policy.symbol_restrict_enabled and policy.symbol_whitelist:
|
if policy.symbol_restrict_enabled and policy.symbol_whitelist:
|
||||||
|
# 白名单仅一币时直接用 env 币种,表单下拉同步默认选中
|
||||||
|
if len(policy.symbol_whitelist) == 1:
|
||||||
|
return f"{policy.symbol_whitelist[0]}/USDT"
|
||||||
from lib.trade.trade_policy_lib import symbol_base_coin
|
from lib.trade.trade_policy_lib import symbol_base_coin
|
||||||
|
|
||||||
base = symbol_base_coin(d)
|
base = symbol_base_coin(d or "BTC/USDT")
|
||||||
if base not in policy.symbol_whitelist:
|
if base not in policy.symbol_whitelist:
|
||||||
return f"{policy.symbol_whitelist[0]}/USDT"
|
return f"{policy.symbol_whitelist[0]}/USDT"
|
||||||
return d
|
if d:
|
||||||
|
return d if "/" in d else f"{base}/USDT"
|
||||||
|
return f"{policy.symbol_whitelist[0]}/USDT"
|
||||||
|
return d or "BTC/USDT"
|
||||||
|
|
||||||
def check_symbol_policy(
|
def check_symbol_policy(
|
||||||
policy: TradePolicy,
|
policy: TradePolicy,
|
||||||
|
|||||||
@@ -88,3 +88,29 @@ def test_badge_parts():
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
assert trade_policy_badge_parts(p) == ("仅多", "BTC/ETH")
|
assert trade_policy_badge_parts(p) == ("仅多", "BTC/ETH")
|
||||||
|
|
||||||
|
|
||||||
|
def test_default_symbol_when_whitelist_sole():
|
||||||
|
from lib.trade.trade_policy_app_lib import default_symbol_for_policy
|
||||||
|
|
||||||
|
p = load_trade_policy(
|
||||||
|
{
|
||||||
|
"TRADE_SYMBOL_RESTRICT_ENABLED": "true",
|
||||||
|
"TRADE_SYMBOL_WHITELIST": "BTC",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
assert default_symbol_for_policy(p, "") == "BTC/USDT"
|
||||||
|
assert default_symbol_for_policy(p, "ETH/USDT") == "BTC/USDT"
|
||||||
|
|
||||||
|
|
||||||
|
def test_default_symbol_when_whitelist_multi():
|
||||||
|
from lib.trade.trade_policy_app_lib import default_symbol_for_policy
|
||||||
|
|
||||||
|
p = load_trade_policy(
|
||||||
|
{
|
||||||
|
"TRADE_SYMBOL_RESTRICT_ENABLED": "true",
|
||||||
|
"TRADE_SYMBOL_WHITELIST": "BTC,ETH",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
assert default_symbol_for_policy(p, "ETH") == "ETH/USDT"
|
||||||
|
assert default_symbol_for_policy(p, "SOL/USDT") == "BTC/USDT"
|
||||||
|
|||||||
Reference in New Issue
Block a user