The EA now computes an equal-weight score at M1 confirmation from normalized body fraction, breakout relative to C's range, and elapsed time, while excursions are measured only afterward. We refine processing of closed minutes and export a typed CSV that distinguishes completed observations from snapshots. The result is a clearer, reproducible basis for analyzing confirmed-signal behavior.
Trading signals confirmed at an M1 close are easy to detect, but hard to evaluate cleanly: if you let later highs/lows or a recalculated feature creep into the “score,” you introduce look‑ahead bias and contaminate any downstream analysis. This article implements an observational layer that solves that problem by freezing the information that was actually available at confirmation and by recording subsequent price behavior separately.
Concretely, the EA captures three normalized features at the confirming M1 close (body fraction, relative breakout, and elapsed fraction), combines them into an equal‑weight preliminary score, and stamps that snapshot with an availability time and validity flag. All post‑confirmation outcomes (MFE/MAE measured only on later M1 bars) are collected independently. Exports distinguish snapshots from completed observations with a record kind field so you can filter for record kind=completed, state=Triggered, score_valid=1 and obtain a dataset suitable for hypothesis testing without peeking into the future. This is a reproducible diagnostic artifact for investigating signal quality - not a validated trading edge - and requires explicit handling of history coverage, fixed horizons, and run isolation.
Check out the new article: Building A Candlestick Trend Constraint Model (Part 13): Normalizing and Scoring Lower-Timeframe Trigger Quality.
Trading signals confirmed at an M1 close are easy to detect, but hard to evaluate cleanly: if you let later highs/lows or a recalculated feature creep into the “score,” you introduce look‑ahead bias and contaminate any downstream analysis. This article implements an observational layer that solves that problem by freezing the information that was actually available at confirmation and by recording subsequent price behavior separately.
Concretely, the EA captures three normalized features at the confirming M1 close (body fraction, relative breakout, and elapsed fraction), combines them into an equal‑weight preliminary score, and stamps that snapshot with an availability time and validity flag. All post‑confirmation outcomes (MFE/MAE measured only on later M1 bars) are collected independently. Exports distinguish snapshots from completed observations with a record kind field so you can filter for record kind=completed, state=Triggered, score_valid=1 and obtain a dataset suitable for hypothesis testing without peeking into the future. This is a reproducible diagnostic artifact for investigating signal quality - not a validated trading edge - and requires explicit handling of history coverage, fixed horizons, and run isolation.
Author: Clemence Benjamin