fix无法按新真盈亏公式更新的旧单标记为缺价未核。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-10-13 10:23:36 +08:00
parent 3416996ae5
commit 42a7ee9961
5 changed files with 126 additions and 111 deletions
+42
View File
@@ -54,6 +54,48 @@ class ReviewLocalSyncFreezeTests(unittest.TestCase):
self.assertAlmostEqual(float(healed["realized_pnl_usdt"]), 700.0, places=2)
conn.close()
def test_uncomputable_old_trade_marked(self):
from lib.options.options_db import init_options_tables
from lib.options.options_review_lib import sync_options_from_local_trades
from lib.sim.mode_lib import MODE_SIM, TRADING_MODE_KEY
from lib.instance.runtime_settings_lib import ensure_runtime_settings_table, runtime_set
conn = sqlite3.connect(":memory:")
conn.row_factory = sqlite3.Row
init_options_tables(conn)
ensure_runtime_settings_table(conn)
runtime_set(conn, TRADING_MODE_KEY, MODE_SIM)
# 无开仓/卖回价 → 无法按新公式更新
conn.execute(
"""
INSERT INTO options_trades(
inst_id, underlying, opt_type, sheets, eth_amount,
premium_paid, premium_received, realized_pnl, premium_ccy,
status, realized_pnl_usdt, pnl_settled,
created_at, closed_at
) VALUES (
'BTC-USD-261008-86500-P', 'BTC', 'P', 1, 0.01,
0.01, 0.02, 0.01, 'BTC',
'closed', -51.0, 1,
'2026-10-05 05:11:30', '2026-10-07 10:03:53'
)
"""
)
conn.commit()
sync_options_from_local_trades(conn, None)
row = conn.execute(
"SELECT realized_pnl_total, status_raw FROM options_review_trades WHERE history_key=?",
("local_opt:1",),
).fetchone()
self.assertEqual(str(row["status_raw"]), "缺价未核")
self.assertIsNone(row["realized_pnl_total"])
trade = conn.execute(
"SELECT realized_pnl_usdt, pnl_settled FROM options_trades WHERE id=1"
).fetchone()
self.assertIsNone(trade["realized_pnl_usdt"])
self.assertEqual(int(trade["pnl_settled"] or 0), 0)
conn.close()
def test_same_open_close_px_equals_coin_times_close(self):
from lib.options.options_db import init_options_tables
from lib.options.options_review_lib import sync_options_from_local_trades