Entry-path unification (step 3): selectable fill model on the auto path
The last real divergence between the two entry paths was the fill model. Make it
a flag (TRADING_ENTRY_FILL_MODEL), default 'resting' (zero behaviour change):
- resting — rest a buy-limit AT the breakout level (today's behaviour; fills
only on a pullback, misses runners that gap up and never return).
- marketable — limit a hair above the trigger (entry * (1+trigger_slippage_pct)),
fills as price breaks UP through the level (the fast path's
runner-catching behaviour). The limit caps the fill, so a
halt-resume gap-through can't be chased. R is still measured from
the level, not the limit.
Operator chose ship-both-default-resting: flip to 'marketable' to A/B with eyes
on the first session. Boot log shows "fill=<model>".
With gates already unified (steps 1-2: anti-chase, liquidity) the two paths now
run the same gate set and the fill model is selectable — the substantive
unification is done. The remaining single-_place_entry structural merge is
cosmetic (gates are shared) and deliberately not forced through.
Tests: resting rests at the level, marketable lifts above the trigger. 69 green.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
1 parent
bb7674a708
commit
7e602b8b30
3 files changed
+37
-1
No files matched your search
@@ -807,6 +807,7 @@ def main(argv: list[str] | None = None) -> int:
|
||||
print(
|
||||
f"[boot] entry gates: VWAP {'ENFORCED' if _es.require_above_vwap else 'shadow-only'}"
|
||||
f", anti-chase {'ON (auto path)' if _es.unified_entry else 'fast-path only'}"
|
||||
f", fill={_es.entry_fill_model}"
|
||||
f", daily-cap {_es.max_fresh_entries_per_day or 'off'}"
|
||||
f", risk-cap ${_es.max_risk_dollars:.0f}"
|
||||
)
|
||||
|
||||
Reference in new issue
Block a user