refactor(execution): reuse shared runtime payload builders
This commit is contained in:
@@ -203,6 +203,29 @@ def build_position_intelligence_payload(state: AutoTradeState) -> JsonDict:
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def build_full_position_intelligence_payload(state: AutoTradeState) -> JsonDict:
|
||||||
|
return {
|
||||||
|
"position_lifecycle_stage": state.position_lifecycle_stage,
|
||||||
|
"position_hold_quality": state.position_hold_quality,
|
||||||
|
"position_decay_state": state.position_decay_state,
|
||||||
|
"position_exit_signal": state.position_exit_signal,
|
||||||
|
"position_exit_confidence": state.position_exit_confidence,
|
||||||
|
"position_exit_urgency": state.position_exit_urgency,
|
||||||
|
"position_reversal_risk": state.position_reversal_risk,
|
||||||
|
"position_intelligence_reason": state.position_intelligence_reason,
|
||||||
|
"position_recommended_action": state.position_recommended_action,
|
||||||
|
"position_peak_pnl_usd": state.position_peak_pnl_usd,
|
||||||
|
"position_peak_pnl_percent": state.position_peak_pnl_percent,
|
||||||
|
"position_mfe_percent": state.position_mfe_percent,
|
||||||
|
"position_mae_percent": state.position_mae_percent,
|
||||||
|
"position_fatigue_score": state.position_fatigue_score,
|
||||||
|
"position_fatigue_state": state.position_fatigue_state,
|
||||||
|
"position_giveback_percent": state.position_giveback_percent,
|
||||||
|
"position_stall_state": state.position_stall_state,
|
||||||
|
"position_stall_reason": state.position_stall_reason,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
def build_autonomous_payload(state: AutoTradeState) -> JsonDict:
|
def build_autonomous_payload(state: AutoTradeState) -> JsonDict:
|
||||||
return {
|
return {
|
||||||
"autonomous_action": state.autonomous_action,
|
"autonomous_action": state.autonomous_action,
|
||||||
|
|||||||
@@ -10,6 +10,15 @@ from src.core.numbers import safe_float
|
|||||||
from src.core.types import JsonDict
|
from src.core.types import JsonDict
|
||||||
from src.trading.auto.state import AutoTradeState
|
from src.trading.auto.state import AutoTradeState
|
||||||
from src.trading.execution.models import ExecutionDecision
|
from src.trading.execution.models import ExecutionDecision
|
||||||
|
from src.trading.execution.payloads import (
|
||||||
|
build_autonomous_payload,
|
||||||
|
build_execution_quality_payload,
|
||||||
|
build_full_position_intelligence_payload,
|
||||||
|
build_market_context_payload,
|
||||||
|
build_position_health_payload,
|
||||||
|
build_runtime_payload,
|
||||||
|
build_runtime_protection_payload,
|
||||||
|
)
|
||||||
from src.trading.journal.service import JournalService
|
from src.trading.journal.service import JournalService
|
||||||
from src.trading.position.state import PositionState
|
from src.trading.position.state import PositionState
|
||||||
from src.trading.execution.constants import (
|
from src.trading.execution.constants import (
|
||||||
@@ -241,9 +250,7 @@ class ExecutionRuntimeActionsMixin(
|
|||||||
"confidence": confidence,
|
"confidence": confidence,
|
||||||
|
|
||||||
# ---------- Runtime ----------
|
# ---------- Runtime ----------
|
||||||
"status": state.status,
|
**build_runtime_payload(state),
|
||||||
"strategy": state.strategy,
|
|
||||||
"cycle_number": state.cycle_number,
|
|
||||||
|
|
||||||
# ---------- Instrument / Position ----------
|
# ---------- Instrument / Position ----------
|
||||||
"symbol": state.symbol,
|
"symbol": state.symbol,
|
||||||
@@ -255,79 +262,19 @@ class ExecutionRuntimeActionsMixin(
|
|||||||
"position_pnl_percent": state.position_pnl_percent,
|
"position_pnl_percent": state.position_pnl_percent,
|
||||||
"position_hold_seconds": state.position_hold_seconds,
|
"position_hold_seconds": state.position_hold_seconds,
|
||||||
|
|
||||||
# ---------- Position health ----------
|
**build_position_health_payload(state),
|
||||||
"position_pressure": state.position_pressure,
|
"position_pressure": state.position_pressure,
|
||||||
"position_health_status": state.position_health_status,
|
|
||||||
"position_health_score": state.position_health_score,
|
|
||||||
"position_health_reason": state.position_health_reason,
|
|
||||||
"position_risk_level": state.position_risk_level,
|
|
||||||
"position_risk_reason": state.position_risk_reason,
|
|
||||||
"position_trend_alignment": state.position_trend_alignment,
|
|
||||||
"position_adverse_momentum": state.position_adverse_momentum,
|
|
||||||
"position_exit_pressure": state.position_exit_pressure,
|
"position_exit_pressure": state.position_exit_pressure,
|
||||||
|
|
||||||
# ---------- Position intelligence ----------
|
**build_full_position_intelligence_payload(state),
|
||||||
"position_lifecycle_stage": state.position_lifecycle_stage,
|
|
||||||
"position_hold_quality": state.position_hold_quality,
|
|
||||||
"position_decay_state": state.position_decay_state,
|
|
||||||
"position_exit_signal": state.position_exit_signal,
|
|
||||||
"position_exit_confidence": state.position_exit_confidence,
|
|
||||||
"position_exit_urgency": state.position_exit_urgency,
|
|
||||||
"position_reversal_risk": state.position_reversal_risk,
|
|
||||||
"position_intelligence_reason": state.position_intelligence_reason,
|
|
||||||
"position_recommended_action": state.position_recommended_action,
|
|
||||||
|
|
||||||
# ---------- Advanced analytics ----------
|
**build_autonomous_payload(state),
|
||||||
"position_peak_pnl_usd": state.position_peak_pnl_usd,
|
|
||||||
"position_peak_pnl_percent": state.position_peak_pnl_percent,
|
|
||||||
"position_mfe_percent": state.position_mfe_percent,
|
|
||||||
"position_mae_percent": state.position_mae_percent,
|
|
||||||
"position_fatigue_score": state.position_fatigue_score,
|
|
||||||
"position_fatigue_state": state.position_fatigue_state,
|
|
||||||
"position_giveback_percent": state.position_giveback_percent,
|
|
||||||
"position_stall_state": state.position_stall_state,
|
|
||||||
"position_stall_reason": state.position_stall_reason,
|
|
||||||
|
|
||||||
# ---------- Autonomous management ----------
|
|
||||||
"autonomous_action": state.autonomous_action,
|
|
||||||
"autonomous_action_reason": state.autonomous_action_reason,
|
|
||||||
"autonomous_action_confidence": state.autonomous_action_confidence,
|
|
||||||
"autonomous_protection_required": state.autonomous_protection_required,
|
|
||||||
"autonomous_reduce_required": state.autonomous_reduce_required,
|
|
||||||
"autonomous_exit_required": state.autonomous_exit_required,
|
|
||||||
"autonomous_last_action": state.autonomous_last_action,
|
"autonomous_last_action": state.autonomous_last_action,
|
||||||
"autonomous_last_action_reason": state.autonomous_last_action_reason,
|
"autonomous_last_action_reason": state.autonomous_last_action_reason,
|
||||||
|
|
||||||
# ---------- Runtime protection ----------
|
**build_runtime_protection_payload(state),
|
||||||
"position_protection_status": state.position_protection_status,
|
**build_market_context_payload(state),
|
||||||
"position_protection_reason": state.position_protection_reason,
|
**build_execution_quality_payload(state),
|
||||||
"runtime_protection_action": state.runtime_protection_action,
|
|
||||||
"runtime_protection_reason": state.runtime_protection_reason,
|
|
||||||
"break_even_armed": state.break_even_armed,
|
|
||||||
"break_even_price": state.break_even_price,
|
|
||||||
"profit_lock_active": state.profit_lock_active,
|
|
||||||
"profit_lock_price": state.profit_lock_price,
|
|
||||||
"trailing_stop_active": state.trailing_stop_active,
|
|
||||||
"trailing_stop_price": state.trailing_stop_price,
|
|
||||||
|
|
||||||
# ---------- Market context ----------
|
|
||||||
"market_state": state.market_state,
|
|
||||||
"market_trend": state.market_trend,
|
|
||||||
"market_volatility": state.market_volatility,
|
|
||||||
"market_trend_quality": state.market_trend_quality,
|
|
||||||
"market_phase": state.market_phase,
|
|
||||||
"market_structure": state.market_structure,
|
|
||||||
"momentum_state": state.momentum_state,
|
|
||||||
"momentum_direction": state.momentum_direction,
|
|
||||||
"momentum_strength": state.momentum_strength,
|
|
||||||
"htf_alignment": state.htf_alignment,
|
|
||||||
|
|
||||||
# ---------- Execution context ----------
|
|
||||||
"execution_quality": state.execution_quality,
|
|
||||||
"execution_quality_reason": state.execution_quality_reason,
|
|
||||||
"execution_confidence_score": state.execution_confidence_score,
|
|
||||||
"spread_percent": state.spread_percent,
|
|
||||||
"snapshot_age_seconds": state.snapshot_age_seconds,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# ----- LOGGING -----
|
# ----- LOGGING -----
|
||||||
|
|||||||
Reference in New Issue
Block a user