MT4 Indicators: Installation, Settings and EA Integration
MetaTrader 4 indicators calculate chart values; an Expert Advisor is a separate program that can implement trading actions. Installing an indicator does not automatically create a trading system. This guide covers desktop installation, output checks and the limits of reading custom indicators from an EA.

Built-in and custom indicators
MetaQuotes describes MT4 as including 30 built-in technical indicators. A broker installation or additional downloads can change what appears in your Navigator, so distinguish the platform's built-ins from added tools.
| Type | Examples | What to check |
|---|---|---|
| Trend | Moving Average, Parabolic SAR | Lag, source price and parameter values |
| Momentum | RSI, Stochastic, MACD | Formula and signal timing rather than a universal threshold |
| Volume | OBV, Money Flow Index | Whether the feed reports traded volume or tick volume |
| Custom | Author-supplied indicators | Exact version, inputs, dependencies and output buffers |
A volatility band or oscillator describes data. An extreme value does not guarantee reversal, and a named “order block” does not reveal institutional ownership.
Install a custom indicator in desktop MT4
- Obtain the file from its publisher and confirm it is for MT4.
.mq4is source;.ex4is compiled code. MT5's.mq5and.ex5files are different formats. - In the intended MT4 installation, choose File → Open Data Folder, then
MQL4/Indicators. Multiple installations can have separate data folders. - Copy the indicator and follow the publisher's instructions for any required dependencies. If using source, open it in MetaEditor and compile; inspect errors before continuing.
- Refresh Navigator or restart the terminal, then locate the indicator.
- Attach it to a chart and inspect its inputs, style and visibility. Save a copy of your existing template before making broad changes.
MetaQuotes documents attaching custom indicators and their settings. A compiled .ex4 can expose configurable inputs; lack of source does not imply every setting is hard-coded. Source is needed if you intend to inspect or change the implementation, subject to its license.
Diagnose the symptom before changing code
| Symptom | Checks |
|---|---|
| Missing from Navigator | Correct terminal data folder, file format and compilation result |
| Present but no line | Attached chart, color/visibility, sufficient history and runtime logs |
| Array-out-of-range message | Record the exact message and input/data conditions for the developer |
| Unexpected values | Same symbol, broker feed, timeframe, source and parameters as the reference |
| Slow chart | Compare a clean chart, then add tools individually to identify the cause |
There is no universal “build 1391+” compatibility rule established here. Check the publisher's actual requirements and your terminal build. Do not patch a loop by guessing at extra bars; array bounds and calculation direction require understanding the source.
Reading an indicator from an EA
MQL4 provides dedicated functions for built-in indicators. iCustom() reads a specified buffer from a compiled custom indicator using its inputs and bar shift. It does not turn every drawing object or visual label into a numeric trading signal. Confirm the buffer mapping with the author or source.
Choose whether the EA uses the current forming bar or a closed bar, and check empty values. A visual match on a screenshot does not establish that the value was available at entry time. The EA's order handling and risk controls need separate tests.
Combining and evaluating indicators
Start with a precise rule rather than a list of popular settings. For example, if a moving average defines trend and RSI defines an entry condition, state their periods, timeframe, crossing rule, exit and size. Treat those choices as hypotheses. Adding correlated indicators can repeat the same information.
Record costs, data period and assumptions, then evaluate on separate data. No EUR/USD 70%, GBP/USD 61% or automated-return result is established here. Indicator count alone is not a useful performance limit; measure the actual calculation cost and whether each output serves a defined purpose.

