Fix embed date filter reload and classify profitable stops as trailing TP.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -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):
|
||||
@@ -2089,6 +2090,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
|
||||
|
||||
|
||||
@@ -2287,19 +2292,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”计算目标止损位:
|
||||
@@ -3992,7 +3984,7 @@ def resolve_synced_flat_close(row, opened_at_str, opened_at_ms=None, *, prefer_m
|
||||
if guessed:
|
||||
pnl = calc_pnl(direction, trigger_price, p, margin_capital, leverage)
|
||||
return (
|
||||
guessed,
|
||||
normalize_result_with_pnl(guessed, pnl),
|
||||
pnl,
|
||||
closed_at_str,
|
||||
"未能拉取成交明细,按当前市价与止盈/止损位近似归类(建议核对交易所账单)",
|
||||
@@ -4015,7 +4007,7 @@ def resolve_synced_flat_close(row, opened_at_str, opened_at_ms=None, *, prefer_m
|
||||
)
|
||||
if result:
|
||||
return (
|
||||
result,
|
||||
normalize_result_with_pnl(result, pnl),
|
||||
pnl,
|
||||
closed_at_str,
|
||||
"按交易所成交记录同步为止盈/止损平仓",
|
||||
@@ -6047,7 +6039,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 = ""
|
||||
@@ -6078,7 +6070,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:
|
||||
@@ -6109,7 +6101,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:
|
||||
|
||||
Reference in New Issue
Block a user