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.

User manual · 2026-09-2746 indicators · 4 templates
Build in the browser · Verify in MT5

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.

  1. Open Builder → Builder settings → Export strategy JSON to back up any existing work, then close Settings.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.
  7. 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.
  8. 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.
  9. Continue with Compile and test in MT5 below. Any rule change requires a new export and fresh verification.

Find every workspace control

Area / controlHow to use it / outcome
Strategy name · Saved locallyRename at the top and inspect save status. Saved locally means this browser, not cloud storage.
Broker symbol · TimeframeEnter 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 · RedoUndo or redo strategy changes in the current session with buttons or Ctrl/Cmd+Z and Ctrl/Cmd+Shift+Z.
Switch to light/dark themeSwitch the editor theme and remember it locally. The guide uses a light reading surface.
Builder settingsEdit Description and Trade direction; export/import JSON; inspect local storage and recovery controls.
Node libraryChoose 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 outlineArrange and connect nodes, or use the outline to select nodes and connect using buttons instead of dragging.
Inspector · PLAIN-ENGLISH RULESelect a node to edit it. Read its summary after each edit. A node name is a label, not its operational configuration.
Problems · Go to nodeExpand errors and warnings; Go to node selects the affected block.
PreflightContains 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.

TemplateWhat to learn
MA CrossoverClosed-bar EMA 20/50 crossover. Learn how two indicators feed a condition.
RSI ReversalRSI recovery through 30/70. Learn separate directional thresholds, rather than buying whenever RSI is below 30.
BreakoutPrice breaks a confirmed, non-empty fractal level. Learn outputs, bar shifts and sparse indicator values.
Broker Session + ATRRestrict 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.
01Indicator02Condition03Market Entry04Risk05Protected Exit
Read from input values → signals → orders → protection

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 / fieldMeaning and use
Crosses above / Crosses belowDetect 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 thanCompare left and right values at the selected bar. The condition can remain true for many bars.
Breaks above / Breaks belowDetect a level break. Follow the Breakout template for confirmed fractal levels rather than unfinished swing points.
EqualsListed but export-blocked because a supported tolerance is not configured. Choose an operator that accurately represents your rule.
Left operand / Right operandCheck 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 entriesLong/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

ToolConfigure and verify
Session FilterUse 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 EntryMarket orders only. Match Direction to Strategy settings and Signal. Use maximum 1 position and one trade per bar as required in this version.
Risk percentRisk 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 lotSet lots directly. Check the broker symbol's minimum, maximum and volume step. Fixed lots do not produce a constant monetary risk.
Stop loss / Take profitRead 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 spreadMeasured in points, not pips. Check the broker's point size. A limit below the actual spread can prevent entries.
Protected ExitUse 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)

Link to this entry · MQL5 reference ↗

Accumulation/DistributionMT5 native

Combines price location and volume to estimate money flow.

ad · iAD · volume

Parameter / keyDefaultRange / options
Volume (volumeType)VOLUME_TICKTick volume: VOLUME_TICK; Real volume: VOLUME_REAL

Output: A/D (value, buffer 0)

Link to this entry · MQL5 reference ↗

Average Directional IndexMT5 native

Measures trend strength with positive and negative direction lines.

adx · iADX · trend

Parameter / keyDefaultRange / options
Period (period) · bars141 … 1000; step 1

Output: ADX (main, buffer 0); +DI (plusDi, buffer 1); -DI (minusDi, buffer 2)

Link to this entry · MQL5 reference ↗

Average Directional Index by WilderMT5 native

Welles Wilder's smoothed directional trend-strength measure.

adx-wilder · iADXWilder · trend

Parameter / keyDefaultRange / options
Period (period) · bars141 … 1000; step 1

Output: ADX (main, buffer 0); +DI (plusDi, buffer 1); -DI (minusDi, buffer 2)

Link to this entry · MQL5 reference ↗

AlligatorMT5 native

Three smoothed averages used to identify Bill Williams trend phases.

alligator · iAlligator · bill-williams

Parameter / keyDefaultRange / options
Jaw period (jawPeriod) · bars131 … 1000; step 1
Jaw shift (jawShift) · bars80 … 500; step 1
Teeth period (teethPeriod) · bars81 … 1000; step 1
Teeth shift (teethShift) · bars50 … 500; step 1
Lips period (lipsPeriod) · bars51 … 1000; step 1
Lips shift (lipsShift) · bars30 … 500; step 1
MA method (maMethod)MODE_SMMASimple: MODE_SMA; Exponential: MODE_EMA; Smoothed: MODE_SMMA; Linear weighted: MODE_LWMA
Applied price (appliedPrice)PRICE_MEDIANClose: 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)

Link to this entry · MQL5 reference ↗

Adaptive Moving AverageMT5 native

Adapts smoothing speed to changing market efficiency.

ama · iAMA · trend

Parameter / keyDefaultRange / options
AMA period (period) · bars101 … 1000; step 1
Fast EMA period (fastPeriod) · bars21 … 1000; step 1
Slow EMA period (slowPeriod) · bars301 … 1000; step 1
Shift (shift) · bars00 … 500; step 1
Applied price (appliedPrice)PRICE_CLOSEClose: 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)

Link to this entry · MQL5 reference ↗

Awesome OscillatorMT5 native

Compares short and long median-price momentum.

ao · iAO · bill-williams

No additional indicator-specific parameters.

Output: AO (value, buffer 0)

Link to this entry · MQL5 reference ↗

Average True RangeMT5 native

Measures price range and volatility without indicating direction.

atr · iATR · volatility

Parameter / keyDefaultRange / options
Period (period) · bars141 … 1000; step 1

Output: ATR (value, buffer 0)

Link to this entry · MQL5 reference ↗

Bears PowerMT5 native

Measures sellers' ability to push price below an EMA.

bears-power · iBearsPower · momentum

Parameter / keyDefaultRange / options
Period (period) · bars131 … 1000; step 1

Output: Bears Power (value, buffer 0)

Link to this entry · MQL5 reference ↗

Bollinger Bands®MT5 native

Plots volatility envelopes around a moving average.

bollinger-bands · iBands · volatility

Parameter / keyDefaultRange / options
Period (period) · bars201 … 1000; step 1
Shift (shift) · bars00 … 500; step 1
Deviation (deviation)20.1 … 20; step 0.1
Applied price (appliedPrice)PRICE_CLOSEClose: 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)

Link to this entry · MQL5 reference ↗

Bulls PowerMT5 native

Measures buyers' ability to push price above an EMA.

bulls-power · iBullsPower · momentum

Parameter / keyDefaultRange / options
Period (period) · bars131 … 1000; step 1

Output: Bulls Power (value, buffer 0)

Link to this entry · MQL5 reference ↗

Commodity Channel IndexMT5 native

Measures deviation from the statistical mean price.

cci · iCCI · momentum

Parameter / keyDefaultRange / options
Period (period) · bars141 … 1000; step 1
Applied price (appliedPrice)PRICE_TYPICALClose: 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)

Link to this entry · MQL5 reference ↗

Chaikin OscillatorMT5 native

Tracks momentum of the Accumulation/Distribution line.

chaikin · iChaikin · volume

Parameter / keyDefaultRange / options
Fast period (fastPeriod) · bars31 … 1000; step 1
Slow period (slowPeriod) · bars101 … 1000; step 1
MA method (maMethod)MODE_EMASimple: MODE_SMA; Exponential: MODE_EMA; Smoothed: MODE_SMMA; Linear weighted: MODE_LWMA
Volume (volumeType)VOLUME_TICKTick volume: VOLUME_TICK; Real volume: VOLUME_REAL

Output: Chaikin (value, buffer 0)

Link to this entry · MQL5 reference ↗

Double Exponential Moving AverageMT5 native

A lower-lag moving average based on double EMA smoothing.

dema · iDEMA · trend

Parameter / keyDefaultRange / options
Period (period) · bars141 … 1000; step 1
Shift (shift) · bars00 … 500; step 1
Applied price (appliedPrice)PRICE_CLOSEClose: 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)

Link to this entry · MQL5 reference ↗

DeMarkerMT5 native

Compares recent highs and lows to estimate buying and selling pressure.

demarker · iDeMarker · momentum

Parameter / keyDefaultRange / options
Period (period) · bars141 … 1000; step 1

Output: DeMarker (value, buffer 0)

Link to this entry · MQL5 reference ↗

EnvelopesMT5 native

Places percentage bands above and below a moving average.

envelopes · iEnvelopes · volatility

Parameter / keyDefaultRange / options
Period (period) · bars141 … 1000; step 1
Shift (shift) · bars00 … 500; step 1
MA method (maMethod)MODE_SMASimple: MODE_SMA; Exponential: MODE_EMA; Smoothed: MODE_SMMA; Linear weighted: MODE_LWMA
Applied price (appliedPrice)PRICE_CLOSEClose: 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) · percent0.10.01 … 50; step 0.01

Output: Upper (upper, buffer 0); Lower (lower, buffer 1)

Link to this entry · MQL5 reference ↗

Force IndexMT5 native

Combines price movement and volume to estimate market force.

force-index · iForce · volume

Parameter / keyDefaultRange / options
Period (period) · bars131 … 1000; step 1
MA method (maMethod)MODE_EMASimple: MODE_SMA; Exponential: MODE_EMA; Smoothed: MODE_SMMA; Linear weighted: MODE_LWMA
Volume (volumeType)VOLUME_TICKTick volume: VOLUME_TICK; Real volume: VOLUME_REAL

Output: Force Index (value, buffer 0)

Link to this entry · MQL5 reference ↗

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)

Link to this entry · MQL5 reference ↗

Fractal Adaptive Moving AverageMT5 native

Adjusts smoothing using the market's fractal dimension.

frama · iFrAMA · trend

Parameter / keyDefaultRange / options
Period (period) · bars141 … 1000; step 1
Shift (shift) · bars00 … 500; step 1
Applied price (appliedPrice)PRICE_CLOSEClose: 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)

Link to this entry · MQL5 reference ↗

Gator OscillatorMT5 native

Shows convergence and divergence between Alligator lines.

gator · iGator · bill-williams

Parameter / keyDefaultRange / options
Jaw period (jawPeriod) · bars131 … 1000; step 1
Jaw shift (jawShift) · bars80 … 500; step 1
Teeth period (teethPeriod) · bars81 … 1000; step 1
Teeth shift (teethShift) · bars50 … 500; step 1
Lips period (lipsPeriod) · bars51 … 1000; step 1
Lips shift (lipsShift) · bars30 … 500; step 1
MA method (maMethod)MODE_SMMASimple: MODE_SMA; Exponential: MODE_EMA; Smoothed: MODE_SMMA; Linear weighted: MODE_LWMA
Applied price (appliedPrice)PRICE_MEDIANClose: 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)

Link to this entry · MQL5 reference ↗

Ichimoku Kinko HyoMT5 native

A multi-line trend, momentum, and support/resistance system.

ichimoku · iIchimoku · trend

Parameter / keyDefaultRange / options
Tenkan-sen period (tenkanPeriod) · bars91 … 1000; step 1
Kijun-sen period (kijunPeriod) · bars261 … 1000; step 1
Senkou Span B period (senkouSpanBPeriod) · bars521 … 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)

Link to this entry · MQL5 reference ↗

Market Facilitation IndexMT5 native

Compares price range with volume to classify market participation.

bw-mfi · iBWMFI · bill-williams

Parameter / keyDefaultRange / options
Volume (volumeType)VOLUME_TICKTick volume: VOLUME_TICK; Real volume: VOLUME_REAL

Output: BW MFI (value, buffer 0)

Link to this entry · MQL5 reference ↗

MomentumMT5 native

Compares the current price with price a selected number of bars ago.

momentum · iMomentum · momentum

Parameter / keyDefaultRange / options
Period (period) · bars141 … 1000; step 1
Applied price (appliedPrice)PRICE_CLOSEClose: 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)

Link to this entry · MQL5 reference ↗

Money Flow IndexMT5 native

A volume-weighted momentum oscillator for buying and selling pressure.

mfi · iMFI · volume

Parameter / keyDefaultRange / options
Period (period) · bars141 … 1000; step 1
Volume (volumeType)VOLUME_TICKTick volume: VOLUME_TICK; Real volume: VOLUME_REAL

Output: MFI (value, buffer 0)

Link to this entry · MQL5 reference ↗

Moving AverageMT5 native

Smooths price using simple, exponential, smoothed, or weighted methods.

moving-average · iMA · trend

Parameter / keyDefaultRange / options
Period (period) · bars141 … 1000; step 1
Shift (shift) · bars00 … 500; step 1
MA method (maMethod)MODE_SMASimple: MODE_SMA; Exponential: MODE_EMA; Smoothed: MODE_SMMA; Linear weighted: MODE_LWMA
Applied price (appliedPrice)PRICE_CLOSEClose: 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)

Link to this entry · MQL5 reference ↗

Moving Average of OscillatorMT5 native

Shows the difference between the MACD main and signal lines.

osma · iOsMA · momentum

Parameter / keyDefaultRange / options
Fast EMA period (fastPeriod) · bars121 … 1000; step 1
Slow EMA period (slowPeriod) · bars261 … 1000; step 1
Signal period (signalPeriod) · bars91 … 1000; step 1
Applied price (appliedPrice)PRICE_CLOSEClose: 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)

Link to this entry · MQL5 reference ↗

Moving Average Convergence/DivergenceMT5 native

Tracks the relationship between fast and slow exponential averages.

macd · iMACD · momentum

Parameter / keyDefaultRange / options
Fast EMA period (fastPeriod) · bars121 … 1000; step 1
Slow EMA period (slowPeriod) · bars261 … 1000; step 1
Signal period (signalPeriod) · bars91 … 1000; step 1
Applied price (appliedPrice)PRICE_CLOSEClose: 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)

Link to this entry · MQL5 reference ↗

On Balance VolumeMT5 native

Adds or subtracts volume according to price direction.

obv · iOBV · volume

Parameter / keyDefaultRange / options
Volume (volumeType)VOLUME_TICKTick volume: VOLUME_TICK; Real volume: VOLUME_REAL

Output: OBV (value, buffer 0)

Link to this entry · MQL5 reference ↗

Parabolic Stop and ReverseMT5 native

Plots a trailing trend point that can mark potential reversals.

parabolic-sar · iSAR · trend

Parameter / keyDefaultRange / options
Step (step)0.020.001 … 1; step 0.001
Maximum (maximum)0.20.01 … 1; step 0.01

Output: SAR (value, buffer 0)

Link to this entry · MQL5 reference ↗

Relative Strength IndexMT5 native

Measures the speed and magnitude of recent price changes.

rsi · iRSI · momentum

Parameter / keyDefaultRange / options
Period (period) · bars141 … 1000; step 1
Applied price (appliedPrice)PRICE_CLOSEClose: 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)

Link to this entry · MQL5 reference ↗

Relative Vigor IndexMT5 native

Compares close-open movement with the trading range.

rvi · iRVI · momentum

Parameter / keyDefaultRange / options
Period (period) · bars101 … 1000; step 1

Output: RVI (main, buffer 0); Signal (signal, buffer 1)

Link to this entry · MQL5 reference ↗

Standard DeviationMT5 native

Measures dispersion of price around a moving average.

standard-deviation · iStdDev · volatility

Parameter / keyDefaultRange / options
Period (period) · bars201 … 1000; step 1
Shift (shift) · bars00 … 500; step 1
MA method (maMethod)MODE_SMASimple: MODE_SMA; Exponential: MODE_EMA; Smoothed: MODE_SMMA; Linear weighted: MODE_LWMA
Applied price (appliedPrice)PRICE_CLOSEClose: 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)

Link to this entry · MQL5 reference ↗

Stochastic OscillatorMT5 native

Compares closing price with the recent high-low range.

stochastic · iStochastic · momentum

Parameter / keyDefaultRange / options
%K period (kPeriod) · bars51 … 1000; step 1
%D period (dPeriod) · bars31 … 1000; step 1
Slowing (slowing) · bars31 … 1000; step 1
MA method (maMethod)MODE_SMASimple: MODE_SMA; Exponential: MODE_EMA; Smoothed: MODE_SMMA; Linear weighted: MODE_LWMA
Price field (priceField)STO_LOWHIGHLow / High: STO_LOWHIGH; Close / Close: STO_CLOSECLOSE

Output: %K (main, buffer 0); %D (signal, buffer 1)

Link to this entry · MQL5 reference ↗

Triple Exponential Moving AverageMT5 native

A triple-smoothed average designed to reduce lag.

tema · iTEMA · trend

Parameter / keyDefaultRange / options
Period (period) · bars141 … 1000; step 1
Shift (shift) · bars00 … 500; step 1
Applied price (appliedPrice)PRICE_CLOSEClose: 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)

Link to this entry · MQL5 reference ↗

Triple Exponential Average OscillatorMT5 native

Shows the rate of change of a triple-smoothed moving average.

trix · iTriX · momentum

Parameter / keyDefaultRange / options
Period (period) · bars141 … 1000; step 1
Applied price (appliedPrice)PRICE_CLOSEClose: 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)

Link to this entry · MQL5 reference ↗

Williams' Percent RangeMT5 native

Shows where the close sits inside the recent high-low range.

williams-percent-range · iWPR · momentum

Parameter / keyDefaultRange / options
Period (period) · bars141 … 1000; step 1

Output: %R (value, buffer 0)

Link to this entry · MQL5 reference ↗

Variable Index Dynamic AverageMT5 native

Adjusts EMA smoothing using Chande Momentum Oscillator volatility.

vidya · iVIDyA · trend

Parameter / keyDefaultRange / options
CMO period (cmoPeriod) · bars91 … 1000; step 1
EMA period (emaPeriod) · bars121 … 1000; step 1
Shift (shift) · bars00 … 500; step 1
Applied price (appliedPrice)PRICE_CLOSEClose: 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)

Link to this entry · MQL5 reference ↗

VolumesMT5 native

Returns tick or real volume for each bar.

volumes · iVolumes · volume

Parameter / keyDefaultRange / options
Volume (volumeType)VOLUME_TICKTick volume: VOLUME_TICK; Real volume: VOLUME_REAL

Output: Volume (value, buffer 0)

Link to this entry · MQL5 reference ↗

Volume Weighted Average PriceCatalog only · export blocked

Prototype: session or rolling price weighted by volume.

vwap · iCustom · volume

Parameter / keyDefaultRange / options
Anchor (anchor)sessionSession: session; Week: week; Month: month

Output: VWAP (value, buffer 0)

Link to this entry

SupertrendCatalog only · export blocked

Prototype: ATR-based directional trend band.

supertrend · iCustom · trend

Parameter / keyDefaultRange / options
Period (period) · bars101 … 1000; step 1
ATR multiplier (multiplier)30.1 … 20; step 0.1

Output: Supertrend (line, buffer 0); Direction (direction, buffer 1)

Link to this entry

Donchian ChannelCatalog only · export blocked

Prototype: highest-high and lowest-low breakout channel.

donchian-channel · iCustom · levels

Parameter / keyDefaultRange / options
Period (period) · bars201 … 1000; step 1

Output: Upper (upper, buffer 0); Middle (middle, buffer 1); Lower (lower, buffer 2)

Link to this entry

Keltner ChannelCatalog only · export blocked

Prototype: EMA channel expanded by Average True Range.

keltner-channel · iCustom · volatility

Parameter / keyDefaultRange / options
EMA period (emaPeriod) · bars201 … 1000; step 1
ATR period (atrPeriod) · bars101 … 1000; step 1
ATR multiplier (multiplier)20.1 … 20; step 0.1

Output: Middle (middle, buffer 0); Upper (upper, buffer 1); Lower (lower, buffer 2)

Link to this entry

Hull Moving AverageCatalog only · export blocked

Prototype: weighted moving average designed for low lag and smoothness.

hull-moving-average · iCustom · trend

Parameter / keyDefaultRange / options
Period (period) · bars201 … 1000; step 1
Applied price (appliedPrice)PRICE_CLOSEClose: 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)

Link to this entry

Zero Lag Exponential Moving AverageCatalog only · export blocked

Prototype: EMA variant that compensates for input lag.

zero-lag-ema · iCustom · trend

Parameter / keyDefaultRange / options
Period (period) · bars201 … 1000; step 1
Applied price (appliedPrice)PRICE_CLOSEClose: 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)

Link to this entry

Chandelier ExitCatalog only · export blocked

Prototype: ATR-based trailing exit from recent extremes.

chandelier-exit · iCustom · levels

Parameter / keyDefaultRange / options
Period (period) · bars221 … 1000; step 1
ATR period (atrPeriod) · bars221 … 1000; step 1
ATR multiplier (multiplier)30.1 … 20; step 0.1

Output: Long exit (long, buffer 0); Short exit (short, buffer 1)

Link to this entry

Squeeze MomentumCatalog only · export blocked

Prototype: volatility compression and momentum expansion signal.

squeeze-momentum · iCustom · volatility

Parameter / keyDefaultRange / options
Bands period (bbPeriod) · bars201 … 1000; step 1
Bands multiplier (bbMultiplier)20.1 … 10; step 0.1
Keltner period (kcPeriod) · bars201 … 1000; step 1
Keltner multiplier (kcMultiplier)1.50.1 … 10; step 0.1

Output: Momentum (momentum, buffer 0); Squeeze state (squeeze, buffer 1)

Link to this entry

Resolve Problems and export

  1. Open Problems: Errors block source and downloads. Warnings permit export but require review. Dismissing guidance does not fix an invalid rule.
  2. 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.
  3. Preflight → Summary separates Export validation, MQL5 source, MetaEditor compiler, MT5 Strategy Tester and Source SHA-256. Keep these states aligned with the actual evidence.
  4. 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.
FilePurpose
*.strategy.jsonExport strategy JSON creates an editable graph handoff for people/AI; it does not include all favorites, theme and My Blocks.
*.mq5Source for MetaEditor, not a compiled executable.
*.manifest.jsonSource hash, generator version, strategy and verification state at export; not a compiler certificate.
*.ex5 · compiler log · tester reportProduced outside the website by MT5/MetaEditor. Keep them with the exact source and manifest from that revision.

Compile and test in MT5

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.

  1. 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.
  2. Start from a supported example JSON. Preserve schemaVersion, node IDs, edges and references while editing. Consult reference.json for parameter keys and allowed values.
  3. 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.
  4. Do not clear data, confirm replacements, transmit customer files elsewhere or enable real trading outside the owner's authorization.
  5. Deliver: a rule summary, strategy JSON, source/manifest if generated, warnings/blockers and actual verification evidence. Mark unperformed compiler/tester steps Not run.
Ready-to-use AI brief
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

SymptomCheck and fix
Download .mq5 is disabledRead Problems errors. Check Catalog only indicators, Equals, UTC, unsupported exits and missing nodes/edges. Resolve blockers before exporting.
Search does not find Session FilterSearch Session or open Logic; check the English spelling of the tool name.
Connection rejected / rule changed after linkingRead the reason, check source/target kinds and existing inputs, then inspect Left/Right operands again.
Save as Block is disabledThe node references another node. Save a self-contained source or export the whole strategy.
Compilation errorsKeep the original .mq5, hash, MetaEditor version and full log. Another template's log is not proof. Recompile the corrected file.
No trades in the testerRead 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 stopsCheck percent/points/atr units and broker specifications. Separate risk percent from stop distance; inspect source and Journal.
Mobile does not show the full editorUse 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

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.