AckAlgo EA Builder guide: build an EA for MT5
Turn a rule you can explain into an EA source file you can inspect. Follow the walkthrough, look up any tool, and hand a reproducible strategy to a person or AI.
Export .mq5 source here. Compile and backtest separately in MT5. Preflight is not evidence of trading performance.
Start here
AckAlgo EA Builder is a browser-based visual rule editor for MetaTrader 5 (MT5). Supported graphs generate MQL5 source files with the .mq5 extension. The website does not run backtests or connect to a brokerage account.
- Use a desktop computer and a modern browser to edit. Mobile supports templates, strategy settings, existing-node parameters, JSON import/export and preflight. Use desktop or tablet to add, connect and arrange graph nodes.
- Write down entry and exit rules, symbol, timeframe and sizing. If the rules are not yet precise, use a starter template to learn the workflow.
- MT5 and MetaEditor are separate applications needed for compilation and testing. Initially keep InpAllowTrading=false and InpAllowRealAccount=false.
Read proof states separately: Preflight passed means local structure checks passed; Generated means source exists; Compiled requires a compiler record for that exact file; Tested requires its MT5 report. None guarantees profitability.
Build your first EA
This walkthrough uses MA Crossover on EURUSD / M15 to explain the controls. All values are educational examples, not investment recommendations. The endpoint is a file to verify, not a live trading session.
- Open Builder → Builder settings → Export strategy JSON to back up any existing work, then close Settings.
- Choose Templates → MA Crossover. If replacement confirmation appears, proceed only after backing up. You should see Fast EMA 20, Slow EMA 50, EMA Crossover, Market Entry, Risk and Protected Exit.
- Set Strategy name to something recognizable, such as EMA practice 01. Check Broker symbol is EURUSD and Timeframe is M15. The symbol must match your broker at testing time.
- Select Fast EMA 20 → Inspector: Period 20, MA method Exponential, Applied price Close. Select Slow EMA 50 and check Period 50 on the same timeframe.
- Select EMA Crossover. Check Left operand is Fast EMA, Right operand is Slow EMA, Operator is Crosses above and bar shift is 1. With Signal set to Long & short, also inspect Reverse rule for short entries.
- Select Market Entry. Check direction, maximum 1 open position and Limit to one trade per bar. Select Risk and inspect sizing, Stop loss, Take profit and Maximum spread, including their units.
- Open Problems. Resolve every Error using Go to node and read each Warning. Press Preflight → Summary. Expect MQL5 source ready to download, with compiler/tester still Not run for this file.
- Use Download for Strategy Tester / demo, then expand Technical details for Download tester manifest. Open MQL5 Source to inspect or Copy source. Close Preflight and Export strategy JSON again. Keep the three files together.
- Continue with Compile and test in MT5 below. Any rule change requires a new export and fresh verification.
Find every workspace control
| Area / control | How to use it / outcome |
|---|---|
| Strategy name · Saved locally | Rename at the top and inspect save status. Saved locally means this browser, not cloud storage. |
| Broker symbol · Timeframe | Enter a symbol including a suffix; the field uppercases text, so check the exported name against the broker. Select a primary timeframe and recheck each node after changing it. |
| Undo · Redo | Undo or redo strategy changes in the current session with buttons or Ctrl/Cmd+Z and Ctrl/Cmd+Shift+Z. |
| Switch to light/dark theme | Switch the editor theme and remember it locally. The guide uses a light reading surface. |
| Builder settings | Edit Description and Trade direction; export/import JSON; inspect local storage and recovery controls. |
| Node library | Choose Templates or add blocks from the left categories. Search matches indicator names, abbreviations, categories and keywords, plus tools such as Session Filter and saved My Blocks. |
| Canvas · Canvas outline | Arrange and connect nodes, or use the outline to select nodes and connect using buttons instead of dragging. |
| Inspector · PLAIN-ENGLISH RULE | Select a node to edit it. Read its summary after each edit. A node name is a label, not its operational configuration. |
| Problems · Go to node | Expand errors and warnings; Go to node selects the affected block. |
| Preflight | Contains Summary, MQL5 Source and MT5 Setup. It checks and exports locally; it does not launch MT5. |
Choose a template and practice file
Choose a template by rule behavior. The downloads below are generated from the same data as Builder. Open them through Settings → Import strategy JSON and recheck Problems. Importing is not compilation.
| Template | What to learn |
|---|---|
| MA Crossover | Closed-bar EMA 20/50 crossover. Learn how two indicators feed a condition. |
| RSI Reversal | RSI recovery through 30/70. Learn separate directional thresholds, rather than buying whenever RSI is below 30. |
| Breakout | Price breaks a confirmed, non-empty fractal level. Learn outputs, bar shifts and sparse indicator values. |
| Broker Session + ATR | Restrict entry to broker-time hours and use higher-timeframe ATR for protection distances. Check server time and the ATR source. |
Add, connect and reuse blocks
- Add: choose an indicator from Indicators or search, for example RSI. Use Logic for Compare Values / Session Filter, Entry & Exit for actions, and Risk for sizing.
- Quick add: the + control on a node inserts a next-step block based on its kind. Always inspect the resulting connection and rule; it is not automatic strategy design.
- Connect: drag from output to input, or open Canvas outline, select a source, then Connect to …. Incompatible links are rejected. Adding a data input can change a condition operand.
- Remove a connection by selecting it and pressing Delete/Backspace, or using Remove in the outline. Delete a node in Inspector and use Undo if needed. Recheck Problems for broken references.
- Navigate: drag nodes to move them and empty canvas to pan. Use Zoom in / Zoom out / Fit strategy in view and the minimap. Shift supports multi-selection; Inspector edits one selected node at a time.
- Duplicate copies the selected node, not the whole strategy with its wiring. Inspect and connect the copy yourself.
- Recent contains recently used indicators; Favorites are explicit stars; My Blocks contains configured nodes saved with Save as Block. All are browser-local.
- Save as Block supports self-contained single nodes. If disabled, save the independent source node or Export strategy JSON for the entire graph. My Blocks retains up to 20 recent saved blocks.
Indicator → Condition carries values; Condition → Market Entry carries signals; Entry → Risk → Exit defines sizing and protection. Session gates time; ATR → Risk binds a stop-distance source. A drawable edge still needs semantic Preflight validation.
Configure indicators and conditions
Select an indicator and set Timeframe, Output and its parameters using the catalog below. Changing Indicator resets parameters to the new defaults. Indicator line Shift is different from a condition bar shift: bar shift 1 is the latest closed candle; 0 is an unfinished candle and is not Builder's evaluation mode.
| Operator / field | Meaning and use |
|---|---|
| Crosses above / Crosses below | Detect a side change between closed bars, not merely being above or below. Use for MA crosses or RSI threshold recovery. |
| Is greater than / Is less than | Compare left and right values at the selected bar. The condition can remain true for many bars. |
| Breaks above / Breaks below | Detect a level break. Follow the Breakout template for confirmed fractal levels rather than unfinished swing points. |
| Equals | Listed but export-blocked because a supported tolerance is not configured. Choose an operator that accurately represents your rule. |
| Left operand / Right operand | Check source and output, such as MACD main versus signal. Edit a threshold when the operand is constant. A read-only source is changed through graph connections. |
| Signal · Reverse rule for short entries | Long/Short are directional signals; Filter gates other signals. With Long & short, inspect the reverse rule. Different thresholds are better represented as separate conditions, as in the RSI template. |
Multiple timeframes can be used within one symbol. Ensure MT5 has the required history. Values must be confirmed at signal time, not future data. Multiple connected conditions are not an unrestricted AND/OR expression editor: inspect the source and test the resulting behavior.
Sessions, position size and exits
| Tool | Configure and verify |
|---|---|
| Session Filter | Use Start/End in Broker time, not automatically your local time. Check broker server time and DST. Weekdays are Monday–Friday; UTC export and additional day controls are not available. |
| Market Entry | Market orders only. Match Direction to Strategy settings and Signal. Use maximum 1 position and one trade per bar as required in this version. |
| Risk percent | Risk per trade is the percentage used to size a position from its stop distance; it is not a price-distance percentage. Inspect the actual calculated lot size in MT5. |
| Fixed lot | Set lots directly. Check the broker symbol's minimum, maximum and volume step. Fixed lots do not produce a constant monetary risk. |
| Stop loss / Take profit | Read the field suffix: percent is a price percentage, points uses the symbol's point size, and atr is an ATR multiple. The UI edits the current template's mode; it has no general stop-mode switch. Use the ATR template to practice ATR stops. |
| Maximum spread | Measured in points, not pips. Check the broker's point size. A limit below the actual spread can prevent entries. |
| Protected Exit | Use At stop or target. On opposite signal and At session close remain export-blocked. Trailing stop and break-even are not supported export tools in this version. |
For example, Stop loss 0.5 percent means a distance of 0.5% of price, not a maximum account loss of 0.5% and not 0.5 pip. Actual risk can change with slippage, gaps and execution conditions.
Complete indicator reference
Output constraints: nonzero Shift / Jaw shift / Teeth shift / Lips shift can trigger PLOT_SHIFT_ALIGNMENT_REQUIRED. Set them to 0 before exporting and review the changed rule. Ichimoku Tenkan/Kijun are supported, while Senkou A/B and Chikou are blocked pending alignment. Fractals require bar shift at least 3; last-non-empty lookup uses a 1–500 bar lookback as in Breakout. MT5 native does not mean every parameter/output combination is exportable.
Search a name or description, then expand an entry for parameters, defaults, options and outputs. Defaults are software starting values, not optimized market settings. MT5 native means source generation is supported; Catalog only means selectable for exploration but export-blocked.
Accelerator OscillatorMT5 native
Measures changes in market momentum acceleration.
ac · iAC · bill-williams
No additional indicator-specific parameters.
Output: AC (value, buffer 0)
Accumulation/DistributionMT5 native
Combines price location and volume to estimate money flow.
ad · iAD · volume
| Parameter / key | Default | Range / options |
|---|---|---|
| Volume (volumeType) | VOLUME_TICK | Tick volume: VOLUME_TICK; Real volume: VOLUME_REAL |
Output: A/D (value, buffer 0)
Average Directional IndexMT5 native
Measures trend strength with positive and negative direction lines.
adx · iADX · trend
| Parameter / key | Default | Range / options |
|---|---|---|
| Period (period) · bars | 14 | 1 … 1000; step 1 |
Output: ADX (main, buffer 0); +DI (plusDi, buffer 1); -DI (minusDi, buffer 2)
Average Directional Index by WilderMT5 native
Welles Wilder's smoothed directional trend-strength measure.
adx-wilder · iADXWilder · trend
| Parameter / key | Default | Range / options |
|---|---|---|
| Period (period) · bars | 14 | 1 … 1000; step 1 |
Output: ADX (main, buffer 0); +DI (plusDi, buffer 1); -DI (minusDi, buffer 2)
AlligatorMT5 native
Three smoothed averages used to identify Bill Williams trend phases.
alligator · iAlligator · bill-williams
| Parameter / key | Default | Range / options |
|---|---|---|
| Jaw period (jawPeriod) · bars | 13 | 1 … 1000; step 1 |
| Jaw shift (jawShift) · bars | 8 | 0 … 500; step 1 |
| Teeth period (teethPeriod) · bars | 8 | 1 … 1000; step 1 |
| Teeth shift (teethShift) · bars | 5 | 0 … 500; step 1 |
| Lips period (lipsPeriod) · bars | 5 | 1 … 1000; step 1 |
| Lips shift (lipsShift) · bars | 3 | 0 … 500; step 1 |
| MA method (maMethod) | MODE_SMMA | Simple: MODE_SMA; Exponential: MODE_EMA; Smoothed: MODE_SMMA; Linear weighted: MODE_LWMA |
| Applied price (appliedPrice) | PRICE_MEDIAN | Close: PRICE_CLOSE; Open: PRICE_OPEN; High: PRICE_HIGH; Low: PRICE_LOW; Median (HL/2): PRICE_MEDIAN; Typical (HLC/3): PRICE_TYPICAL; Weighted (HLCC/4): PRICE_WEIGHTED |
Output: Jaw (jaw, buffer 0); Teeth (teeth, buffer 1); Lips (lips, buffer 2)
Adaptive Moving AverageMT5 native
Adapts smoothing speed to changing market efficiency.
ama · iAMA · trend
| Parameter / key | Default | Range / options |
|---|---|---|
| AMA period (period) · bars | 10 | 1 … 1000; step 1 |
| Fast EMA period (fastPeriod) · bars | 2 | 1 … 1000; step 1 |
| Slow EMA period (slowPeriod) · bars | 30 | 1 … 1000; step 1 |
| Shift (shift) · bars | 0 | 0 … 500; step 1 |
| Applied price (appliedPrice) | PRICE_CLOSE | Close: PRICE_CLOSE; Open: PRICE_OPEN; High: PRICE_HIGH; Low: PRICE_LOW; Median (HL/2): PRICE_MEDIAN; Typical (HLC/3): PRICE_TYPICAL; Weighted (HLCC/4): PRICE_WEIGHTED |
Output: AMA (value, buffer 0)
Awesome OscillatorMT5 native
Compares short and long median-price momentum.
ao · iAO · bill-williams
No additional indicator-specific parameters.
Output: AO (value, buffer 0)
Average True RangeMT5 native
Measures price range and volatility without indicating direction.
atr · iATR · volatility
| Parameter / key | Default | Range / options |
|---|---|---|
| Period (period) · bars | 14 | 1 … 1000; step 1 |
Output: ATR (value, buffer 0)
Bears PowerMT5 native
Measures sellers' ability to push price below an EMA.
bears-power · iBearsPower · momentum
| Parameter / key | Default | Range / options |
|---|---|---|
| Period (period) · bars | 13 | 1 … 1000; step 1 |
Output: Bears Power (value, buffer 0)
Bollinger Bands®MT5 native
Plots volatility envelopes around a moving average.
bollinger-bands · iBands · volatility
| Parameter / key | Default | Range / options |
|---|---|---|
| Period (period) · bars | 20 | 1 … 1000; step 1 |
| Shift (shift) · bars | 0 | 0 … 500; step 1 |
| Deviation (deviation) | 2 | 0.1 … 20; step 0.1 |
| Applied price (appliedPrice) | PRICE_CLOSE | Close: PRICE_CLOSE; Open: PRICE_OPEN; High: PRICE_HIGH; Low: PRICE_LOW; Median (HL/2): PRICE_MEDIAN; Typical (HLC/3): PRICE_TYPICAL; Weighted (HLCC/4): PRICE_WEIGHTED |
Output: Middle band (middle, buffer 0); Upper band (upper, buffer 1); Lower band (lower, buffer 2)
Bulls PowerMT5 native
Measures buyers' ability to push price above an EMA.
bulls-power · iBullsPower · momentum
| Parameter / key | Default | Range / options |
|---|---|---|
| Period (period) · bars | 13 | 1 … 1000; step 1 |
Output: Bulls Power (value, buffer 0)
Commodity Channel IndexMT5 native
Measures deviation from the statistical mean price.
cci · iCCI · momentum
| Parameter / key | Default | Range / options |
|---|---|---|
| Period (period) · bars | 14 | 1 … 1000; step 1 |
| Applied price (appliedPrice) | PRICE_TYPICAL | Close: PRICE_CLOSE; Open: PRICE_OPEN; High: PRICE_HIGH; Low: PRICE_LOW; Median (HL/2): PRICE_MEDIAN; Typical (HLC/3): PRICE_TYPICAL; Weighted (HLCC/4): PRICE_WEIGHTED |
Output: CCI (value, buffer 0)
Chaikin OscillatorMT5 native
Tracks momentum of the Accumulation/Distribution line.
chaikin · iChaikin · volume
| Parameter / key | Default | Range / options |
|---|---|---|
| Fast period (fastPeriod) · bars | 3 | 1 … 1000; step 1 |
| Slow period (slowPeriod) · bars | 10 | 1 … 1000; step 1 |
| MA method (maMethod) | MODE_EMA | Simple: MODE_SMA; Exponential: MODE_EMA; Smoothed: MODE_SMMA; Linear weighted: MODE_LWMA |
| Volume (volumeType) | VOLUME_TICK | Tick volume: VOLUME_TICK; Real volume: VOLUME_REAL |
Output: Chaikin (value, buffer 0)
Double Exponential Moving AverageMT5 native
A lower-lag moving average based on double EMA smoothing.
dema · iDEMA · trend
| Parameter / key | Default | Range / options |
|---|---|---|
| Period (period) · bars | 14 | 1 … 1000; step 1 |
| Shift (shift) · bars | 0 | 0 … 500; step 1 |
| Applied price (appliedPrice) | PRICE_CLOSE | Close: PRICE_CLOSE; Open: PRICE_OPEN; High: PRICE_HIGH; Low: PRICE_LOW; Median (HL/2): PRICE_MEDIAN; Typical (HLC/3): PRICE_TYPICAL; Weighted (HLCC/4): PRICE_WEIGHTED |
Output: DEMA (value, buffer 0)
DeMarkerMT5 native
Compares recent highs and lows to estimate buying and selling pressure.
demarker · iDeMarker · momentum
| Parameter / key | Default | Range / options |
|---|---|---|
| Period (period) · bars | 14 | 1 … 1000; step 1 |
Output: DeMarker (value, buffer 0)
EnvelopesMT5 native
Places percentage bands above and below a moving average.
envelopes · iEnvelopes · volatility
| Parameter / key | Default | Range / options |
|---|---|---|
| Period (period) · bars | 14 | 1 … 1000; step 1 |
| Shift (shift) · bars | 0 | 0 … 500; step 1 |
| MA method (maMethod) | MODE_SMA | Simple: MODE_SMA; Exponential: MODE_EMA; Smoothed: MODE_SMMA; Linear weighted: MODE_LWMA |
| Applied price (appliedPrice) | PRICE_CLOSE | Close: PRICE_CLOSE; Open: PRICE_OPEN; High: PRICE_HIGH; Low: PRICE_LOW; Median (HL/2): PRICE_MEDIAN; Typical (HLC/3): PRICE_TYPICAL; Weighted (HLCC/4): PRICE_WEIGHTED |
| Deviation (deviation) · percent | 0.1 | 0.01 … 50; step 0.01 |
Output: Upper (upper, buffer 0); Lower (lower, buffer 1)
Force IndexMT5 native
Combines price movement and volume to estimate market force.
force-index · iForce · volume
| Parameter / key | Default | Range / options |
|---|---|---|
| Period (period) · bars | 13 | 1 … 1000; step 1 |
| MA method (maMethod) | MODE_EMA | Simple: MODE_SMA; Exponential: MODE_EMA; Smoothed: MODE_SMMA; Linear weighted: MODE_LWMA |
| Volume (volumeType) | VOLUME_TICK | Tick volume: VOLUME_TICK; Real volume: VOLUME_REAL |
Output: Force Index (value, buffer 0)
FractalsMT5 native
Marks local swing highs and lows using five-bar patterns.
fractals · iFractals · bill-williams
No additional indicator-specific parameters.
Output: Upper fractal (upper, buffer 0); Lower fractal (lower, buffer 1)
Fractal Adaptive Moving AverageMT5 native
Adjusts smoothing using the market's fractal dimension.
frama · iFrAMA · trend
| Parameter / key | Default | Range / options |
|---|---|---|
| Period (period) · bars | 14 | 1 … 1000; step 1 |
| Shift (shift) · bars | 0 | 0 … 500; step 1 |
| Applied price (appliedPrice) | PRICE_CLOSE | Close: PRICE_CLOSE; Open: PRICE_OPEN; High: PRICE_HIGH; Low: PRICE_LOW; Median (HL/2): PRICE_MEDIAN; Typical (HLC/3): PRICE_TYPICAL; Weighted (HLCC/4): PRICE_WEIGHTED |
Output: FrAMA (value, buffer 0)
Gator OscillatorMT5 native
Shows convergence and divergence between Alligator lines.
gator · iGator · bill-williams
| Parameter / key | Default | Range / options |
|---|---|---|
| Jaw period (jawPeriod) · bars | 13 | 1 … 1000; step 1 |
| Jaw shift (jawShift) · bars | 8 | 0 … 500; step 1 |
| Teeth period (teethPeriod) · bars | 8 | 1 … 1000; step 1 |
| Teeth shift (teethShift) · bars | 5 | 0 … 500; step 1 |
| Lips period (lipsPeriod) · bars | 5 | 1 … 1000; step 1 |
| Lips shift (lipsShift) · bars | 3 | 0 … 500; step 1 |
| MA method (maMethod) | MODE_SMMA | Simple: MODE_SMA; Exponential: MODE_EMA; Smoothed: MODE_SMMA; Linear weighted: MODE_LWMA |
| Applied price (appliedPrice) | PRICE_MEDIAN | Close: PRICE_CLOSE; Open: PRICE_OPEN; High: PRICE_HIGH; Low: PRICE_LOW; Median (HL/2): PRICE_MEDIAN; Typical (HLC/3): PRICE_TYPICAL; Weighted (HLCC/4): PRICE_WEIGHTED |
Output: Upper histogram (upper, buffer 0); Lower histogram (lower, buffer 2)
Ichimoku Kinko HyoMT5 native
A multi-line trend, momentum, and support/resistance system.
ichimoku · iIchimoku · trend
| Parameter / key | Default | Range / options |
|---|---|---|
| Tenkan-sen period (tenkanPeriod) · bars | 9 | 1 … 1000; step 1 |
| Kijun-sen period (kijunPeriod) · bars | 26 | 1 … 1000; step 1 |
| Senkou Span B period (senkouSpanBPeriod) · bars | 52 | 1 … 1000; step 1 |
Output: Tenkan-sen (tenkan, buffer 0); Kijun-sen (kijun, buffer 1); Senkou Span A (senkouA, buffer 2); Senkou Span B (senkouB, buffer 3); Chikou Span (chikou, buffer 4)
Market Facilitation IndexMT5 native
Compares price range with volume to classify market participation.
bw-mfi · iBWMFI · bill-williams
| Parameter / key | Default | Range / options |
|---|---|---|
| Volume (volumeType) | VOLUME_TICK | Tick volume: VOLUME_TICK; Real volume: VOLUME_REAL |
Output: BW MFI (value, buffer 0)
MomentumMT5 native
Compares the current price with price a selected number of bars ago.
momentum · iMomentum · momentum
| Parameter / key | Default | Range / options |
|---|---|---|
| Period (period) · bars | 14 | 1 … 1000; step 1 |
| Applied price (appliedPrice) | PRICE_CLOSE | Close: PRICE_CLOSE; Open: PRICE_OPEN; High: PRICE_HIGH; Low: PRICE_LOW; Median (HL/2): PRICE_MEDIAN; Typical (HLC/3): PRICE_TYPICAL; Weighted (HLCC/4): PRICE_WEIGHTED |
Output: Momentum (value, buffer 0)
Money Flow IndexMT5 native
A volume-weighted momentum oscillator for buying and selling pressure.
mfi · iMFI · volume
| Parameter / key | Default | Range / options |
|---|---|---|
| Period (period) · bars | 14 | 1 … 1000; step 1 |
| Volume (volumeType) | VOLUME_TICK | Tick volume: VOLUME_TICK; Real volume: VOLUME_REAL |
Output: MFI (value, buffer 0)
Moving AverageMT5 native
Smooths price using simple, exponential, smoothed, or weighted methods.
moving-average · iMA · trend
| Parameter / key | Default | Range / options |
|---|---|---|
| Period (period) · bars | 14 | 1 … 1000; step 1 |
| Shift (shift) · bars | 0 | 0 … 500; step 1 |
| MA method (maMethod) | MODE_SMA | Simple: MODE_SMA; Exponential: MODE_EMA; Smoothed: MODE_SMMA; Linear weighted: MODE_LWMA |
| Applied price (appliedPrice) | PRICE_CLOSE | Close: PRICE_CLOSE; Open: PRICE_OPEN; High: PRICE_HIGH; Low: PRICE_LOW; Median (HL/2): PRICE_MEDIAN; Typical (HLC/3): PRICE_TYPICAL; Weighted (HLCC/4): PRICE_WEIGHTED |
Output: MA (value, buffer 0)
Moving Average of OscillatorMT5 native
Shows the difference between the MACD main and signal lines.
osma · iOsMA · momentum
| Parameter / key | Default | Range / options |
|---|---|---|
| Fast EMA period (fastPeriod) · bars | 12 | 1 … 1000; step 1 |
| Slow EMA period (slowPeriod) · bars | 26 | 1 … 1000; step 1 |
| Signal period (signalPeriod) · bars | 9 | 1 … 1000; step 1 |
| Applied price (appliedPrice) | PRICE_CLOSE | Close: PRICE_CLOSE; Open: PRICE_OPEN; High: PRICE_HIGH; Low: PRICE_LOW; Median (HL/2): PRICE_MEDIAN; Typical (HLC/3): PRICE_TYPICAL; Weighted (HLCC/4): PRICE_WEIGHTED |
Output: OsMA (value, buffer 0)
Moving Average Convergence/DivergenceMT5 native
Tracks the relationship between fast and slow exponential averages.
macd · iMACD · momentum
| Parameter / key | Default | Range / options |
|---|---|---|
| Fast EMA period (fastPeriod) · bars | 12 | 1 … 1000; step 1 |
| Slow EMA period (slowPeriod) · bars | 26 | 1 … 1000; step 1 |
| Signal period (signalPeriod) · bars | 9 | 1 … 1000; step 1 |
| Applied price (appliedPrice) | PRICE_CLOSE | Close: PRICE_CLOSE; Open: PRICE_OPEN; High: PRICE_HIGH; Low: PRICE_LOW; Median (HL/2): PRICE_MEDIAN; Typical (HLC/3): PRICE_TYPICAL; Weighted (HLCC/4): PRICE_WEIGHTED |
Output: MACD (main, buffer 0); Signal (signal, buffer 1)
On Balance VolumeMT5 native
Adds or subtracts volume according to price direction.
obv · iOBV · volume
| Parameter / key | Default | Range / options |
|---|---|---|
| Volume (volumeType) | VOLUME_TICK | Tick volume: VOLUME_TICK; Real volume: VOLUME_REAL |
Output: OBV (value, buffer 0)
Parabolic Stop and ReverseMT5 native
Plots a trailing trend point that can mark potential reversals.
parabolic-sar · iSAR · trend
| Parameter / key | Default | Range / options |
|---|---|---|
| Step (step) | 0.02 | 0.001 … 1; step 0.001 |
| Maximum (maximum) | 0.2 | 0.01 … 1; step 0.01 |
Output: SAR (value, buffer 0)
Relative Strength IndexMT5 native
Measures the speed and magnitude of recent price changes.
rsi · iRSI · momentum
| Parameter / key | Default | Range / options |
|---|---|---|
| Period (period) · bars | 14 | 1 … 1000; step 1 |
| Applied price (appliedPrice) | PRICE_CLOSE | Close: PRICE_CLOSE; Open: PRICE_OPEN; High: PRICE_HIGH; Low: PRICE_LOW; Median (HL/2): PRICE_MEDIAN; Typical (HLC/3): PRICE_TYPICAL; Weighted (HLCC/4): PRICE_WEIGHTED |
Output: RSI (value, buffer 0)
Relative Vigor IndexMT5 native
Compares close-open movement with the trading range.
rvi · iRVI · momentum
| Parameter / key | Default | Range / options |
|---|---|---|
| Period (period) · bars | 10 | 1 … 1000; step 1 |
Output: RVI (main, buffer 0); Signal (signal, buffer 1)
Standard DeviationMT5 native
Measures dispersion of price around a moving average.
standard-deviation · iStdDev · volatility
| Parameter / key | Default | Range / options |
|---|---|---|
| Period (period) · bars | 20 | 1 … 1000; step 1 |
| Shift (shift) · bars | 0 | 0 … 500; step 1 |
| MA method (maMethod) | MODE_SMA | Simple: MODE_SMA; Exponential: MODE_EMA; Smoothed: MODE_SMMA; Linear weighted: MODE_LWMA |
| Applied price (appliedPrice) | PRICE_CLOSE | Close: PRICE_CLOSE; Open: PRICE_OPEN; High: PRICE_HIGH; Low: PRICE_LOW; Median (HL/2): PRICE_MEDIAN; Typical (HLC/3): PRICE_TYPICAL; Weighted (HLCC/4): PRICE_WEIGHTED |
Output: StdDev (value, buffer 0)
Stochastic OscillatorMT5 native
Compares closing price with the recent high-low range.
stochastic · iStochastic · momentum
| Parameter / key | Default | Range / options |
|---|---|---|
| %K period (kPeriod) · bars | 5 | 1 … 1000; step 1 |
| %D period (dPeriod) · bars | 3 | 1 … 1000; step 1 |
| Slowing (slowing) · bars | 3 | 1 … 1000; step 1 |
| MA method (maMethod) | MODE_SMA | Simple: MODE_SMA; Exponential: MODE_EMA; Smoothed: MODE_SMMA; Linear weighted: MODE_LWMA |
| Price field (priceField) | STO_LOWHIGH | Low / High: STO_LOWHIGH; Close / Close: STO_CLOSECLOSE |
Output: %K (main, buffer 0); %D (signal, buffer 1)
Triple Exponential Moving AverageMT5 native
A triple-smoothed average designed to reduce lag.
tema · iTEMA · trend
| Parameter / key | Default | Range / options |
|---|---|---|
| Period (period) · bars | 14 | 1 … 1000; step 1 |
| Shift (shift) · bars | 0 | 0 … 500; step 1 |
| Applied price (appliedPrice) | PRICE_CLOSE | Close: PRICE_CLOSE; Open: PRICE_OPEN; High: PRICE_HIGH; Low: PRICE_LOW; Median (HL/2): PRICE_MEDIAN; Typical (HLC/3): PRICE_TYPICAL; Weighted (HLCC/4): PRICE_WEIGHTED |
Output: TEMA (value, buffer 0)
Triple Exponential Average OscillatorMT5 native
Shows the rate of change of a triple-smoothed moving average.
trix · iTriX · momentum
| Parameter / key | Default | Range / options |
|---|---|---|
| Period (period) · bars | 14 | 1 … 1000; step 1 |
| Applied price (appliedPrice) | PRICE_CLOSE | Close: PRICE_CLOSE; Open: PRICE_OPEN; High: PRICE_HIGH; Low: PRICE_LOW; Median (HL/2): PRICE_MEDIAN; Typical (HLC/3): PRICE_TYPICAL; Weighted (HLCC/4): PRICE_WEIGHTED |
Output: TRIX (value, buffer 0)
Williams' Percent RangeMT5 native
Shows where the close sits inside the recent high-low range.
williams-percent-range · iWPR · momentum
| Parameter / key | Default | Range / options |
|---|---|---|
| Period (period) · bars | 14 | 1 … 1000; step 1 |
Output: %R (value, buffer 0)
Variable Index Dynamic AverageMT5 native
Adjusts EMA smoothing using Chande Momentum Oscillator volatility.
vidya · iVIDyA · trend
| Parameter / key | Default | Range / options |
|---|---|---|
| CMO period (cmoPeriod) · bars | 9 | 1 … 1000; step 1 |
| EMA period (emaPeriod) · bars | 12 | 1 … 1000; step 1 |
| Shift (shift) · bars | 0 | 0 … 500; step 1 |
| Applied price (appliedPrice) | PRICE_CLOSE | Close: PRICE_CLOSE; Open: PRICE_OPEN; High: PRICE_HIGH; Low: PRICE_LOW; Median (HL/2): PRICE_MEDIAN; Typical (HLC/3): PRICE_TYPICAL; Weighted (HLCC/4): PRICE_WEIGHTED |
Output: VIDyA (value, buffer 0)
VolumesMT5 native
Returns tick or real volume for each bar.
volumes · iVolumes · volume
| Parameter / key | Default | Range / options |
|---|---|---|
| Volume (volumeType) | VOLUME_TICK | Tick volume: VOLUME_TICK; Real volume: VOLUME_REAL |
Output: Volume (value, buffer 0)
Volume Weighted Average PriceCatalog only · export blocked
Prototype: session or rolling price weighted by volume.
vwap · iCustom · volume
| Parameter / key | Default | Range / options |
|---|---|---|
| Anchor (anchor) | session | Session: session; Week: week; Month: month |
Output: VWAP (value, buffer 0)
SupertrendCatalog only · export blocked
Prototype: ATR-based directional trend band.
supertrend · iCustom · trend
| Parameter / key | Default | Range / options |
|---|---|---|
| Period (period) · bars | 10 | 1 … 1000; step 1 |
| ATR multiplier (multiplier) | 3 | 0.1 … 20; step 0.1 |
Output: Supertrend (line, buffer 0); Direction (direction, buffer 1)
Donchian ChannelCatalog only · export blocked
Prototype: highest-high and lowest-low breakout channel.
donchian-channel · iCustom · levels
| Parameter / key | Default | Range / options |
|---|---|---|
| Period (period) · bars | 20 | 1 … 1000; step 1 |
Output: Upper (upper, buffer 0); Middle (middle, buffer 1); Lower (lower, buffer 2)
Keltner ChannelCatalog only · export blocked
Prototype: EMA channel expanded by Average True Range.
keltner-channel · iCustom · volatility
| Parameter / key | Default | Range / options |
|---|---|---|
| EMA period (emaPeriod) · bars | 20 | 1 … 1000; step 1 |
| ATR period (atrPeriod) · bars | 10 | 1 … 1000; step 1 |
| ATR multiplier (multiplier) | 2 | 0.1 … 20; step 0.1 |
Output: Middle (middle, buffer 0); Upper (upper, buffer 1); Lower (lower, buffer 2)
Hull Moving AverageCatalog only · export blocked
Prototype: weighted moving average designed for low lag and smoothness.
hull-moving-average · iCustom · trend
| Parameter / key | Default | Range / options |
|---|---|---|
| Period (period) · bars | 20 | 1 … 1000; step 1 |
| Applied price (appliedPrice) | PRICE_CLOSE | Close: PRICE_CLOSE; Open: PRICE_OPEN; High: PRICE_HIGH; Low: PRICE_LOW; Median (HL/2): PRICE_MEDIAN; Typical (HLC/3): PRICE_TYPICAL; Weighted (HLCC/4): PRICE_WEIGHTED |
Output: HMA (value, buffer 0)
Zero Lag Exponential Moving AverageCatalog only · export blocked
Prototype: EMA variant that compensates for input lag.
zero-lag-ema · iCustom · trend
| Parameter / key | Default | Range / options |
|---|---|---|
| Period (period) · bars | 20 | 1 … 1000; step 1 |
| Applied price (appliedPrice) | PRICE_CLOSE | Close: PRICE_CLOSE; Open: PRICE_OPEN; High: PRICE_HIGH; Low: PRICE_LOW; Median (HL/2): PRICE_MEDIAN; Typical (HLC/3): PRICE_TYPICAL; Weighted (HLCC/4): PRICE_WEIGHTED |
Output: ZLEMA (value, buffer 0)
Chandelier ExitCatalog only · export blocked
Prototype: ATR-based trailing exit from recent extremes.
chandelier-exit · iCustom · levels
| Parameter / key | Default | Range / options |
|---|---|---|
| Period (period) · bars | 22 | 1 … 1000; step 1 |
| ATR period (atrPeriod) · bars | 22 | 1 … 1000; step 1 |
| ATR multiplier (multiplier) | 3 | 0.1 … 20; step 0.1 |
Output: Long exit (long, buffer 0); Short exit (short, buffer 1)
Squeeze MomentumCatalog only · export blocked
Prototype: volatility compression and momentum expansion signal.
squeeze-momentum · iCustom · volatility
| Parameter / key | Default | Range / options |
|---|---|---|
| Bands period (bbPeriod) · bars | 20 | 1 … 1000; step 1 |
| Bands multiplier (bbMultiplier) | 2 | 0.1 … 10; step 0.1 |
| Keltner period (kcPeriod) · bars | 20 | 1 … 1000; step 1 |
| Keltner multiplier (kcMultiplier) | 1.5 | 0.1 … 10; step 0.1 |
Output: Momentum (momentum, buffer 0); Squeeze state (squeeze, buffer 1)
No matches. Change the search or turn off the filter.
Resolve Problems and export
- Open Problems: Errors block source and downloads. Warnings permit export but require review. Dismissing guidance does not fix an invalid rule.
- Use Go to node and fix the relevant field or connection. If the cause is unclear, record the code and full message, and Export strategy JSON for review.
- Preflight → Summary separates Export validation, MQL5 source, MetaEditor compiler, MT5 Strategy Tester and Source SHA-256. Keep these states aligned with the actual evidence.
- MQL5 Source displays code and Copy source. If clipboard access fails, use Download .mq5. Download manifest preserves the full hash and strategy to bind evidence to the file.
| File | Purpose |
|---|---|
| *.strategy.json | Export strategy JSON creates an editable graph handoff for people/AI; it does not include all favorites, theme and My Blocks. |
| *.mq5 | Source for MetaEditor, not a compiled executable. |
| *.manifest.json | Source hash, generator version, strategy and verification state at export; not a compiler certificate. |
| *.ex5 · compiler log · tester report | Produced outside the website by MT5/MetaEditor. Keep them with the exact source and manifest from that revision. |
Compile and test in MT5
- In MT5, use File → Open Data Folder → MQL5 → Experts and place the .mq5 there. Open it in MetaEditor and press F7. This guide's delivery criterion is 0 errors / 0 warnings. Keep the log and .ex5.
- Open Strategy Tester and select the EA compiled from that file. Set broker symbol, timeframe, date range, simulated deposit and tick model for the test. Record the configuration.
- No input changes needed: in Strategy Tester the EA places simulated orders automatically (the Journal shows Strategy Tester detected). On live charts it stays in DRY RUN until InpAllowTrading=true; keep InpAllowRealAccount=false.
- Inspect Journal, signal times, direction, lots, spread and SL/TP. Use visual mode to compare behavior against the rule. No trades can mean no qualifying signal or a filter rejection; do not disable every protection to force activity.
- Save the tester report with date range, broker/symbol and modeled costs. After checking behavior, assess separate data periods and demo operation independently. Historical results do not guarantee future outcomes.
MT5 Setup in Preflight is guidance; it does not detect the application or execute a test for you. Without MT5, hand off source + manifest + strategy JSON and report compiler/tester as Not run.
Save, import and recover work
Autosave uses this browser's local storage, not a user account. Switching browsers, clearing site data or using private mode can make previous work unavailable. Export strategy JSON before closing or moving computers.
- Import: Builder settings → Import strategy JSON → select file → structural validation → replacement confirmation → check name and Problems. Workspace schema 1.0 and supported strategy structures are accepted.
- Local save failed: the open work remains in memory. Export strategy JSON immediately, before refreshing. Check browser storage permissions and capacity.
- Local autosave is paused: export current work, and Download recovery bytes for old data if available. Resume local save writes storage again after confirmation; read what will be replaced first.
- Corrupt data or a newer schema: do not change a version number just to bypass validation. Preserve recovery bytes and share the file with its error message for diagnosis.
- Clear saved browser data removes saved Builder data. Back up first; this is not a general error-fixing step.
Work with an AI assistant
An AI can read this HTML guide or download Markdown and reference.json. Builder has no public execution API, broker API or server compilation service. Interaction requires a user-authorized browser, or a JSON file that the user imports.
- Collect: rules, symbol/timeframe, direction, sizing/stops/spread and the current strategy file. Ask about missing details that change behavior; do not invent risk settings.
- Start from a supported example JSON. Preserve schemaVersion, node IDs, edges and references while editing. Consult reference.json for parameter keys and allowed values.
- In browser automation, use names and labels such as Builder settings, Canvas outline and Preflight; read the new state after edits. Avoid guessed coordinates or direct local storage writes.
- Do not clear data, confirm replacements, transmit customer files elsewhere or enable real trading outside the owner's authorization.
- Deliver: a rule summary, strategy JSON, source/manifest if generated, warnings/blockers and actual verification evidence. Mark unperformed compiler/tester steps Not run.
Help me build a strategy in AckAlgo EA Builder using this guide. Entry rules: [specify] Exit rules: [specify] Broker symbol / timeframe: [specify] Direction / position sizing / stop loss / take profit / spread: [specify with units] Use supported tools only. Ask about missing requirements. Back up strategy JSON before editing and review replacement confirmations. Check Problems and Preflight; deliver strategy JSON, .mq5 and manifest when generated. Report local validation, source generation, exact-file compilation and MT5 testing separately. Do not claim unperformed compiler/backtest results. Do not enable real accounts or place real orders.
Troubleshooting
| Symptom | Check and fix |
|---|---|
| Download .mq5 is disabled | Read Problems errors. Check Catalog only indicators, Equals, UTC, unsupported exits and missing nodes/edges. Resolve blockers before exporting. |
| Search does not find Session Filter | Search Session or open Logic; check the English spelling of the tool name. |
| Connection rejected / rule changed after linking | Read the reason, check source/target kinds and existing inputs, then inspect Left/Right operands again. |
| Save as Block is disabled | The node references another node. Save a self-contained source or export the whole strategy. |
| Compilation errors | Keep the original .mq5, hash, MetaEditor version and full log. Another template's log is not proof. Recompile the corrected file. |
| No trades in the tester | Read the Journal first: Waiting: spread means the spread is above InpMaxSpreadPoints; built for ... running on ... means the symbol name differs (set InpSymbol to the broker symbol). Then check history, signal and session time. |
| Unexpected lots or stops | Check percent/points/atr units and broker specifications. Separate risk percent from stop distance; inspect source and Journal. |
| Mobile does not show the full editor | Use Configure & files for strategy settings and JSON import/export. Use Edit node settings below each rule to change its parameters. Sections retain their folded state while editing. Adding, connecting and arranging graph nodes uses desktop or tablet. |
Current support boundaries
Available: templates, visual graphs, indicator parameters, closed-bar conditions, broker sessions, market entries, sizing, stop/target, JSON import/export, local preflight and MQL5 source export for supported graphs.
Not supported: Catalog only extensions, tolerance-based Equals, UTC session export, pending orders, multiple symbols per strategy, full mobile editing, custom indicator uploads, cloud sync, payments, web backtests, server compilation and broker connections. A visible UI option is not proof of export support.
For an unsupported requirement, hand off the intended rule, an example and the blocker for development assessment. Do not silently change the strategy's meaning just to pass Preflight.
Exportable position management
Source generation supports trailing stops, break-even, opposite-signal exits and session-close exits when a Session node exists, plus averaging, martingale, basket limits and position count settings. Review each value in the source and test it in MT5 separately. Export support does not certify trading results.
The Strategy Tester / demo download sets InpAllowTrading=false. The explicit Download with live trading ON option sets it to true. Both variants set InpAllowRealAccount=false. Compile and test each exact file before use.
Frequently asked questions
Do I need to write code?
Supported visual strategies do not require coding. Source review and MT5 testing are still necessary; unsupported requirements may need development.
Does passing Preflight mean the EA is verified?
It means local checks passed. Compile and test the exact exported file separately.
Can an AI use this guide to continue my work?
Yes, through HTML, Markdown, reference.json and example strategy JSON. There is no execution API; use an authorized browser or owner-operated import.
Where is my work saved?
In the current browser. Export JSON as a backup; there is no account or cloud sync.
Does generating an EA guarantee profit?
No. The tool translates rules into source. Strategy quality and execution behavior require separate evidence and testing.
Downloads and source documentation
- Complete guide as Markdown ↓
- Machine-readable tool reference (JSON)
- AI navigation index (llms.txt)
- Sitemap
- MT5 Strategy Tester ↗
- MQL5 indicator reference ↗
Tool names, parameters and outputs are generated against the Builder revision used for this guide. Examples are educational, not backtest results or trading recommendations. If a later UI differs, preserve the file and exact message before requesting help.