Fix Gate mark/PnL/TP-SL snapshot and intraday order UI
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -13,7 +13,9 @@ from lib.trade.entry_model_lib import (
|
||||
entry_model_category,
|
||||
entry_model_label,
|
||||
hub_meta_entry_context,
|
||||
intraday_entry_model_options,
|
||||
is_intraday_trading_profile,
|
||||
open_position_button_label,
|
||||
parse_manual_order_style_fields,
|
||||
resolve_trade_record_entry_reason,
|
||||
trade_style_for_entry_model,
|
||||
@@ -95,6 +97,30 @@ class TestEntryModelLib(unittest.TestCase):
|
||||
self.assertIsNone(code)
|
||||
self.assertEqual(style, "swing")
|
||||
|
||||
def test_intraday_entry_model_options(self):
|
||||
opts = intraday_entry_model_options()
|
||||
codes = [o.code for o in opts]
|
||||
self.assertEqual(codes, ["liquidity_false_break", "structure_breakout"])
|
||||
self.assertEqual(entry_model_label("liquidity_false_break"), "假破")
|
||||
|
||||
def test_parse_intraday_requires_entry_model(self):
|
||||
policy = TradePolicy(True, "both", True, ("BTC", "ETH"))
|
||||
style, code, err = parse_manual_order_style_fields(policy, {})
|
||||
self.assertTrue(err)
|
||||
style, code, err = parse_manual_order_style_fields(
|
||||
policy, {"entry_model": "structure_breakout"}
|
||||
)
|
||||
self.assertIsNone(err)
|
||||
self.assertEqual(code, "structure_breakout")
|
||||
self.assertEqual(style, "trend")
|
||||
|
||||
def test_open_position_button_intraday(self):
|
||||
policy = TradePolicy(True, "both", True, ("BTC", "ETH"))
|
||||
self.assertEqual(
|
||||
open_position_button_label(policy, "full_margin"),
|
||||
"开仓(日内·全仓杠杆)",
|
||||
)
|
||||
|
||||
def test_resolve_entry_reason_from_model(self):
|
||||
er = resolve_trade_record_entry_reason(entry_model=ENTRY_MODEL_BIG_DIV_B)
|
||||
self.assertEqual(er, "大分歧B")
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
import unittest
|
||||
|
||||
from lib.hub.price_snapshot_lib import resolve_order_snapshot_price
|
||||
|
||||
|
||||
class TestPriceSnapshotLib(unittest.TestCase):
|
||||
def test_resolve_from_cached_prices(self):
|
||||
px = resolve_order_snapshot_price("ETH/USDT", {"ETH/USDT": 1750.5})
|
||||
self.assertEqual(px, 1750.5)
|
||||
|
||||
def test_resolve_from_position_mark(self):
|
||||
prow = {"info": {"mark_price": 1760.0}, "contracts": 1}
|
||||
px = resolve_order_snapshot_price("ETH/USDT", {}, position_row=prow)
|
||||
self.assertEqual(px, 1760.0)
|
||||
|
||||
def test_resolve_mark_fn_before_entry(self):
|
||||
px = resolve_order_snapshot_price(
|
||||
"ETH/USDT",
|
||||
{},
|
||||
get_mark_price_fn=lambda s: 1755.0,
|
||||
fallback_entry=1700.0,
|
||||
)
|
||||
self.assertEqual(px, 1755.0)
|
||||
|
||||
def test_resolve_fallback_entry(self):
|
||||
px = resolve_order_snapshot_price(
|
||||
"ETH/USDT",
|
||||
{},
|
||||
fallback_entry=1700.0,
|
||||
)
|
||||
self.assertEqual(px, 1700.0)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user