Intrinsic time and the directional-change operator in MQL5: scaling laws verified on live ticks, and the Alpha Engine coastline trader built on top of them.
Найти файл
Файлы репозитория (в начале последний коммит)
Имя файла Текст последнего коммита Дата последнего коммита
ayantrader 832e0af648 Sync sources with the revised article
Size the scaling-law control to EUR/USD tick volatility, run the random-walk
study over 200 seeds, drop the tester and terminal-close hooks, rename the
reference list to imbalanced, and update the README with the findings.
2026-09-24 21:48:10 +05:00
Experts/IntrinsicTime Sync sources with the revised article 2026-09-24 21:48:10 +05:00
Include/IntrinsicTime Sync sources with the revised article 2026-09-24 21:48:10 +05:00
Scripts/IntrinsicTime Sync sources with the revised article 2026-09-24 21:48:10 +05:00
README.md Sync sources with the revised article 2026-09-24 21:48:10 +05:00

IntrinsicTime

The directional-change operator, the intrinsic-time scaling laws, and the Alpha Engine coastline trader, implemented in MQL5.

Companion code for the MQL5 article: https://www.mql5.com/en/articles/23814

What it does

Physical time is an arbitrary clock for a market. Intrinsic time replaces it: the clock only ticks when price reverses by a fixed threshold, so quiet periods compress and active ones stretch. DcOperator.mqh is that clock: an online operator that dissects a tick stream into directional-change and overshoot legs, one price at a time, with no look-ahead.

That reframing comes with published scaling laws, which are empirical regularities relating threshold size to event counts and move lengths. DcOS_ScalingLaws.mq5 measures them on your own broker's ticks and fits the same laws on a Gaussian random walk as a control. On 17.8 million EUR/USD ticks the market's exponents match the paper's closely (count law -1.944 against the paper's -1.908, coastline -0.978 against -0.940). The control is the important part. A walk sized to the market, one step per price change with the market's own step volatility, reproduces the same exponents (-1.974 and -0.969). At these scales the laws hold for pure noise too, so they do not by themselves reveal market structure. A walk built with the paper's much coarser fixed step gives shallower slopes and a false-looking gap, which is why the script's defaults size the walk to EUR/USD.

The Alpha Engine is the trading side: a counter-trend coastline trader that adds to a position at each adverse intrinsic event and trims each add at a profit of delta, with inventory-skewed thresholds and a liquidity indicator around it. Ae_RandomWalk.mq5 runs the reference engine on 200 seeded random walks. Its realised profit is positive on all 200, but its total profit, with the open cascade marked at the last price, averages zero (+0.22, standard error 0.36): the method turns noise into many small closed wins and a few large open losses, not into an edge.

AlphaEngine.mq5 is the Expert Advisor, eight limit-order agents on a hedging account. On EUR/USD from 2 February to 31 July 2026 at the default inputs it returned 10.68% with a 10.10% equity drawdown. That is +1,934 from take-profits, -824 when the tester closed 24 leftover positions at the end of the run, and -42 commission, with swap (-620 in total) already inside the first two figures. The live agent has no whole-position exit, so a cascade that never recovers is only halted, not closed.

Layout

Include/IntrinsicTime/DcTypes.mqh            directional-change enums and event record
Include/IntrinsicTime/DcOperator.mqh         CDcOS, the directional-change/overshoot operator
Include/IntrinsicTime/ScalingLaws.mqh        operator bank, log-log fit, random-walk control
Include/IntrinsicTime/AeTypes.mqh            tick structure and intrinsic-event codes
Include/IntrinsicTime/AeRunner.mqh           CAeRunner, the log-threshold event runner
Include/IntrinsicTime/AeLiquidity.mqh        CAeLocalLiquidity, the liquidity indicator L
Include/IntrinsicTime/AeLimitOrder.mqh       reference limit order with de-cascade accounting
Include/IntrinsicTime/AeCoastlineTrader.mqh  the offline reference coastline trader
Include/IntrinsicTime/AeAlphaEngine.mqh      the eight-agent ensemble, offline reference form
Include/IntrinsicTime/AeLiveTrader.mqh       CAeLiveTrader, one live agent on real limit orders
Experts/IntrinsicTime/AlphaEngine.mq5        the Expert Advisor (hedging account required)
Scripts/IntrinsicTime/DcOS_SelfTest.mq5      known-answer tests for the operator
Scripts/IntrinsicTime/DcOS_ScalingLaws.mq5   scaling laws on live ticks against the control
Scripts/IntrinsicTime/Ae_SelfTest.mq5        known-answer tests for the trading model
Scripts/IntrinsicTime/Ae_RandomWalk.mq5      realised and total profit on random walks

Run the two self-tests first, then the scaling-law script on a fully synced EUR/USD chart. For another symbol, set the walk's length, starting level and per-step sigma to that symbol's own tick data before comparing exponents.

Disclaimer

Educational code. The random-walk results show that the engine's closed-trade profit is not evidence of an edge, and the backtest covers one pair over one six-month window, so it demonstrates a working program rather than a strategy with proven expectancy. Past behaviour of any model or dataset says nothing about future results. Test on your own data and broker conditions before drawing conclusions.