feat(trend): 趋势回调保本移交下单监控并统一写交易记录
保本后结束趋势计划,持仓转入下单监控(备注趋势回调),交易所同时挂保本止损与计划止盈;中控或交易所平仓均经下单监控写入交易记录(trend_plan_id、开仓类型),四所共用 strategy_trend_register。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -50,7 +50,9 @@ from fib_key_monitor_lib import (
|
||||
from strategy_trade_labels import (
|
||||
STRATEGY_ENTRY_REASON_OPTIONS,
|
||||
entry_reason_for_monitor_type,
|
||||
handoff_trade_miss_reason,
|
||||
trade_record_monitor_type as resolve_trade_record_monitor_type,
|
||||
trend_plan_id_from_monitor_row,
|
||||
)
|
||||
from journal_chart_lib import (
|
||||
JOURNAL_CHART_DEFAULT_LIMIT,
|
||||
@@ -3999,6 +4001,7 @@ def reconcile_external_closes(conn, days=None):
|
||||
conn,
|
||||
symbol=r["symbol"],
|
||||
monitor_type=trade_record_monitor_type(conn, r),
|
||||
trend_plan_id=trend_plan_id_from_monitor_row(r),
|
||||
key_signal_type=order_row_key_signal_type(r),
|
||||
direction=r["direction"],
|
||||
trigger_price=r["trigger_price"],
|
||||
@@ -4014,7 +4017,7 @@ def reconcile_external_closes(conn, days=None):
|
||||
planned_rr=calc_rr_ratio(r["direction"], r["trigger_price"], r["initial_stop_loss"] or r["stop_loss"], r["take_profit"]),
|
||||
actual_rr=calc_actual_rr(pnl_amount, r["risk_amount"]),
|
||||
result=result,
|
||||
miss_reason=miss_reason,
|
||||
miss_reason=handoff_trade_miss_reason(miss_reason, r),
|
||||
opened_at=opened_at,
|
||||
closed_at=closed_at,
|
||||
)
|
||||
@@ -5380,6 +5383,7 @@ def check_order_monitors():
|
||||
conn,
|
||||
symbol=sym,
|
||||
monitor_type=trade_record_monitor_type(conn, r),
|
||||
trend_plan_id=trend_plan_id_from_monitor_row(r),
|
||||
key_signal_type=order_row_key_signal_type(r),
|
||||
direction=direction,
|
||||
trigger_price=trigger_price,
|
||||
@@ -5395,7 +5399,10 @@ def check_order_monitors():
|
||||
planned_rr=calc_rr_ratio(direction, trigger_price, r["initial_stop_loss"] or stop_loss, take_profit),
|
||||
actual_rr=calc_actual_rr(pnl_amount, r["risk_amount"]),
|
||||
result=res,
|
||||
miss_reason="触发价已触达,仓位已由交易所止盈/止损或其他方式平掉(本地补记)",
|
||||
miss_reason=handoff_trade_miss_reason(
|
||||
"触发价已触达,仓位已由交易所止盈/止损或其他方式平掉(本地补记)",
|
||||
r,
|
||||
),
|
||||
opened_at=opened_at,
|
||||
closed_at=closed_at,
|
||||
)
|
||||
@@ -5439,6 +5446,7 @@ def check_order_monitors():
|
||||
conn,
|
||||
symbol=sym,
|
||||
monitor_type=trade_record_monitor_type(conn, r),
|
||||
trend_plan_id=trend_plan_id_from_monitor_row(r),
|
||||
key_signal_type=order_row_key_signal_type(r),
|
||||
direction=direction,
|
||||
trigger_price=trigger_price,
|
||||
@@ -5454,7 +5462,7 @@ def check_order_monitors():
|
||||
planned_rr=calc_rr_ratio(direction, trigger_price, r["initial_stop_loss"] or stop_loss, take_profit),
|
||||
actual_rr=calc_actual_rr(record_pnl, r["risk_amount"]),
|
||||
result=record_res,
|
||||
miss_reason=record_miss,
|
||||
miss_reason=handoff_trade_miss_reason(record_miss, r),
|
||||
opened_at=opened_at,
|
||||
closed_at=record_closed,
|
||||
)
|
||||
@@ -5518,6 +5526,7 @@ def check_order_monitors():
|
||||
conn,
|
||||
symbol=sym,
|
||||
monitor_type=trade_record_monitor_type(conn, r),
|
||||
trend_plan_id=trend_plan_id_from_monitor_row(r),
|
||||
key_signal_type=order_row_key_signal_type(r),
|
||||
direction=direction,
|
||||
trigger_price=trigger_price,
|
||||
@@ -5533,6 +5542,7 @@ def check_order_monitors():
|
||||
planned_rr=calc_rr_ratio(direction, trigger_price, r["initial_stop_loss"] or stop_loss, take_profit),
|
||||
actual_rr=calc_actual_rr(pnl_amount, r["risk_amount"]),
|
||||
result=res,
|
||||
miss_reason=handoff_trade_miss_reason(None, r),
|
||||
opened_at=opened_at,
|
||||
closed_at=closed_at,
|
||||
)
|
||||
@@ -5585,6 +5595,7 @@ def force_close_before_reset():
|
||||
conn,
|
||||
symbol=r["symbol"],
|
||||
monitor_type=trade_record_monitor_type(conn, r),
|
||||
trend_plan_id=trend_plan_id_from_monitor_row(r),
|
||||
key_signal_type=order_row_key_signal_type(r),
|
||||
direction=direction,
|
||||
trigger_price=trigger_price,
|
||||
@@ -5600,7 +5611,10 @@ def force_close_before_reset():
|
||||
planned_rr=calc_rr_ratio(direction, trigger_price, r["initial_stop_loss"] or r["stop_loss"], r["take_profit"]),
|
||||
actual_rr=calc_actual_rr(pnl_amount, r["risk_amount"]),
|
||||
result="强制清仓",
|
||||
miss_reason=f"北京时间 {FORCE_CLOSE_BJ_HOUR}:00 整点风控清仓",
|
||||
miss_reason=handoff_trade_miss_reason(
|
||||
f"北京时间 {FORCE_CLOSE_BJ_HOUR}:00 整点风控清仓",
|
||||
r,
|
||||
),
|
||||
opened_at=opened_at,
|
||||
closed_at=closed_at,
|
||||
)
|
||||
@@ -7304,6 +7318,7 @@ def del_order(id):
|
||||
conn,
|
||||
symbol=row["symbol"],
|
||||
monitor_type=trade_record_monitor_type(conn, row),
|
||||
trend_plan_id=trend_plan_id_from_monitor_row(row),
|
||||
key_signal_type=order_row_key_signal_type(row),
|
||||
direction=row["direction"],
|
||||
trigger_price=row["trigger_price"],
|
||||
@@ -7319,7 +7334,7 @@ def del_order(id):
|
||||
planned_rr=calc_rr_ratio(row["direction"], row["trigger_price"], row["initial_stop_loss"] or row["stop_loss"], row["take_profit"]),
|
||||
actual_rr=calc_actual_rr(pnl_amount, row["risk_amount"]),
|
||||
result="手动平仓",
|
||||
miss_reason="用户手动删除订单触发平仓",
|
||||
miss_reason=handoff_trade_miss_reason("用户手动删除订单触发平仓", row),
|
||||
opened_at=opened_at,
|
||||
closed_at=closed_at,
|
||||
)
|
||||
@@ -7359,8 +7374,9 @@ def del_order(id):
|
||||
insert_trade_record(
|
||||
conn,
|
||||
symbol=row["symbol"],
|
||||
monitor_type=trade_record_monitor_type(conn, row),
|
||||
key_signal_type=order_row_key_signal_type(row),
|
||||
monitor_type=trade_record_monitor_type(conn, row),
|
||||
trend_plan_id=trend_plan_id_from_monitor_row(row),
|
||||
key_signal_type=order_row_key_signal_type(row),
|
||||
direction=row["direction"],
|
||||
trigger_price=row["trigger_price"],
|
||||
stop_loss=row["stop_loss"],
|
||||
@@ -7375,7 +7391,7 @@ def del_order(id):
|
||||
planned_rr=calc_rr_ratio(row["direction"], row["trigger_price"], row["initial_stop_loss"] or row["stop_loss"], row["take_profit"]),
|
||||
actual_rr=calc_actual_rr(pnl_amount, row["risk_amount"]),
|
||||
result=result,
|
||||
miss_reason=miss_reason,
|
||||
miss_reason=handoff_trade_miss_reason(miss_reason, row),
|
||||
opened_at=opened_at,
|
||||
closed_at=closed_at,
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user