Fix breakeven badge still showing after roll lowers stop loss.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -5,10 +5,12 @@ from lib.trade.order_monitor_display_lib import (
|
||||
is_sl_breakeven_secured,
|
||||
monitor_open_stop_loss,
|
||||
order_monitor_tpsl_needs_sync,
|
||||
resolve_breakeven_entry_price,
|
||||
resolve_live_tpsl_prices,
|
||||
sl_breakeven_from_exchange_tpsl,
|
||||
snapshot_rr,
|
||||
snapshot_stop_loss,
|
||||
stale_breakeven_armed,
|
||||
)
|
||||
|
||||
|
||||
@@ -106,7 +108,7 @@ def test_apply_order_price_display_fields_live_sl():
|
||||
)
|
||||
assert payload["stop_loss"] == 1661
|
||||
assert payload["stop_loss_display"] == "1661.00"
|
||||
assert payload["sl_breakeven_secured"] is True
|
||||
assert payload["sl_breakeven_secured"] is False
|
||||
assert payload["rr_ratio"] is not None
|
||||
assert payload["latest_risk_amount"] is not None
|
||||
assert payload["latest_risk_amount"] >= 0
|
||||
@@ -149,3 +151,30 @@ def test_calc_latest_risk_amount_long():
|
||||
def test_calc_latest_risk_amount_profit_side_stop():
|
||||
risk = calc_latest_risk_amount("long", 100, 101, exchange_notional=1000)
|
||||
assert risk == 0.0
|
||||
|
||||
|
||||
def test_resolve_breakeven_entry_price_prefers_avg():
|
||||
assert resolve_breakeven_entry_price(1777.39, 1777.2) == 1777.2
|
||||
assert resolve_breakeven_entry_price(1777.39, None) == 1777.39
|
||||
|
||||
|
||||
def test_roll_long_not_breakeven_with_avg_entry():
|
||||
payload = {}
|
||||
apply_order_price_display_fields(
|
||||
payload,
|
||||
direction="long",
|
||||
entry_price=1777.39,
|
||||
initial_stop_loss=1750,
|
||||
stop_loss=1767,
|
||||
take_profit=1833,
|
||||
calc_rr_ratio_fn=_calc_rr,
|
||||
exchange_tpsl={"sl": {"trigger_price": 1767}, "tp": {"trigger_price": 1833}},
|
||||
avg_entry_price=1777.2,
|
||||
)
|
||||
assert payload["sl_breakeven_secured"] is False
|
||||
|
||||
|
||||
def test_stale_breakeven_armed_after_roll_down():
|
||||
assert stale_breakeven_armed("long", 1777.39, 1767, 1) is True
|
||||
assert stale_breakeven_armed("long", 1777.39, 1778, 1) is False
|
||||
assert stale_breakeven_armed("long", 1777.39, 1767, 0) is False
|
||||
|
||||
Reference in New Issue
Block a user