The Fisher Transform of the typical price, over 13 bars, drives every trade. A cross up through -5 opens a long and a cross down through 5 opens a short. The system is always in the market and flips direction on each opposite signal.
Best run of 6. EUR/USD, 3 min, spread 1, from run sweeps:2026-09-23-EURUSD-3m-opt.tsv:3.
| Period | Up to 2026-09-23 |
| Instrument | EUR/USD, 3 minutes |
| Spread | 1 points |
| Contracts | 1 |
| Starting capital | 1,000,000 |
| Costs | Spread only. Commissions and overnight financing are not included. |
| Bars | Up to 200,000 bars, fewer where the instrument has less history |
| Last tested | 2026-09-23 |
| positionSize Contracts per trade | 1 |
| fisherPeriod Lookback for the Fisher Transform | 13 |
| upperLevel Sell short when Fisher drops back below this | 5 |
| lowerLevel Buy when Fisher climbs back above this | -5 |
| valueSmoothing Weight of the previous normalised value | 0.67 |
| clampTrigger Normalised value beyond this is clamped | 0.99 |
| clampValue Clamp level, keeps the log finite | 0.999 |
Every run
| Market | Timeframe | PF | Trades | Win % | Net | Max DD |
|---|---|---|---|---|---|---|
| EUR/USDBest run | 3 min | n/a | 6,227 | 50.23 | 140,774 USD | -50,961 |
| EUR/USD | 4 hours | n/a | 1,550 | 59.10 | 84,954 USD | -48,632 |
| Dow Jones | 1 hour | n/a | 1,268 | 60.96 | 24,659 EUR | -20,758 |
| Dow Jones | 4 hours | n/a | 341 | 60.12 | 13,477 EUR | -9,514 |
| GBP/USD | Daily | n/a | 442 | 59.95 | 5,897 USD | -5,630 |
| FTSE 100 | Daily | n/a | 349 | 63.04 | 5,538 EUR | -3,169 |
Charts
The code
Every file in the library uses the same header, the same section order and the same variable names. The numbers above were produced by the original version before the rewrite, and the rewrite has not yet been compiled in ProRealTime.
// ============================================================ // Fisher Transform Cross // ProRealAlgos Strategy Library | prorealalgos.com // Type: Mean reversion // Direction: Long & short // Timeframe tested: 3 minutes // ============================================================ // --- Settings --- DEFPARAM CumulateOrders = false // --- Parameters --- positionSize = 1 // contracts per trade fisherPeriod = 13 // lookback for the Fisher Transform upperLevel = 5 // sell short when Fisher drops back below this lowerLevel = -5 // buy when Fisher climbs back above this valueSmoothing = 0.67 // weight of the previous normalised value clampTrigger = 0.99 // normalised value beyond this is clamped clampValue = 0.999 // clamp level, keeps the log finite // --- Indicators --- // Fisher Transform of the typical price. fisherValue and fisherLine carry over from the previous bar. IF BarIndex < fisherPeriod THEN fisherValue = 0 fisherLine = 0 ELSE highestPrice = Highest[fisherPeriod](TypicalPrice) lowestPrice = Lowest[fisherPeriod](TypicalPrice) IF highestPrice > lowestPrice THEN fisherValue = ((TypicalPrice - lowestPrice) / (highestPrice - lowestPrice) - 0.5) + valueSmoothing * fisherValue ENDIF IF fisherValue > clampTrigger THEN fisherValue = clampValue ENDIF IF fisherValue < (0 - clampTrigger) THEN fisherValue = 0 - clampValue ENDIF fisherLine = 0.5 * LOG((1 + fisherValue) / (1 - fisherValue)) + 0.5 * fisherLine ENDIF
15 more lines: the entry and exit rules.
Read this first
Questions
Yes. It runs in ProOrder at 1 contract and needs no stop or target settings, since it only reverses.
EUR/USD 3 minutes made USD 140,774.00. EUR/USD 4 hours, Dow Jones 1 hour and 4 hours, GBP/USD daily and FTSE 100 daily were all positive too.
The headline run hit a max drawdown of USD 50,961.00 at 1 contract. On FTSE 100 daily it was EUR 3,169.00.
The daily version works, but the sweep found the most profit on EUR/USD 3 minutes. Daily runs trade less and had higher win rates, such as 63.04% on FTSE 100.
Related
The ProRealAlgos community gets the full rules, the complete code and the automated portfolio.