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 okx_orders_lib import cancel_okx_all_open_orders, fetch_okx_all_open_orders
|
||||
from journal_chart_lib import (
|
||||
@@ -3392,6 +3394,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"],
|
||||
@@ -3407,7 +3410,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,
|
||||
)
|
||||
@@ -5230,6 +5233,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,
|
||||
@@ -5245,7 +5249,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,
|
||||
)
|
||||
@@ -5288,6 +5295,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,
|
||||
@@ -5303,7 +5311,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,
|
||||
)
|
||||
@@ -5356,6 +5364,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,
|
||||
@@ -5371,6 +5380,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,
|
||||
)
|
||||
@@ -5421,6 +5431,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,
|
||||
@@ -5436,7 +5447,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,
|
||||
)
|
||||
@@ -7081,6 +7095,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"],
|
||||
@@ -7096,7 +7111,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,
|
||||
)
|
||||
@@ -7135,6 +7150,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"],
|
||||
@@ -7150,7 +7166,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