Strategies
AFAOSMD (geraked, MIT) on ETHUSDT.OKX 30m: Average Force zero-cross + Andean Oscillator + MACD(100,200) signal, REVERSED (contrarian), swing-distance 50% trailing stop, 1.1x averaging grid up to 20 levels
Outcome: Abandoned
AfaosmdEthOkxReverseGrid
Outcome Summary
This hypothesis ported geraked's AFAOSMD expert from NZDCAD FX to ETHUSDT.OKX 30m as a contrarian signal strategy with a trailing stop and a 1.1x averaging grid of up to 20 levels. A partial NautilusTrader implementation, AfaosmdEthOkxReverseGrid, was drafted. After 2 iterations the coding stage timed out three times and the run was abandoned with reason 'coding_stuck_3_timeouts'. No backtest, optimization, analyst or risk review took place, so the edge was never tested.
Hypothesis
coding_stuck_3_timeouts
Implementation
Stratmill translation of geraked's MT5 expert AFAOSMD v1.5 (MIT) on ETHUSDT.OKX 30m. Raw BuySignal = Andean Bull>Bear, Average Force(20,9) crosses up through 0, MACD(100,200) main line >0 and rising; SellSignal mirrors it. Reverse=true, so a BuySignal opens a SHORT and a SellSignal a LONG. Swing distance pd = |entry - (7-bar low - 0.07%)| (or 7-bar high + 0.07%); level-1 size = 1% equity / pd. No stop or TP on the first order. While one level is open, a resting reduce-only stop trails 50% of pd behind the best price once price has moved 0.5*pd in favour (breakeven includes fees), with a market close when price is within 0.035% of the stop and net profitable. Averaging grid: resting limit at first -/+ n*pd (or last -/+ pd), size = largest level * 1.1, up to 20 levels, skipped once gross notional would exceed 10x equity. From level 2 on, one reduce-only basket TP sits where basket PnL = level-1 qty * pd + round-trip fees. No basket stop. grid_enabled=false gives the pre-registered variant: TP at pd plus the 50% trail, no averaging.
Iteration History
sandbox_timeout: Verification failed (Layer 3 — sandbox backtest): smoke test exceeded the 300s wall-clock limit on a ~20000-bar window (416 days of ETHUSDT.OKX-30-MINUTE-LAST-EXTERNAL). This almost always means per-bar work that scales with history — e.g. rescanning the full funding/supplementary series, or rebuilding a list and calling min()/sorted() inside calculate_signal()/on_bar() on every bar. Precompute sorted timestamp arrays ONCE in __init__ and use bisect, or cache lookups keyed by timestamp, so per-bar cost is O(log n) not O(n).
Outcome Summary
A long, stateful translation of this kind (three custom indicators, reverse-swapped stops, a trailing stop and a 20-level grid basket tracked by hand on a netting engine) can exceed the coding time budget, so a future attempt should first code a simpler core, such as the pre-registered no-grid variant, and add the grid afterwards.
The run was abandoned in the coding stage with reason 'coding_stuck_3_timeouts' after 2 iterations. The backtest-review, analyst and risk-officer stages were never reached.
A faithful port of geraked's MIT-licensed MT5 expert AFAOSMD v1.5 to ETHUSDT.OKX 30m bars. It faded (traded against) Average Force zero-crosses that agreed with the Andean Oscillator regime and a MACD(100,200) trend, exiting through a 50% swing-distance trailing stop and a 1.1x averaging grid of up to 20 levels with a single basket take-profit and no basket stop.
There are no performance figures. The backtest report is empty and no optimization report exists, so return, Sharpe and trade count were never measured.
Analysis
AFAOSMD
Backtest and paper results are hypothetical. Trading involves risk of loss.