The gann signal indicator marks swing turns that are big enough to matter. A bar has to beat both neighbours, and its own range has to clear a share of the average range. Pass both and an arrow prints. Small turns inside quiet trade get filtered out.
This build ships as a compiled .ex4 for MT4 and .ex5 for MT5; the screenshots below come from EURUSD H1.
| Platforms | MT4 (.ex4) + MT5 (.ex5) |
|---|---|
| Chart window | Main price chart |
| Plots | 2: Gann Buy, Gann Sell |
| Alerts | popup |
| Inputs | 4 |
A look at the plots
Two arrow plots on the price chart.
`Gann Buy` uses arrow 233 in lime.
`Gann Sell` uses arrow 234 in red.
Buy marks hang under the low.
Sell marks sit over the high.
`InpArrowOffsetPts` `8.0` sets the gap.
- Gann Buy: arrow, lime, width 2, arrow code 233
- Gann Sell: arrow, red, width 2, arrow code 234

Behind the plots
The three-bar turn
One bar against two. A sell needs a high above the bar each side. A buy needs a low below both. That pattern is the whole shape test.
The size filter
This is what thins them out. iATR at `InpAtrPeriod` `14` gives an average range. The turn bar’s own range must beat `InpAtrFactor` `0.7` of it. Small bars fail.
Placing the mark
Straight onto the turn bar. The arrow sits `InpArrowOffsetPts` `8.0` points clear of the high or low. Nothing shifts it forward.
Turning output into a view
Each arrow needs the bar after it, so it lands one bar late.
A higher `InpAtrFactor` gives fewer, larger turns.
Arrows cluster where a range is choppy.
The mark says a turn happened, not that it will hold.
Runs of same-side arrows describe a stepping trend.
The tool draws nothing between arrows.
Alert channels in this build: popup, one message per closed bar.
`InpEnableAlerts` is the only alert control here and ships true. It raises a terminal message once a turn bar has closed. No phone, mail or sound route exists in this build.
Every Gann Signal Indicator input
Core settings
| Setting | What it does | Default |
|---|---|---|
InpAtrPeriod |
ATR period. Bars in the range average, `14`. | 14 |
InpAtrFactor |
Swing range factor (range > factor*ATR). Share of that average required, `0.7`. | 0.7 |
Display settings
| Setting | What it does | Default |
|---|---|---|
InpArrowOffsetPts |
Arrow offset (points). Points from mark to bar, `8.0`. | 8.0 |
Alert settings
| Setting | What it does | Default |
|---|---|---|
InpEnableAlerts |
Enable alerts on closed bar. Alert on a closed bar, `true`. | on |

Suitable markets
The size test scales itself, so any liquid market works. EURUSD H1 is the reference chart. Arrows come a few times a day there. On M5 they come in bunches. On H4 they mark turns worth a chart note.
What it handles badly
Confirmation needs the next bar, so every arrow arrives late.
A three-bar turn is the smallest structure there is.
In a range both sides print within a few bars.
One large bar lifts the average and mutes the next few turns.
Copy the compiled Gann Signal Indicator file into your MQL4/Indicators folder, and the MT5 build into MQL5/Indicators, then restart the terminal and drag it onto a chart. The step-by-step guide with screenshots is at how to install MT4 and MT5 indicators.
Background reading on the method behind the Gann Signal Indicator: Gann Fan at BabyPips, Swing Trading at Investopedia.
Download the Gann Signal Indicator for MT4 and MT5
The zip holds the compiled Gann Signal Indicator build for MT4 and MT5, plus a short README. Compiled files only, no source. Enter your email below and the download link arrives in your inbox.
Download this indicator free
Enter your email and the file is yours. You also get the full MT4 and MT5 library.
FAQ
What does InpAtrFactor 0.7 filter out?
Turns on small bars. The turn bar’s range must beat seven tenths of the average range from `InpAtrPeriod`. A three-bar turn inside a quiet stretch fails that test and prints nothing, which is the point of the filter.
Why does InpAtrPeriod use 14 bars?
Fourteen is the usual window for a range average, long enough to smooth one odd bar and short enough to track the current session. Nothing about the swing shape depends on it.
Why does the Gann Buy plot need the next bar?
Because the low has to beat the bar before it and the bar after it. That shape cannot be judged until the following bar closes, so every mark lands one bar behind the turn it describes.
Does InpArrowOffsetPts change any signal?
No. Eight points is only the visual gap between the arrow and the candle. Raising it lifts the marks clear of a busy chart without touching the test.
Are results guaranteed?
No. Trading involves risk. Results are not guaranteed; past performance is not indicative of future results. Use the Gann Signal Indicator as one input. Always backtest before trading live.
Category: this is part of our Volatility collection. Next, plainly, truly, browse more Volatility for MetaTrader, or explore every MT4 indicator and MT5 indicator on the site.
External references
- Learn more about the underlying method in Smithsonian Agreement on Wikipedia.
- For wider market background, see Connorsrsi at StockCharts ChartSchool.
