Fix embed date filter reload and classify profitable stops as trailing TP.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-06-25 11:27:42 +08:00
parent 924a385d6c
commit 2dadd93d91
9 changed files with 95 additions and 74 deletions
+10 -18
View File
@@ -193,6 +193,7 @@ from history_window_lib import (
utc_window_to_bj_sql_strings,
utc_window_to_utc_sql_strings,
)
from trade_result_lib import normalize_result_with_pnl
def load_env_file(path):
if not os.path.exists(path):
@@ -2132,6 +2133,10 @@ def to_effective_trade_dict(row):
item["display_pnl_source"] = "reviewed"
else:
item["display_pnl_source"] = "local"
item["effective_result"] = normalize_result_with_pnl(
item.get("effective_result"),
item.get("effective_pnl_amount"),
)
return item
@@ -2573,19 +2578,6 @@ def calc_actual_rr(pnl_amount, risk_amount):
return None
def normalize_result_with_pnl(result, pnl_amount):
"""
触发止损但实际已盈利时归类为保本止盈避免语义混淆
"""
if result == "止损":
try:
if float(pnl_amount or 0) > 0:
return "保本止盈"
except Exception:
pass
return result
def calc_breakeven_stop(direction, entry_price, risk_fraction, locked_r, offset_pct):
"""
已锁定R计算目标止损位
@@ -4352,7 +4344,7 @@ def resolve_synced_flat_close(row, opened_at_str, opened_at_ms=None):
closed_at_ms=close_ms,
)
return (
guessed,
normalize_result_with_pnl(guessed, pnl2),
pnl2,
closed_at_str,
"未能拉取成交明细,按当前市价与止盈/止损位近似归类(建议核对交易所账单)",
@@ -4367,7 +4359,7 @@ def resolve_synced_flat_close(row, opened_at_str, opened_at_ms=None):
result = classify_exit_by_levels(direction, trigger_price, stop_loss, take_profit, exit_px)
if result:
return (
result,
normalize_result_with_pnl(result, pnl),
pnl,
closed_at_str,
"按交易所成交/流水同步为止盈/止损平仓",
@@ -6288,7 +6280,7 @@ def check_order_monitors():
hold_seconds = calc_hold_seconds(opened_at, now)
pnl_amount = calc_pnl(direction, trigger_price, p, margin_capital, leverage)
if res == "止损" and float(pnl_amount or 0) > 0:
res = "移动止盈" if breakeven_armed else "保本止盈"
res = normalize_result_with_pnl("止损", pnl_amount)
else:
res = normalize_result_with_pnl(res, pnl_amount)
close_order_id = ""
@@ -6320,7 +6312,7 @@ def check_order_monitors():
guessed_res = classify_exit_by_levels(direction, trigger_price, stop_loss, take_profit, exit_p)
if guessed_res:
if guessed_res == "止损" and float(pnl_amount or 0) > 0:
res = "移动止盈" if breakeven_armed else "保本止盈"
res = normalize_result_with_pnl("止损", pnl_amount)
else:
res = normalize_result_with_pnl(guessed_res, pnl_amount)
else:
@@ -6351,7 +6343,7 @@ def check_order_monitors():
guessed_res = classify_exit_by_levels(direction, trigger_price, stop_loss, take_profit, exit_p)
if guessed_res:
if guessed_res == "止损" and float(pnl_amount or 0) > 0:
res = "移动止盈" if breakeven_armed else "保本止盈"
res = normalize_result_with_pnl("止损", pnl_amount)
else:
res = normalize_result_with_pnl(guessed_res, pnl_amount)
else: