🤖 AI MARKET ANALYSIS
🤖 MQL PRO TRADER

📙 MQL PRO TRADER MANUAL

Complete guide to setting up and using the Expert Advisor for MetaTrader 5

Setting up MT5

Before you try to use MQL PRO TRADER, your MetaTrader 5 must be set up correctly. Without these adjustments the MQL PRO TRADER system will not work — it will not be able to reach the internet, it will not send Telegram messages and it will not use the news and AI systems.

Do this first of all. These steps only need to be done once, but they are mandatory. Skip this stage and the robot will not work properly.

Step 1 — Enable Algo Trading

The Algotrading button sits on the MT5 toolbar, at the top. It must be green. If it is red, click it to enable it.

Without Algotrading enabled, the robot stays in blocked mode and does not open any orders, even if everything else is set up correctly.

Step 2 — Allow the WebRequest URLs

The robot needs internet access for three essential functions: Telegram integration, AI analysis and the web dashboard (Performance Center). MT5 blocks that access by default — you have to allow the URLs below manually.

Path: Tools → Options → Expert Advisors → tick the option "Allow WebRequest for listed URL" and add the three URLs:

https://api.telegram.org
https://generativelanguage.googleapis.com
https://mqlprotrader.com.br
URLWhat it is for
https://api.telegram.org Sending and receiving Telegram messages. Required for alerts on opened/closed trades, daily summaries and 24/7 AI support.
https://generativelanguage.googleapis.com AI market analysis system via Google Gemini. Used by the artificial intelligence module to analyse market context and produce an AI-assisted reading.
https://mqlprotrader.com.br Web dashboard (Performance Center). The robot sends every closed trade and the account summary to your online dashboard at mqlprotrader.com.br/central_performance, where you track performance, profiles and statistics.
Tip: After adding the URLs, click OK to close Options. You can check it worked by reopening Tools → Options → Expert Advisors — the three URLs should appear in the list.

Step 3 — Enable automated trading at the broker

Some brokers require automated trading permission to be enabled in the account profile inside MT5 as well, not only on the AutoTrading button. Check under:

Tools → Options → Expert Advisors → confirm that "Allow automated trading" is ticked.

If the robot still does not open orders even with AutoTrading green, the parameter "Visual alert when MT5 is misconfigured" (in the robot's initial settings) will show an on-screen warning telling you what is missing.

The banner at the top of the chart — what it is telling you

Right after you paste the URLs and click Verify Now, the robot's panels show up immediately and a banner appears at the top of the chart. It exists to answer one question only: can I trade yet? — and it has two states.

⏳ Yellow — "Please wait, checking…"
The robot has released the panels, but it is still testing the last URL, the Web Dashboard one. The panels appear early on purpose, so you do not think you dragged the robot onto the chart and it did not work — but that is not the authorisation to trade. The banner names the address being checked.
✅ Green — "Verification complete, you can trade"
All three URLs were tested for real, one by one. Only now is everything released. The banner disappears on its own after a few seconds.
Why the yellow one can take a little while. Two of the URLs are tested straight away, at start-up. The third — the Web Dashboard one — is checked right afterwards, in the background, and not at start-up: testing it together with the others can freeze MetaTrader for more than two minutes on some machines. That is why the robot prefers to release the screen first and confirm this last one in parallel. The normal wait is a few seconds up to about a minute.
⚠️ If the Web Dashboard URL is missing, the robot BLOCKS — even after it has already shown the panels. The URL panel reopens on its own and says exactly which address is missing. It is not a fault: it is the background check finishing and finding what was missing. Paste the address it points to and click Verify Now again.
And the button that shows "already added" or "not verified". Next to each address, the panel shows the state of that URL: COPY (not pasted yet), ALREADY ADDED (the robot tested it and it answered) or NOT VERIFIED (it has not managed to test that one yet). The green only appears after a real test — the robot never marks as ready a URL that it merely assumed you had pasted. When it is grey, just wait for the background check or click Verify Now.

Installing MQL PRO TRADER

Make sure you have completed the Setting up MT5 before continuing — the 3 URLs must be allowed and AutoTrading enabled for the robot to work properly.
1

How to get MQL PRO TRADER

Download the robot already compiled, ready to use — there is nothing to compile. Choose the panel language:

You can also receive it by e-mail or by contacting support.

Save the file somewhere you can find easily, such as the desktop or the Downloads.

2

Installing MQL PRO TRADER in MT5

Double-click the .ex5 file you downloaded (e.g. MQL_PRO_TRADER [pt].ex5) — if MT5 is installed, the robot opens automatically under Navigator → Expert Advisors.

If it does not open automatically: In MT5, go to File → Open Data Folder, browse to MQL5\Experts\, paste the file .ex5 there and press F5 in MT5 to refresh the Navigator.
If you had already downloaded it before, the browser may save the new file as MQL_PRO_TRADER…(2).ex5, (3) and so on. Always use the most recent one (or delete the old ones from the Downloads folder to avoid confusion).
If you have several brokers on the same PC, each one has its own data folder. Open the MT5 of the correct broker before following this step.
3

Refresh the Navigator and drag it onto the chart

Back in MetaTrader 5, open the Navigator (shortcut Ctrl + N or menu View → Navigator). Right-click Expert Advisors and choose Refresh — the robot will appear in the list.

Open the chart of the asset you want to trade (e.g. WINM25, WDOK25, XAUUSD). Then drag the robot from the Navigator onto the chart. A settings window will open.

On the "Common" tab of the settings window, confirm that the options "Allow live trading" and "Allow DLL imports" are ticked. Then click OK.
4

Confirm the robot is active and working

After clicking OK, look at the top-right corner of the chart. You should see:

What you seeWhat it means
😊 Smiling face in the chart corner✅ Robot loaded and working correctly
😟 Sad face in the chart corner⚠️ Robot loaded but with a problem — check the Journal
Button AutoTrading green on the top toolbar✅ Robot allowed to send orders
Button AutoTrading red❌ Click it to enable — without this the robot does not trade
On-screen alert "MT5 misconfigured"⚠️ One of the WebRequest URLs was not added — go back to the section Setting up MT5
To check the robot's logs and messages, open the Journal tab at the bottom of MT5 (Ctrl + T → Journal tab). Every start-up message, alert and executed trade appears there.

Markets and Brokers (Forex / Crypto / Stocks / B3)

MQL PRO TRADER works on any MetaTrader 5 market — Forex, crypto, international shares (CFD) and the Brazilian market (B3: mini index, mini dollar and cash equities). But each market type has its own rules for margin, execution and position counting. This section explains those differences so nothing surprises you when it looks different from what you expected.

Most of the differences come from the broker and the account type, not from the robot. The EA only reflects what MetaTrader and the broker's server report. Below you will see what is normal in each case.

Overview by market

MarketExamplesMarginPositionsWatch out for
Forex EURUSD, GBPUSD, XAUUSD Leveraged — low margin relative to volume. Displayed normally. Usually hedge (buy and sell at the same time on the same pair). Volume in lots (0.01 = micro). Variable spread.
Cryptocurrencies BTCUSD, ETHUSD Leveraged (CFD). Displayed normally. Hedge at most brokers. Market 24/7 — sessions and the hours filter make less sense. High volatility: adjust SL/risk.
Shares (CFD) AAPL, NVDA, GOOGL Leveraged (CFD on a share). Displayed normally. Hedge. You trade the CFD, not the actual share. Trading hours follow the home exchange.
B3 — Futures WIN (mini index), WDO (mini dollar) Margin requirement set by B3. May show as "N/A" on a demo account (see below). Almost always netting (one net position per contract). Volume in contracts (1, 2, 3...). Filling RETURN. The contract has an expiry (WINM26, WDON26...).
B3 — Cash equities PETR4, VALE3, ITUB4 A cash purchase does not use a margin requirement — you pay the full amount. Margin ≈ 0 is normal. Netting (one position per stock). Filling RETURN required. Standard lot = 100 shares (round lot) or odd lot.

B3 in detail (Brazilian market)

B3 uses exchange execution , unlike Forex/CFD brokers, which use a market maker. That changes three important things in how the robot behaves:

1. Margin requirement — and why it sometimes shows "N/A"

On futures contracts (WIN/WDO), B3 requires a margin requirement to hold the position. The robot shows that value in the "Total Margin" field ( INFO → SUMMARY sub-tab of the Manager), on the totals row of the POSITIONS tab and in "Margin.Used" (side ticket).

On B3 DEMO accounts it is common for the margin to show as "N/A" (not available). That is not a robot error: many simulation accounts do not register the contracts' margin requirement. In that case neither MetaTrader nor the theoretical calculation has the figure — so the robot shows "N/A" instead of "R$ 0.00" (which would look like a real number and mislead you). On a live account the margin shows normally.
How the robot calculates it: if the broker reports the account's used margin, it uses that figure. If it does not (some B3 servers), it adds up the theoretical margin of each position. If not even that is available (a demo without data), it shows "N/A". The free margin and the balance remain correct — only the used margin may be unavailable.

2. Cash equities do not consume margin

When you buy a cash equity on B3 (PETR4, VALE3...), you pay the full amount for the shares — there is no leverage and no margin requirement as in futures. So seeing the margin at zero with cash equities bought is the correct behaviour, not a fault.

If you trade futures and shares on the same account, "Total Margin" reflects the sum of what each position requires. The result fields (Buys/Sells/Total Result) always add up the whole account when the robot is in multi-asset mode.

3. Filling mode — avoid error 4756

B3 requires the filling mode RETURN for exchange orders (especially cash equities). If the order is sent with the wrong mode (IOC/FOK), the broker rejects it with error 4756 ("invalid request"). MQL PRO TRADER detects the filling mode supported by the symbol automatically, but if you see that error:

  • Confirm the symbol has a compatible "Filling" setting (Return) in the contract specification in MT5.
  • For cash equities, make sure the account has trading permission enabled (see Setting up MT5).

4. Netting vs Hedge — why sometimes there is only "one" position

There are two account modes in MT5:

ModeWhere it is commonBehaviour
Hedge Forex, Crypto, CFD You can hold a buy and a sell at the same time on the same asset, each as a separate position. The POSITIONS tab shows each one.
Netting B3 (futures and shares) There is only one net position per asset. If you are long and sell the same quantity, the position goes flat (it does not create a separate short position).
On a netting account (B3), features that depend on holding a buy and a sell at once (such as automatic hedging) do not apply — the account itself merges opposite orders. That is a B3 rule, not a robot limitation.

How the robot behaves in each mode — and what changes in your stop

The difference between the two modes is not just cosmetic: it changes what happens to your Stop Loss when you enter more than once on the same asset. The robot detects the mode on its own at start-up and writes it to the journal ( Experts):

[CONTA] Modo de margem: NETTING/EXCHANGE (ACCOUNT_MARGIN_MODE=2).
        Uma posicao por simbolo: entradas novas FUNDEM e o SL/TP vale para o volume inteiro.
You enter 3 times on the same asset…In HEDGEIn NETTING
How many positions stay open3, independent1, with an average price
Where the Stop Loss is measured fromfrom the price of each entryfrom the average price of the position
If the stop is hitcloses only that positioncloses the whole volume at once
⚠️ This is why netting demands more care when you repeat entries. With 3 merged entries, one stop closes all 3 together — the loss is that of the whole position, not of a single trade. The Points from entry to SL stay exactly as you configured them; what multiplies is the volume they apply to.

The three rules the robot applies on its own in netting

RuleWhat it prevents
1. The stop is measured from the AVERAGE priceWithout it, the stop would stay anchored to the last entry — and the real distance to your position would drift on its own, up or down, every time you entered again. Your "300 points" would stop describing your risk.
2. The stop only TIGHTENS, never moves awayWithout it, each new entry would undo what Breakeven and Trailing Stop had already gained, pushing the stop back out. A stop that walks backwards is not a stop.
3. The stop is never ERASEDWithout it, a new entry made with the SL systems switched off would remove the protection from the whole position — silently.
📍 The position block follows the average price. After a new entry is added to the position, the buttons + Add TP, X and –, the stop badge (the risk in money) and the R of the targets switch to the average price MetaTrader shows on the position line — and the Journal records the change.
On a HEDGE account none of this is needed — each position is born with its own stop and is closed on its own. The robot simply does not interfere.

🛡️ The OPEN risk limit (applies in both modes)

The Risk per trade parameter sizes each entry — and that only protects you if the entries are independent. When they stack up, total exposure grows and nobody adds it up. This limit does.

🛡️
☑️ Cap the total OPEN RISK (recommended)
Before opening any trade, the robot adds up the risk of all open positions — the distance between each one's average price and its stop, converted into money — and refuses the entry that would break the limit. The refusal appears in the journal with all the figures. A position without a stop also enters the count, by estimate (see below).
Default: YesYes/No
📊
✏️ Maximum open risk (% of equity)
The cap, as a percentage of your equity. With 10%, an account of $100,000 accepts at most $10,000 of combined open risk. It is a limit on risk, not on quantity: 99 contracts with a tight stop can risk less than 20 with a wide stop.

When the entry is refused, the robot now warns on screen — an alert in the safety panel saying how far past the cap it went and where the exposure comes from. Before, this existed only in the journal, and the order simply did not go through.
Default: 10.0Number
📊
✏️ Warn when open risk reaches (% of equity)
Warns before the cap above blocks anything. When the sum of the risk of everything open reaches this percentage, an alert appears in the safety panel telling you how much you are risking and how much of that is an estimate — because a position without a Stop Loss has no defined loss, and the robot calculates it by the same ruler as the SL line. Keep it below the cap, otherwise the warning arrives after the block. 0 disables it.
Default: 7.0Number
⏰
✏️ Snooze a dismissed alert for (minutes)
When you click Ignore Alert, it disappears for this long and comes back on its own later. It serves to get it out of the way without losing sight of the warning. 0 makes the alert come back at the very next check (5 seconds).
Default: 15Number
[RISCO] Entrada em WIN$ RECUSADA: o risco ABERTO somado ficaria em R$1007.14 e o teto
        e R$987.67 (1.0% do patrimonio R$98767.20). Ja aberto: R$966.86 (medido R$0.00 +
        estimado R$966.86 de 24 posicao(oes) SEM STOP). Esta ordem tambem entrou ESTIMADA
        (veio sem stop). 👉 O que estoura a conta e a exposicao SEM STOP: ponha stop nessas
        posicoes (ou feche-as). Mexer no teto so esconde o problema.
⚠️ A position without a stop enters the count as an ESTIMATE. The message separates what was measured (positions with a real stop: the exact distance to it) from what was estimated (positions without a stop). To estimate, the robot uses the same ruler it already draws on screen — your configured Stop Loss or, with none enabled, the asset's volatility. It is not a number invented for that account: it is the same reference you see on the chart line.

Why they are not left out. Up to robot 5.0 (internal build 5.7.184) they added zero, on the reasoning that risk without a stop is unlimited and one should not invent a number. The problem measured in practice: adding zero is not neutral — it is stating that the risk is zero. With unprotected positions in the account, the cap was blind to most of the exposure and ended up refusing precisely the new order that carried a stop — blocking the disciplined behaviour and releasing the uncovered one.

What to do when it appears. If the refusal is caused by the part estimated, the robot says so in the message itself and recommends the right fix: put a stop on those positions (or close them). Loosening the cap hides the problem instead of solving it.

Quick summary

Forex / Crypto / CFD: margin shows normally, hedge account, volume in lots.
B3 futures (WIN/WDO): B3 margin (may be "N/A" on demo), netting account, volume in contracts, RETURN filling.
B3 cash equities: no margin (you pay the full amount), netting, RETURN filling.
"N/A" in the margin = the broker did not report the figure, it is not an error. Balance and free margin remain correct.

🤖 MQL ROBOT INITIAL SETTINGS

This is the robot's first settings group. It defines the robot's identity and some general behaviour for how it trades and shows information to you.

Think of this group as the robot's "registration form": who it is, what its name is, and a few basic preferences about how it should behave.

In the MT5 settings window, each parameter has an icon showing the type of value: ✏️ = text or number field (you type it) | ☑️ = checkbox (you turn it on or off)
✏️
✏️ MY MQL TRADER ROBOT ID
This is the robot's identification code — like a licence plate. It appears everywhere the robot leaves a mark: on the chart buttons and panels, in the comments of open orders, in the messages sent to Telegram and in the terminal logs.

If you run more than one robot on the same computer or account, each needs a different ID so they do not get mixed up. For example: ROBO_01, ROBO_02, OURO_001.

⚠️ If you change the ID while the robot is running, the old buttons and panels stay "stuck" on the chart. To clear them, just remove the robot and drop it back on the chart.
Default: ROBO_01Text
✏️
✏️ MY ROBOT NAME
This is your robot's friendly, readable name — unlike the ID, which is technical, the name is what you would like written out in full. It appears in the terminal log when the robot starts or stops, and in reports sent via Telegram.

❌ It does NOT change the visual panels on the chart — they use the fixed text "MQL PRO TRADER" regardless of what you put here.
Default: MQL PRO TRADERText
☑️
☑️ ENABLE SECONDARY ASSETS
Sets whether the robot may use the secondary assets A2 and A3 configured in the Multi-asset blocks. With this on, the EA can show/manage the account view and unlock A2/A3 features as the other inputs allow.

✅ ON: enables the A1/A2/A3 multi-asset flow, including panels, filters and multi-asset manual commands.
✅ OFF: the EA is restricted to the current chart's asset (_Symbol); the panel's A2/A3 toggles will have no operational effect.
Default: OnYes/No
☑️
☑️ Show profit with Swap+Commission
Sets how the robot calculates and shows the profit of your open positions. Swap is the cost of holding a position overnight. Commission is the fee the broker charges per trade.

✅ OFF (default): The profit shown is "gross profit" — only the result of the price move, with no fees deducted (more optimistic).
✅ ON: The profit shown already deducts swap and commission, showing the real profit you will actually receive (more realistic).

Affects every profit figure shown on the panels and sent to Telegram.
Default: OffYes/No
☑️
☑️ Visual alert when MT5 is misconfigured
The robot needs MT5 to be set up correctly in order to work — for instance, it needs permission to send messages over the internet, and AutoTrading must be enabled.

✅ ON (Recommended): If MT5 is not set up correctly, an on-screen warning explains what needs adjusting. Recommended for beginners.
✅ OFF: The alert does not appear. For advanced users who already know how to set up the terminal and do not want to be interrupted.
Default: OnYes/No

⚙️ ENTRY CONTROLS (🤖 MQL ROBOT)

This group controls how and when the robot may open orders automatically. Here you set whether the robot is on or off, how many orders it may open, and which "safety locks" it must respect before entering a trade.

Think of this group as the robot's "entry rules" : it only opens an order if every rule you set here is satisfied at the same time.

☑️
☑️ ENABLE TRADING ROBOT
Turns the robot's automatic entries on or off. With it off, the panels keep working and so does manual trading via the buttons. The status shows in real time through the colour of the badge MQL PRO TRADER at the top of the ticket: green = ON, gold = OFF.
Default: OnYes/No
☑️
☑️ ⚡ ENABLE Scalping Mode (RECOMMENDED)
Sets when the robot checks whether it may enter.
✅ ON: Checks on every price tick — ideal for scalping (M1, M5).
✅ OFF: Only checks at the close of each candle — for longer-term strategies (H1, H4).
Default: OnYes/No
✏️
✏️ ROBOT VOLUME (BUY1-10/SELL1-10 without SetVolume[])
Sets the lot of the orders opened automatically by the robot when the BUY/SELL expressions do not set their own volume with SetVolume[].

⚠️ If the expression already uses SetVolume[], this value is ignored for it.
🎯 It applies to the asset the line asks for: with @A2MARKET / @A3MARKET the order goes to A2 / A3 with this lot (up to 5.7.214, a line without SetVolume[] opened on the chart's asset).
🛑 Below the broker's minimum lot (WIN and WDO: 1 contract) the order is refused and the panel warns you — the robot never raises the lot on its own. Forex and crypto: 0.01; WIN/WDO: 1.
📌 The volume of manual trades (ticket and chart buttons) is configured separately under ⚙️ GENERAL SETUP FOR MANUAL TRADING.
Default: 0.01Decimal number
✏️
✏️ Max open POSITIONS per direction (0=unlimited)
How many positions the robot may have open at once in each direction (buys and sells counted separately).
✅ 0: No limit.
✅ 1, 2, 3... Limits to that number per direction.
⚠️ It is a cap, not a quantity to open: setting 5 does not make the robot open 5 orders, it only blocks the sixth. Pending orders have their own limit, in the parameter just below (✏️ Max PENDING ORDERS per direction (0=unlimited)).
Default: 0 (unlimited)Whole number
☑️
☑️ Limit entries per candle
Stops the robot from firing several orders inside the same candle. When on, it respects the limit set in the next parameter.
Default: OnYes/No
✏️
✏️ Max entries per candle (per direction)
How many times the robot may enter per direction in each candle. ⚠️ The limit is per direction — at 1 it can open 1 buy and 1 sell in the same candle.
Default: 1Whole number
☑️
☑️ Reset counter on new candle
When on, the entry count restarts on every new candle — that is, the robot can enter normally again on the next bar. Always leave this on.
Default: OnYes/No
☑️
☑️ Distance filter for auto entries
Stops the robot from chasing the price: if the breakout already happened and price has moved too far, the entry is discarded. The reference point is the previous candle ([1]): on a BUY the robot measures from the ask up to the high of the previous candle; on a SELL, from the low of the previous candle down to the bid. While price has not yet passed that reference the distance is negative and the filter does not get in the way — it only acts after price has broken out. The maximum tolerated distance is set in the next parameter.
Default: OnYes/No
✏️
✏️ Max distance from reference price (pts)
How many points price may have moved beyond the reference (previous candle's high/low) with the entry still valid.
⚠️ The "point" here is the same one used by SetSL[] — the TRADER's point, not the broker's tick. It is the robot's single ruler, and it changes from one market to another: on gold and Bitcoin 1 point = US$ 1.00 (so the default of 10 means US$ 10); on WIN$ 1 point is 1 index point; on PETR4, 1 cent; on EURUSD, 1 pip. See the full table under What "1 point" means in each market.
How to find your value: the robot measures the asset and warns you on the panel — "[asset] moves ~N pts/candle; the filter skips entries over X pts past the prior candle's high/low". Use between 20% and 50% of that N. Order of magnitude on M1: BTCUSD → 2 to 30 · XAUUSD → 2 to 20 · WIN$ → 100 to 250 · EURUSD → 2 to 4 · B3 shares → 3 to 10.
The default of 10 points works on forex and gold, but is far too tight on WIN$ (10 index points). Check it before switching the automation on — or turn the filter off, if your strategy is precisely to enter on the breakout.
💡 If you calibrated this field before robot 5.7.93, re-read the number: back then the filter measured in broker ticks, and the same 10 was worth US$ 0.10 on Bitcoin.
Default: 10 pointsWhole number (points)⚠️ review it per asset
☑️
☑️ Skip order if position exists in the direction
Stops the robot from opening a new buy if a buy is already open, and the same for sells. Prevents positions stacking up in the same direction.
📌 To limit by an exact number, use Max orders per direction.
Default: OffYes/No
✏️
✏️ Robot direction (Buy/Sell/Both)
Sets whether automatic entries may open buys, sells or both directions. This state can also be changed with the ▲BUY, ▲BOTH▼ and ▼SELL buttons of the MQL Manager.
Default: BOTHList
☑️
☑️ Close opposite position before entering
When on, before opening an automatic buy the robot closes open sells; before opening an automatic sell, it closes open buys. Use it only when your strategy requires an automatic flip.
Default: OffYes/No
☑️
☑️ Only manage positions the robot opened (not manual ones)
Off (the default), the robot also manages the positions you open by hand on the same asset: the exits and MODIFY of your expressions, the commands @CloseBest/@CloseWorst/@CancelPending, the Flatten opposite position, Breakeven, the Trailings, the candle stop, profit giveback, the Time stop and pending-order expiry all act on them. On, this automatic management only touches what the robot's entry rules opened. Left out: the positions and pending orders you open through the ticket, the buttons, shortcuts or mouse, the Desk or Telegram, shadow orders, the Invert button, copies (Copy) and those opened in MetaTrader, on your phone or by another robot. Use it when you load a strategy (from the Arsenal, for example) and want to trade by hand on the same asset without its end-of-day flattening or Breakeven touching your position.

What does not change: your commands (ticket, panel, Desk, Telegram) still act on everything; the account protections (double drawdown, daily profit protection) keep their own reach; and the expression variables (BUYCOUNT, BPROFIT…) still count every position on the asset — the parameter decides what the robot touches, not what it sees. Netting account (the rule at B3 brokers): MetaTrader adds everything into a single position per asset, so your part cannot be separated from the robot's — there the parameter only applies to pending orders, and the Journal says so.
Default: OffYes/No
✏️
✏️ Clock for TIME/DAYOFWEEK (Server/Local)
Chooses whether the expression variables TIME and DAYOFWEEK use the broker server's time or the computer's local time.
Default: ServerList

🎯 ENTRY SYSTEM — HOW THE ROBOT DECIDES

This section describes the decision flow the robot follows to open an automatic order. The parameters that control each stage are in the group ⚙️ ENTRY CONTROLS (🤖 MQL ROBOT) — here you learn the order in which they are applied.

The robot only fires an order when every condition passes at the same time. If any stage blocks, the expression is ignored on that tick and re-evaluated on the next one.

Decision pipeline (real execution order)

#StageBlocks if...Controlling parameter
1Robot on?Robot disabled by the panel or the inputENABLE TRADING ROBOT + toggle ROBOT of the MQL Manager
2Direction allowedCurrent direction is BUY-ONLY and the expression is a sell (or vice versa)Robot direction + buttons ▲BUY / ▲BOTH▼ / ▼SELL
3Context filtersOutside the hours, day or session; spread above the limit; news window activeHours, Sessions, Spread, News Detector
4Daily locksLock from the daily loss/profit being hit, double drawdown triggeredDaily Lock, Drawdown, Profit Protection
5BUY/SELL expression evaluatedThe expression's condition returns falseBUY1–BUY10 / SELL1–SELL10
6Custom filtersSome active Buy/Sell filter returns falseFiltro_Buy_1..10 / Filtro_Sell_1..10
7Distance filterCurrent price is farther than the Maximum distance from the reference levelDistance filter for automatic entries + Max distance (pts)
8Per-candle limitsAlready reached the Max entries per candle for the current directionLimit entries per candle + Max entries + Reset on new candle
9Position limitsAlready has an order in the same direction (if Avoid same direction) or already reached Max orders per directionSkip order if position exists in the direction + Max orders per direction
10Volume and protections—Volume (from the input or SetVolume[]), SL/TP from the protections group
11Flatten opposite positionIf on, closes the opposite side before enteringFlatten the opposite position before entering
Want to see where your expression is being blocked? Turn on the Errors in expressions log under LOG / DEBUG and the robot reports in MT5's Experts tab at which stage the signal was rejected.

🔄 SEVERAL ORDERS ON THE SAME SIGNAL

There is no parameter of the sort "open N orders". What makes the robot open several orders on the same signal are the 10 expression slots: ✏️ BUY expression [01] to [10] (and the sell ones), which in the file .set are called BUY1…BUY10 and SELL1…SELL10. Write the same condition in several slots and out comes one order per slot — and each slot can have its own volume and its own target.

With the factory values only ONE order comes out. The ☑️ Limit entries per candle ships on and ✏️ Max entries per candle (per direction) ships at 1: from the second slot onwards the robot refuses the entry in the same candle, and the reason only shows in the log. For 3 orders together, set 3 — or switch the limit off.

Different volume and target on each order

It is each slot's action that decides this, not a group of parameters. In the expression's own text:

SlotExampleResult
BUY1HIGH[0]>HIGH[1] @MARKET -> SetVolume[0.01] SetTP[300]1st order: 0.01 lot, target 300
BUY2HIGH[0]>HIGH[1] @MARKET -> SetVolume[0.02] SetTP[600]2nd order: 0.02 lot, target 600
BUY3HIGH[0]>HIGH[1] @MARKET -> SetVolume[0.03] SetTP[900]3rd order: 0.03 lot, target 900

The ceilings live in two other parameters, and they are a limit, not a quantity to open: ✏️ Max open POSITIONS per direction (0=unlimited) and ✏️ Max PENDING ORDERS per direction (0=unlimited). Putting 5 there does not open 5 orders — it merely stops the sixth.

If you double the volume on each slot, that is Martingale. The robot does not ship that pattern ready-made: the one writing each slot's volume is you. Doubling from 0.01, the tenth entry would be 5.12 lots — check that your account's margin can take the worst case before building the ladder.

ENTRY CONDITIONS — BUY

Where this sits on the robot's screen. On the Inputs these fields appear under the name ✏️ BUY expression [01] to [10] — and the sell ones, ✏️ SELL expression [01] to [10]. In this manual, for brevity, we also write BUY1…BUY10 and SELL1…SELL10: it is the same field, and that is what it is called inside the .set.

The 8 expression groups — 80 fields in total

All of the robot's automation is written in these fields. There are 8 groups of 10, and each one's name says exactly what it does:

In the InputsQtyWhat it is forIn the file .set
✏️ BUY expression [01]…[10]10The condition that opens a buy.BUY1…BUY10
✏️ SELL expression [01]…[10]10The condition that opens a sell.SELL1…SELL10
✏️ BUY exit expression [01]…[10]10Closes buys that are already open when the condition happens.EXIT_BUY1…EXIT_BUY10
✏️ SELL exit expression [01]…[10]10Closes sells that are already open.EXIT_SELL1…EXIT_SELL10
✏️ (TP/SL/BE/TS) BUY expression [01]…[10]10Moves the stop and the target of a buy that is already open, without closing it.MODIFY_BUY1…MODIFY_BUY10
✏️ (TP/SL/BE/TS) SELL expression [01]…[10]10The same, for sells.MODIFY_SELL1…MODIFY_SELL10
✏️ BUY Filter expression [1]…[10]10Permission, not entry: it only lets the buy through if the condition is true.CustomFilter_Buy_1…_10
✏️ SELL Filter expression [1]…[10]10The same, for sells.CustomFilter_Sell_1…_10
Two things that confuse people at first.
• A filter does not open an order — it only authorises or blocks whatever the BUY/SELL expression tries to open. Each filter has its own on/off switch (☑️ Enable Filter 1… in the BUY group and in the SELL group, with the same name in both).
• Exit ≠ Modification: the Exit one closes the position; the (TP/SL/BE/TS) one only moves the stop or the target and leaves the position alive.
The panel only shows 5 filters per side (F.C1…F.C5 and F.V1…F.V5). Filters 6 to 10 do exist and work, but they can only be switched on from the Inputs — there is no button for them in the Manager.

🔢 Free numbers P1..P5 — the number the tester optimizes

Right below the expressions, the F7 window has the group 🔢 FREE NUMBERS P1..P5, with five numeric fields. Write P1 inside any expression instead of a number, as in DAYCHG<-P1. A number typed inside the expression text cannot be optimized by the MT5 Strategy Tester, which only optimizes numeric fields; P1 can. This is how you find which % drop works best on an asset: optimize P1 from 0.5 to 3 in steps of 0.25.

🔢
✏️ P1 - free number for expressions (e.g. DAYCHG<-P1)
The number typed here is used whenever an expression mentions P1, on either side of the comparison and inside math. Fields P2 to P5 work the same way, each with its own name.
Default: 0Number
🔢
✏️ P2 - free number for expressions (e.g. BID
Same as P1: the number typed here is used whenever an expression mentions P2.
Default: 0Number
🔢
✏️ P3 - free number for expressions (e.g. ADRUSED[14]>=P3)
Same as P1: the number typed here is used whenever an expression mentions P3.
Default: 0Number
🔢
✏️ P4 - free number for expressions (e.g. ZCHG[20]<-P4)
Same as P1: the number typed here is used whenever an expression mentions P4.
Default: 0Number
🔢
✏️ P5 - free number for expressions (e.g. DOWNDAYS>=P5)
Same as P1: the number typed here is used whenever an expression mentions P5.
Default: 0Number

This group is the heart of the automatic robot. Here you write the rules that tell the robot when to open buys. There are 10 independent slots — each slot is a separate rule, checked constantly.

Structure of an expression

[CONDIÇÕES] @TIPO_DE_ORDEM -> [AÇÕES_OPCIONAIS]

Exemplo:
HIGH[0]>HIGH[1] && DIR[0]==1 @MARKET -> SetVolume[0.01]

Read in plain language: "If the current candle's high is greater than the previous candle's high AND the candle is bullish, open a market buy with 0.01 lots."

Candle variables

VariableMeaning
HIGH[0]The current candle's high
HIGH[1]The previous candle's high
LOW[0]The current candle's low
CLOSE[0]The current candle's close
OPEN[0]The current candle's open
DIR[0]The candle's direction: 1 = up, -1 = down
ASKThe current buy price
BIDThe current sell price

Open position variables

VariableMeaning
VOLBUYThe total volume of open buys
VOLSELLThe total volume of open sells
BPROFITThe profit/loss of the open buys (in money)
SPROFITThe profit/loss of the open sells
PROFITOThe profit/loss of EVERY open position
DPROFITThe day's total profit (closed + open)
LASTBUYThe price of the last buy opened (on a netting account or on the exchange: the price of the last execution added to the position)
LASTSELLThe price of the last sell opened (on a netting account or on the exchange: the price of the last execution added to the position)

Detailed profit and volume variables

Versions split by side (buy/sell) and by result (profitable/losing), plus variants that add everything up. Useful for fine risk management. All of them are A1-only.

VariableMeaning
BPROFITPOS / BPROFITNEGThe summed profit of the profitable buys only / the losing ones only
SPROFITPOS / SPROFITNEGThe same for sells
BPROFITO / SPROFITOThe total profit of EVERY open buy / EVERY open sell
BPROFITALL / SPROFITALLThe total buy / sell profit (excluding swap and commission)
CPROFITALL / VPROFITALLThe total buy / sell profit (including swap and commission)
PROFITALL / CLOSEALLThe account's total profit (open buys + sells)
VOLBUYPOS / VOLBUYNEGThe open volume of profitable / losing buys
VOLSELLPOS / VOLSELLNEGThe open volume of profitable / losing sells
FREE_MARGINThe free margin available in the account

Closed position variables

They read data from the last finished trade — useful for re-entry, recovery, or to avoid repeating straight after a loss. A1-only.

VariableMeaning
ENTRYBUY / EXITBUYThe entry / exit price of the last closed BUY
ENTRYSELL / EXITSELLThe entry / exit price of the last closed SELL
SLBUY / TPBUYThe Stop Loss / Take Profit the last closed BUY had (0 if it had none)
SLSELL / TPSELLThe same for the last closed SELL
TEXITBUY / TEXITSELLThe duration in minutes of the last closed BUY / SELL
LASTBUYTIME / LASTSELLTIMEMinutes since the last buy / sell CLOSED (the robot reads today's closes; 0 until it has seen one)
RESULTB[30] / RESULTS[30]The profit of buys / sells closed in the last N minutes (e.g. 30)

Detailed daily and weekly statistics

Besides DPROFIT and DWINRATE (already listed), the EA splits the statistics by side. The D prefix = day, W = week. A1-only.

VariableMeaning
DBUYTRADES / DSELLTRADESThe total buy / sell trades closed in the day
DBUYWINCOUNT / DBUYLOSSCOUNTWinning / losing buys in the day
DSELLWINCOUNT / DSELLLOSSCOUNTWinning / losing sells in the day
DBUYWINRATE / DSELLWINRATEThe win rate (%) of buys / sells in the day
The same ones exist for the week with the prefix W: WBUYTRADES, WBUYWINCOUNT, WBUYWINRATE, WSELLWINRATE, and so on.

Time variables

VariableMeaning
TIMEThe current time (e.g. TIME>9 = after 09:00)
DAYOFWEEKDay of the week: 1=Monday ... 5=Friday
NEWSIN[15]It returns 1 if there is high-impact news in the next 15 min

Phase A/B variables — Timing, Session, Risk and News

Variables confirmed in the EA at buffers 430 to 448. The session ones use the same time reference as TIME. The risk/tracking ones below are A1-only, meaning they refer to the chart's main asset.

VariableWhat it returnsTypical use
NOVOBAR1 on the first tick of a new bar; then it goes back to 0NOVOBAR==1 && CLOSE[1]>OPEN[1]
⚠️ The golden rule of NOVOBAR: always use it with the CLOSED candle (index [1]).
The NOVOBAR is 1 for a single instant — the bar's first tick. And at that instant the current candle ([0]) has only just opened: its high is still practically the opening price. That is why NOVOBAR==1 && HIGH[0]>HIGH[1] is a rule the robot accepts, evaluates and almost never fires: by the time price finally breaks the previous high (seconds later), NOVOBAR has already gone back to 0. There is no error and no warning — the strategy simply never enters.
✅ Confirm at the close (one evaluation per candle): NOVOBAR==1 && HIGH[1]>HIGH[2] · NOVOBAR==1 && CLOSE[1]>OPEN[1]
✅ A breakout inside the bar (it fires the moment it happens): HIGH[0]>HIGH[1] — without the NOVOBAR. Here the condition is re-evaluated on every tick and can fire more than once inside the same candle: use the parameter Maximum open POSITIONS per direction (0=unlimited) to cap it.
The only exception where the combination with [0] does work is an opening gap, when the bar is born already above the previous high.
BARSEGSeconds since the current candle openedBARSEG>30
SESS_ASIA, SESS_LONDRES, SESS_NY1 when the session is activeSESS_LONDRES==1 && SPREADX<1.3
SPREADMEDThe EMA average of the spread in points, updated in real timeSPREAD<SPREADMED*1.5
SPREADXThe current spread divided by the average spread. 1.0 = normal; 2.0 = twice the normalSPREADX<1.3
PFDIAThe Profit Factor of the trades closed in the dayPFDIA>1.5 && DTRADES>=3
NEWSIMPThe next news item's impact: 1 low, 2 medium, 3 highNEWSIMP<3
NEWSCTY1 if the next news item affects the asset's currency/pairNEWSIMP==3 && NEWSCTY==1
RISCO_ABTotal open risk in money if every A1 SL is hit. ⚠️ Counts only positions that have a stop — whoever has no stop adds zero here. That is why this number can be smaller than the "combined open risk" of the risk limit, which estimates positions without a stop (see The OPEN risk limit). They are two different questions: here it is "how much do I lose if my stops fire"; there it is "what is my real exposure".RISCO_AB<100
ALVO_ABThe total potential target in money if every A1 TP is hitBPROFIT>ALVO_AB*0.5
DIST_SL, DIST_TPThe distance in points to the SL/TP of the most recent A1 positionDIST_TP<30
RMULTThe current profit/loss divided by the position's initial riskRMULT>=1 @BCLOSE -> ClosePercent[50]
SEQWIN, SEQLOSSThe streak of wins or losses closed todaySEQLOSS<2
POSMIN, POSMAXThe worst and the best floating profit ever seen on the A1 position since the EA started tracking itPOSMAX>50 && BPROFIT<POSMAX-20

Phase D variables — Average Price, Margin, Counts and Signals

Account variables, open positions and signal memory. The average price and the counts refer to the robot's positions on the chart's asset (A1). Ideal for grid, recovery and exposure control.

VariableWhat it returnsTypical use
AVGPRICEThe weighted average price of EVERY open position (buy+sell) on the assetBID>AVGPRICE @BCLOSE
BUYAVGPRICE / SELLAVGPRICEAverage price of the buys only / sells only opened BY THE ROBOT (the BPRICE counts all of the asset's)BID<BUYAVGPRICE-100 @MARKET -> SetVolume[VOLBUY*2]
TIMELEFTSeconds left until the current candle closesTIMELEFT<10 @BCLOSE
MARGINLEVELThe margin level in % (999999 when there are no positions)MARGINLEVEL>200 && DIR[0]==1 @MARKET
MARGINFREEThe free margin available (the same as FREE_MARGIN)MARGINFREE>500
ALLPOSOPENThe number of open positions (buy+sell) on the assetALLPOSOPEN<3 && DIR[0]==1 @MARKET
BUYPOSOPEN / SELLPOSOPENThe number of open buy / sell positionsBUYPOSOPEN<5 @MARKET -> SetVolume[0.01]
GAINPROFIT / LOSSPROFITThe sum of the gains only / the losses only of the trades closed in the dayLOSSPROFIT>-100
SIGLASTThe last entry signal fired: 0=buy, 1=sell, -1=noneSIGLAST==1 && DIR[0]==1 @MARKET
SIGTOTALThe total entry signals fired in the day (buy+sell) — a pending order counts when it is placedSIGTOTAL<5 && DIR[0]==1 @MARKET
SIGBUY / SIGSELLThe counter of buy / sell signals in the daySIGBUY<3 @MARKET -> SetVolume[0.01]
Companions: SIGPRICE (the last signal's price), SIGTIME/SIGTIMEBUY/SIGTIMESELL (the time of the last signals).

Indicator variables (IND)

VariableMeaning
IND1[buffer,candle]Indicator 1's value — e.g. IND1[0,0] = buffer 0, current candle
IND2[0,0]Indicator 2's current value (buffer 0, current bar)
There are 30 indicators (IND1 the IND30). The number in [ ] says how many candles back — 0 = current, 1 = previous. Where to declare each one is right below.

How to declare an indicator (IND1 to IND30)

On the Inputs, look for the title 🤖️ INDICATORS FOR EXPRESSIONS SETUP. Each of the 30 indicators always has the same three fields — only the number changes. Filling in IND1 works exactly like filling in IND30.

☑️
☑️ Enable IND1
Switches the indicator on. Switched off, IND1[0,0] has no value and the expression that depends on it never enters.
Default: NoYes/No
✏️
✏️ INDICATOR NAME
The robot recognises these by name: RSI, MACD, STOCH (or STOCHASTIC), ADX, ATR, BB (or BBANDS/BOLLINGER), EMA, SMA (or MA) and PRICE. Upper or lower case makes no difference.
🔑 Any other name is treated as a custom indicator — the robot looks for the .ex5 with that name in your indicators folder. Leaving it blank (or NONE) switches it off.
Default: RSIText
✏️
✏ INDICATOR PARAMETERS
A single line, comma-separated, always in this order:
window , asset , timeframe , indicator parameters…
• window: NEW opens the indicator in a separate window; 0 draws it on the main chart.
• asset: SYMBOL (or blank) uses the chart's asset; or write another one, e.g. EURUSD.
• timeframe: M1, M5, M15, M30, H1…
• from the fourth field onwards come the indicator's own parameters, in the same order MT5 asks for them.
⚠️ Fewer than 3 fields and the indicator does not load — the robot logs CSV invalido (min 3 campos) in the journal and the expression using that IND is left with no value.
Default: NEW,SYMBOL,M5,14,0Text (CSV)
I want…NAMEPARAMETERS
A 14 RSI on M5RSINEW,SYMBOL,M5,14,0
MACD 12/26/9 on M5MACDNEW,SYMBOL,M5,12,26,9,0,0
Stochastic 5/3/3STOCHNEW,SYMBOL,M5,5,3,3,1
A 21 exponential average on the chartEMA0,SYMBOL,M5,21,1,0
EURUSD's RSI on H1 (another asset)RSINEW,EURUSD,H1,14,0

Multi-asset variables (A2 / A3)

If you have set up a secondary (A2) or tertiary (A3) asset in the Multi-Asset Group, you can use them in expressions as a confirmation filter or to open an order directly on that asset.

VariableMeaning
A2HIGH[0]A2's current candle high
A2LOW[0]A2's current candle low
A2CLOSE[0]A2's current close
A2VOLBUYThe volume of open buys on A2
A2BPROFITThe profit of the open buys on A2
A2DPROFITThe day's total profit on A2
A2BUYCOUNTThe number of open buy positions on A2
A2LASTBUYThe price of the last buy opened on A2
A3 mirrors A2: every token above exists with the prefix A3 (A3HIGH[0], A3CLOSE[0], A3VOLBUY, A3BPROFIT, A3DPROFIT, A3BUYCOUNT, A3LASTBUY, ...). Both A2 and A3 also cover the complete history families of the day (A2DTRADES, A2DWINRATE, A2DLOSSES...), of the week (A2WPROFIT, A2WWINRATE...), current price (A2ASK, A2BID, A2SPREAD) and open positions (A2SELLCOUNT, A2POSTIME, A2PROFITALL, A2LASTSELL). An alternative syntax is accepted: the prefix S2_ / S3_ (e.g. S2_DPROFIT = A2DPROFIT).

Order types

TypeWhat it does
@MARKETOpens immediately at the current price. The most used type.
@LIMIT[N]⭐ A pending order N points in favour of the pullback: on a BUY = a limit N pts below the price; on a SELL = a limit N pts above. E.g. @LIMIT[50]
@STOP[N]⭐ A pending order N points on the breakout: on a BUY = a stop N pts above the price; on a SELL = a stop N pts below. E.g. HIGH[0]>HIGH[1] @STOP[100] (breakout)
@LIMIT[$X] / @STOP[$X]⭐ The same thing, but with the distance in price value instead of points — the robot converts it on its own. It pays off where 1 point not equals 1 price unit: @STOP[$0.0030] on EURUSD (pips), @STOP[$0.50] on PETR4 (cents). On gold, Bitcoin, WIN$ and WDO$ it is redundant (there 1 point already is 1 price unit, so @STOP[$20] = @STOP[20]).
@A2MARKETOpens the order directly on the secondary asset A2
@A3MARKETOpens the order directly on the tertiary asset A3
The position a pending order opens belongs to the expression that placed it, just like a market order (since robot 5.7.217): the MODIFY of the same expression, the linked exit @BCLOSE:N and the "which rule fired" notice find it. And the pending order counts as a signal (SIGTOTAL, SIGBUY, SIGSELL) the moment it is placed — filled or not.

Optional Actions after the Arrow ->

ActionEffect
SetVolume[0.01]Sets the order's exact volume
SetVolume[VOLBUY*2]Volume = twice what is already bought
SetTP[50]Sets the Take Profit at 50 points
SetSL[30]Sets the Stop Loss at 30 points
SetRiscoPct[1]Risks 1% of the balance on that trade. The robot works out the volume so that, if the stop is hit, the loss is 1% — using the SL distance and the asset's point value. It requires an SL (from the expression or from the inputs); without one the robot warns you and keeps the normal volume instead of guessing. It works on any market: 1% of R$ 100,000 with a 200 pt SL on the mini index = 25 contracts; with an R$ 1.00 SL on PETR4 = 1,000 shares
SetVolume[COND ? A : B]⭐ Ternary: it uses volume A if the condition is true, otherwise B. E.g. SetVolume[BID>AVGPRICE ? 0.02 : 0.01]. It recognises prices (ASK/BID), Phase C and Phase D.
Mathematical operators inside values and SetVolume[]: + addition, - subtraction, * multiplication, / division and % ⭐ the remainder of a division (e.g. CLOSE[0]%10 = what is left over when the price is divided by 10). Parentheses group MATH only; they do NOT group conditions, and using them that way makes the robot reject the whole expression — see the "( )" row in the Library syntax table.

Ready-made buy examples

// Buy when the high breaks the previous candle's:
CLOSE[0]>HIGH[1] && DIR[0]==1 @MARKET -> SetVolume[0.01]

// Martingale: double the lot if there is already a position:
DIR[0]==1 && VOLBUY>=0.01 @MARKET -> SetVolume[VOLBUY*2]

// With trading hours and no news:
TIME>9 && TIME<17 && DIR[0]==1 && NEWSIN[15]==0 @MARKET -> SetVolume[0.01]

// Bullish engulfing candle:
DIR[0]==1 && CLOSE[0]>OPEN[1] && OPEN[0]<CLOSE[1] @MARKET

// With an indicator — buy when RSI (IND1) is below 30:
IND1[0,0]<30 @MARKET -> SetVolume[0.01]

// Buy on A1 only if A2 is also rising (correlation filter):
A2CLOSE[0]>A2CLOSE[1] && DIR[0]==1 && VOLBUY<0.01 @MARKET -> SetVolume[0.01]

// Open an order directly on A2 when A1 has a signal:
DIR[0]==1 && A2VOLBUY<0.01 @A2MARKET -> SetVolume[0.01]
A line starting with // or # is a comment — the robot ignores it completely. Useful for switching a rule off temporarily without deleting it. Slots with an empty value ("") are also ignored automatically.
The 10 slots are independent — each one is a separate strategy. The robot checks them all at the same time: if BUY3 fires, it opens an order; if BUY7 fires in the same candle too, it opens another. Use this to stack different strategies or to build a martingale system across slots.

ENTRY CONDITIONS — SELL

On the Inputs these fields appear as ✏️ SELL expression [01] to [10]. The short form SELL1…SELL10 used in this manual is the same field — and it is its name inside the .set.

It works exactly like the buy expressions, only mirrored to the sell side. The logic is identical: 10 independent slots for rules on when to open sells.

Differences from buys

BuySell (equivalent)
VOLBUYVOLSELL
BPROFITSPROFIT
LASTBUYLASTSELL
DIR[0]==1 (up)DIR[0]==-1 (down)

Ready-made sell examples

// Sell when the low breaks the previous candle's:
CLOSE[0]<LOW[1] && DIR[0]==-1 @MARKET -> SetVolume[0.01]

// Sell-side martingale:
DIR[0]==-1 && VOLSELL>=0.01 @MARKET -> SetVolume[VOLSELL*2]

// Bearish engulfing candle:
DIR[0]==-1 && CLOSE[0]<OPEN[1] && OPEN[0]>CLOSE[1] @MARKET

// Hedge: open a sell matching the buy volume:
DIR[0]==-1 @MARKET -> SetVolume[VOLBUY]
You can use BUY and SELL at the same time with opposite strategies, building a robot that trades both directions without interference — each group manages its own side independently.

EXIT CONDITIONS — BUY

It sets the rules for the robot to CLOSE open buys automatically. It works on the same logic as the entry expressions, but uses specific closing types.

Available close types

TypeWhat it does
@BCLOSECloses all the open buys
@BCLOSE_POSITIVECloses only the buys in profit
@BCLOSE_NEGATIVECloses only the buys in loss
@A2BCLOSECloses every open buy on A2
@A2BCLOSE+Closes only the profitable buys on A2
@A2ALLCloses EVERY position on A2 (buy + sell)

Most used variables in exits

VariableMeaning
BPROFITThe total profit/loss of the buys (in $)
PROFITOThe profit/loss of EVERY position together
VOLBUYThe total volume of open buys
BPRICEThe average entry price of the open buys
A2BPROFITThe profit of the open buys on A2

Ready-made examples

// Close every buy once they profit R$50:
BPROFIT > 50 @BCLOSE

// Close only the buys in profit (partial take):
BPROFIT > 20 @BCLOSE_POSITIVE

// Close buys when RSI (IND1) reaches overbought:
IND1[0,0] > 70 @BCLOSE

// Close buys outside trading hours:
TIME >= 17 @BCLOSE

// Close on profit OR loss (two slots):
BPROFIT > 100 @BCLOSE
BPROFIT < -50 @BCLOSE

// Close A2 buys using A2's profit:
A2BPROFIT > 50 @A2BCLOSE
Careful: The field BUY exit [03] does not close only specific positions. The tokens @BCLOSE close all the buys, regardless of which field opened them. The field's number only says which expression will be evaluated.
Exiting by TIME is not done here. These expressions' variables measure price and result — there is none that says how long the position has been open. If what you want is "if it has not moved in 2 hours, close it", the way is the Time stop exit, which is a parameter of its own. (For the time of the day, that one the expressions can do.)

EXIT CONDITIONS — SELL

A mirror of the buy exits, but for closing sells.

TypeWhat it does
@SCLOSECloses all open sells
@SCLOSE_POSITIVECloses only the sells with a profit
@SCLOSE_NEGATIVECloses only the sells with a loss
// Close every sell once they profit R$50:
SPROFIT > 50 @SCLOSE

// Close only the sells in profit:
SPROFIT > 20 @SCLOSE_POSITIVE

// Fechar por RSI em sobrevenda:
IND1[0,0] < 30 @SCLOSE
Exiting by TIME is not done here. These expressions' variables measure price and result — none of them tells you how long the position has been open. For "if it has not moved in 2 hours, close it", use the Time stop exit. (For time of day, the expressions do the job.)

ORDER MODIFICATION — MODIFY_BUY / MODIFY_SELL

It lets you adjust the Stop Loss, Take Profit or switch on Trailing Stop on orders that are already open, based on market conditions. It neither opens nor closes orders — it only modifies existing positions.

Modification tokens

TokenWhat it does
@MODIFYModifies only the positions opened by the entry with the SAME number: the BUY (TP/SL/BE/TS) expression [02] acts on the positions that BUY [02] opened
@MODIFYALLModifies EVERY position on the line's side, whichever entry opened it: in a BUY expression, every buy; in a SELL one, every sell
@A2MODIFYModifies open positions on A2
@A3MODIFYModifies open positions on A3

Actions available after ->

ActionWhat it does
SetSL[30]A fixed Stop Loss 30 points from the entry price
SetSL[BPRICE]Moves the SL to the entry price (Break Even)
SetSL[BPRICE+10]Moves the SL 10 points beyond the entry price (locked-in profit)
SetSL[BID-50]Moves the SL to 50 points below the current price (manual trailing)
SetSL[LOW[0]]Moves the SL to the current candle's low
SetTP[100]Sets a fixed Take Profit at 100 points
SetTP[BID+80]Moves the TP to 80 points above the current price (dynamic TP)
SetBE[0]Break Even — the SL goes to the exact entry price
SetBE[10]Break Even with 10 points of slack (a minimum profit locked in)
SetTS[50]Trailing Stop — the SL follows price keeping 50 points of distance
Progressive protection (BE, then trailing): put the BE in one expression (BPROFIT>50 @MODIFYALL -> SetBE[10] in [01]) and the trailing in the next one (BPROFIT>120 @MODIFYALL -> SetTS[60] in [02]). On the same position, once the HIGHER-numbered expression has acted, the lower-numbered one is blocked: the BE does not pull back the stop the trailing has already raised. With @MODIFY the two never touch the same position — each one only acts on those of the entry with the same number.
Positions you open by hand: every market order opened from the order ticket, the buttons, the shortcuts or the Central's Desk/Coach is born as number 1. That is why the BUY / SELL (TP/SL/BE/TS) expression [01] and the linked exit @BCLOSE:1 / @SCLOSE:1 also act on them — the robot manages your manual position. Numbers 2 to 10 only touch the positions of their own entry. To keep the robot away from manual positions, leave [01] empty or commented out (#) and use numbers 2 to 10 — or turn on ☑️ Only manage positions the robot opened (not manual ones).

You can combine actions in the same expression: SetSL[BPRICE+5], SetTP[BID+80]

Practical examples

// Simple Break Even — the SL moves to the entry price at R$50 profit:
BPROFIT > 50 @MODIFY -> SetSL[BPRICE]

// Break Even with locked profit — SL 10 points beyond the entry:
BPROFIT > 50 @MODIFY -> SetSL[BPRICE+10]

// Trailing Stop — the SL follows price on any profit:
BPROFIT > 1 @MODIFYALL -> SetTS[50]

// Manual trailing — SL 50 pts below the current price:
BID > LASTBUY+100 @MODIFY -> SetSL[BID-50]

// Stop on the candle (price action):
DIR[0]==1 && BPROFIT > 30 @MODIFY -> SetSL[LOW[0]]

// Global protection: if the day loses R$500, tighten the SL on all buys (repeat it in a SELL expression for the sells):
DPROFIT < -500 @MODIFYALL -> SetSL[3]

// Break Even on sells once they profit R$50:
SPROFIT > 50 @MODIFY -> SetSL[SPRICE]

// Break Even em A2:
A2BPROFIT > 30 @A2MODIFY -> SetSL[BPRICE]
Use conditions that only fire when the position exists (e.g. BPROFIT > 0) to avoid needless execution. In the MODIFY, BPRICE = the entry price of EACH buy (with a single position, it is the average price itself) | SPRICE = the same for the sells.

BUY AND SELL FILTERS

Filters are extra expression fields that you can switch on and off individually. The robot only takes an entry if every active filter for that direction is true at the same time.

There are 10 filters for buys and 10 filters for sells, all independent. By default only the first 5 on each side are visible on the panel — the others show up when you need them.

Decision flow:
1️⃣ The BUY or SELL expression evaluates → true
2️⃣ Every active filter for that direction is checked → all true
3️⃣ The order is executed

⚠️ Buy filters do not interfere with sells and vice versa. An empty or disabled filter is simply ignored.

How to enable and set up a filter

In the EA's parameters you will find two fields for each filter — the same ones that appear in the parameter list:

  1. ☑️ Enable Filter 1 (…up to 5), in the 🤖 BUY FILTER SETUP (01 to 05) group — tick it to switch the filter on. Unticked filters are ignored entirely by the robot.
  2. ✏️ BUY Filter expression [N] — write the condition here using the same syntax as the BUY/SELL fields
The values that come pre-filled are starting-point examples — they are not fixed rules. You can delete, rewrite or combine them as you please. Some examples of use:

HIGH[0]>HIGH[1] — only buy if the current high has taken out the previous one
A2HIGH[0]>A2HIGH[1] — confirm that the correlated asset (A2) is rising too
IND1[0,0]<30 — RSI below 30 as an oversold filter before buying
IND2[0,0]>IND3[0,0] — a crossover of two indicators as confirmation
TIME>=9.0 && TIME<=17.0 — only trade within a specific time window
SPREAD<15 — block entries when the spread is high

Using a filter in any expression — FBUY[N] / FSELL[N]

You can reference a filter inside any expression field — EXIT and MODIFY included. To do that use the tokens FBUY[N] and FSELL[N], where N is the filter's number.

Example: if you wrote RSI[0,0]<30 in the ✏️ BUY Filter expression 1field, then writing FBUY[1] in any other field evaluates exactly that condition at that moment.

TokenWhat it does
FBUY[1]It evaluates BUY Filter 1's condition — true if the expression is satisfied
FSELL[3]It evaluates SELL Filter 3's condition
FBUY[1] > 0An equivalent form of FBUY[1] — same result
Examples:

BUY1 = FBUY[1] @MARKET — it enters when BUY Filter 1's condition is true
EXIT1 = FSELL[2] @BCLOSE — it closes buys when SELL Filter 2 fires
BUY1 = RSI[1,0]<30 && FBUY[1] @MARKET — RSI oversold AND BUY Filter 1's condition
EXIT1 = SPROFIT[0]>50 || FSELL[1] @BCLOSE — target profit OR SELL Filter 1's condition

All of the syntax available in expressions works inside the filter fields too.

Indicators available in expressions and filters (IND1 to IND30)

Set up external indicators for use in expressions through the variables IND1[buffer, candle] to IND30[buffer, candle]. The parameters follow the format: NEW, SÍMBOLO, TIMEFRAME, param1, param2, .... Buffers are read by number; if you do not know the right buffer, use the EA's buffer analyser.

INDExample setupResult
IND1NEW,SYMBOL,M5,14,0A 14-period RSI on M5 of the current asset
IND2NEW,SYMBOL,M5,12,26,9,0,0MACD 12/26/9 — buffer 0 = the MACD line, buffer 1 = the signal
IND3NEW,SYMBOL,M5,5,3,3,1Stochastic — buffer 0 = %K, buffer 1 = %D
IND4NEW,SYMBOL,M5,9,1,0A 9-period EMA on M5
IND5NEW,EURUSD,D1,200,1,0A 200 daily EMA on EURUSD (a fixed asset)
IND6–IND20Block INDICATORS FOR EXPRESSIONS SETUP (6 TO 30)Extra indicators for bigger strategies, filters 6–10 and additional confirmations.
IND21–IND30Block CUSTOM INDICATORS (AI & EXPRESSIONS)Custom slots used by the AI and also available in expressions, reading buffers 0..7 when enabled.

Native indicators accepted: RSI, MACD, STOCH, EMA, SMA, ATR, ADX, BOLLINGER, CCI, WPR, DEMA, TEMA and others — the name has to match the file in MetaTrader.

💡 Strategy examples with filters

The fields come with example expressions already filled in — you can use them, change them or start from scratch. Below, reference uses by type of strategy:

GoalBUY FilterSELL Filter
Candle confirmation
A high/low beyond the previous one
HIGH[0]>HIGH[1] LOW[0]<LOW[1]
Correlation with asset A2
The secondary asset in the same direction
A2HIGH[0]>A2HIGH[1] A2LOW[0]<A2LOW[1]
Indicator crossover
E.g. IND2=MACD, IND3=MACD signal
IND2[0,0]>IND3[0,0] IND2[0,0]<IND3[0,0]
RSI — oversold / overbought
E.g. IND1=RSI(14) on M5
IND1[0,0]<30 IND1[0,0]>70
RSI — which side of the market (the 50 line)
Only trade on the right side of RSI
IND1[0,0]>50 IND1[0,0]<50
Stochastic — the extreme zone
E.g. IND3=Stoch %K on M5
IND3[0,0]<20 IND3[0,0]>80
Trend by MA crossover
E.g. IND4=EMA9, IND5=EMA21
IND4[0,0]>IND5[0,0] IND4[0,0]<IND5[0,0]
Continuation — IND rising/falling
IND rising for 2 candles
IND4[0,0]>IND4[0,1] && IND4[0,1]>IND4[0,2] IND4[0,0]<IND4[0,1] && IND4[0,1]<IND4[0,2]
Price in a support/resistance zone
Price below/above an MA
CLOSE[0]<IND5[0,0] CLOSE[0]>IND5[0,0]
Spread and time combined
Only at the best moments of the day
SPREAD<20 && TIME>=9.0 && TIME<=17.0
Avoid repeating the same condition: If you write the same condition in the BUY expression and in an active filter too, the robot checks the same thing twice — which is pointless. Use filters for conditions that complement the main expression.

FBUY[N] / FSELL[N] are useful when you want to apply the same condition in more than one place — say, triggering on the BUY field and reusing it on the EXIT as well — without retyping the expression in each field.

MULTI-ASSET — A2 / A3

It lets the robot trade on up to 3 assets at the same time from a single chart. The main asset (A1) is always the chart the EA is running on; A2 and A3 are extra assets set through parameters.

Two distinct uses:
🔍 Reading (correlation): using A2/A3 data in expressions as confirmation — checking whether another asset is rising before entering the main one.
⚡ Execution: opening orders directly on A2 or A3 using tokens such as @A2MARKET, @A2BCLOSE and so on in expressions.
Quick setup from the dashboard: besides the EA's parameters, you can set the A2/A3 asset straight from the MQL Manager → CONFIG → ROBOT: type the symbol into the fields A2: / A3: and click OK. The robot validates the symbol, saves it and restarts on its own (~1-2s), already recognising the new asset both in automatic mode and in manual trades. A blank field + OK goes back to the value set in the parameters.

A2 asset parameters

ParameterDescriptionDefault
A2 symbolThe asset's name in MT5 (e.g. EURUSD, XAUUSD). Blank = the A2 system is off(blank)
A2 timeframe (expressions)The timeframe used for the A2HIGH/A2LOW/A2CLOSE/A2OPEN tokens in expressionsD1
Use A2 dataIt switches on the collection of A2's price data for use in expressionsYes
Allow orders on A2It authorises the robot to execute orders directly on the A2 symbolYes
Max A2 volume (lots)The maximum volume limit per trade on A210.0
Max A2 margin (%)The maximum % of free margin that A2 orders may use40%
Independent A2 riskWhen switched on, A2's risk management is worked out separately from A1'sNo

A3 asset parameters

ParameterDescriptionDefault
A3 symbolThe asset's name in MT5 (e.g. GBPUSD). Blank = the A3 system is off(blank)
A3 timeframe (expressions)The timeframe for the A3HIGH/A3LOW/A3CLOSE/A3OPEN tokensD1
Use A3 dataIt switches on the collection of A3's price dataYes
Allow orders on A3It authorises order execution on the A3 symbolYes
Max A3 volume (lots)The maximum volume limit per trade on A310.0
Max A3 margin (%)The maximum % of free margin for A3 orders40%
Independent A3 riskA3's risk management kept separate from A1'sNo

Candle tokens (A2 and A3)

Available in BUY/SELL/EXIT expressions for reading the secondary/tertiary asset's price:

TokenDescription
A2HIGH[0]A2's current high on the parameter ✏️ A2 timeframe in EXPRESSIONS (A2HIGH, A2LOW, A2CLOSE, A2OPEN)
A2LOW[0]A2's current low
A2CLOSE[0]A2's current close ([1] = the previous candle, [2] = 2 back)
A2OPEN[0]A2's current open
A2TVOL[0]Tick volume of the current A2 candle, on the same timeframe (since robot 5.7.215, also inside math)
A2RVOL[0]Real volume of the current A2 candle (only where the broker reports real volume, as on B3)
A2VOLBUYThe total volume of open buys on A2
A2BPROFITThe profit/loss of the open buys on A2 (in the account's currency)
A2DPROFITThe day's profit/loss on A2
A2BUYCOUNTThe number of open buys on A2
A2LASTBUYThe entry price of the last buy on A2

The same tokens are available for A3 with the prefix A3 (A3HIGH, A3LOW, A3CLOSE, A3OPEN, and so on).

If the A2 (or A3) asset is empty in the parameters, a line that uses one of its tokens is refused and the robot warns in the alerts panel which asset is missing. Before robot 5.7.214, the candle token read the chart itself instead of A2, without warning.

Execution tokens on A2 / A3

TokenAction
@A2MARKETIt opens a buy or a sell on A2 (according to the BUY/SELL expression)
@A2BCLOSECloses every open buy on A2
@A2SCLOSEIt closes every open sell on A2
@A2ALLIt closes every position on A2 (buys + sells)
@A2BCLOSE+It closes only the profitable buys on A2
@A2BCLOSE-It closes only the losing buys on A2
@A2SCLOSE+It closes only the profitable sells on A2
@A2SCLOSE-It closes only the losing sells on A2
@A2MODIFYIt modifies the SL/TP of open positions on A2
@A3MARKETIt opens a buy or a sell on A3
@A3BCLOSEIt closes buys on A3
@A3SCLOSEIt closes sells on A3
@A3ALLIt closes every position on A3
@A3MODIFYIt modifies the SL/TP of positions on A3

The safety limits of A2 and A3

Each extra asset has its own brakes, and they are independent of A1's. They all live in the Inputs, right below the asset's field.

☑️
☑️ Enable A2 variable calculation
It switches on the reading of A2's candles for the expression variables (A2HIGH, A2LOW, A2CLOSE, A2OPEN…). Switched off, those variables are left with no value — even if the asset is filled in. A3 has its counterpart: ☑️ Enable A3 variable calculation.
Default: YesYes/No
☑️
☑️ Allow order execution on A2 (@A2MARKET)
It separates reading from trading. With this one off, A2 still serves as a filter and a confirmation, but the robot opens no order on it. A3's counterpart: ☑️ Allow order execution on A3 (@A3MARKET).
Default: YesYes/No
✏️
✏️ Max volume allowed on A2 (lots)
A lot ceiling for orders on A2. ⚠️ It does not refuse the order: it cuts the volume down to this value and carries on. If you ask for 5 lots with the ceiling at 10, 5 go out; if you ask for 15, 10 go out. The warning only appears on the Experts tab if A2's execution logs are switched on. A3's counterpart: ✏️ Max volume allowed on A3 (lots).
Default: 10.00Number
✏️
✏️ Max margin for A2 (% of free margin)
How much of the account's free margin an order on A2 may consume. ⚠️ Here the behaviour is the opposite of the volume ceiling: if the margin required goes over the limit, the order is refused, not reduced. A3's counterpart: ✏️ Max margin for A3 (% of free margin).
Default: 40.00Percentage
The two brakes act in different ways — and that difference matters. The max volume cuts and lets through; the max margin blocks the order. If an entry on A2 simply does not go out, the margin is the first place to look.

⚙️ GENERAL SETUP — MANUAL TRADING

Parameters shared by all 4 manual trading modes: Ticket, Shortcuts, Mouse and Telegram. Set the default volume, pending-order behaviour and expiry here.

The volume set here is the starting point for manual trades. In the Ticket it can be adjusted in real time with the volume button. The automatic robot has its own volume in Entry Controls.
✏️
✏️ Initial VOLUME (adjustable via TICKET)
The lot for orders opened manually through the Ticket, Shortcuts, Mouse or Telegram. It can be adjusted in real time with the volume buttons on the Ticket without restarting the robot.
Default: 0.01Decimal number
☑️
Skip order if position exists in the direction
Blocks new manual orders in the same direction as an already open position. It prevents accidentally duplicating entries. For deliberate multiple-entry strategies, leave it off.
Default: NoYes/No
☑️
Enable manual pending orders
Lets manual trades use pending orders (LIMIT/STOP) instead of executing straight at market. When it is on, the order is placed at the distance configured below.
Default: YesYes/No
✏️
✏️ Candle for pending orders [0-10; 1=Previous]
It defines which candle is used as the price reference when placing the pending order. 0 = the current candle (still forming). 1 = the previous candle (already closed, more accurate). 2 = two candles back.
Default: 1 (previous candle)Whole number
📏
✏️ Distance from reference to place order
How many points above/below the reference candle the pending order is placed. With 0, the order is placed exactly at the reference price.
Default: 0 pointsWhole number (points)
☑️
☑️ Enable time expiration
If the pending order is not filled within the configured time, it is cancelled automatically. It avoids leaving "ghost" orders open for a long time.
Default: YesYes/No
⏱️
✏️ Minutes until expiry (4 hours)
The maximum lifetime of a pending order that has not been filled. After this time, it is cancelled automatically.
Default: 240 minutes (4h)A whole number (minutes)

📱 4th REMOTE TRADING — TELEGRAM TICKET RETIRED

This ticket has been RETIRED — it can no longer be configured.
It required you to create your own bot in BotFather and paste a token and Chat ID into the robot's parameters. Those fields were removed from the EA (version 5.7.100), so there is no way to switch it on any more.

To trade from your phone today, use Trading through Telegram — through the Center on Telegram, the @MQLProTraderCentralBot, which you connect in 1 tap, with no bot to create and no token to paste. It does everything the ticket did — close, close part, clear pending orders, pause/resume, buy/sell, pending orders, protect with SL/TP — and more: switch the targets on/off and receive reports.

There is nothing left to configure here. The token and Chat ID fields left the robot, so this page no longer carries a step-by-step, a parameter list or a command table — they would all point at things that no longer exist. Whoever used the ticket now uses the Center on Telegram: with no bot to create, no token to paste and no Chat ID.
Questions about trading through Telegram? Ask in the Group →

✅ ORDER TICKET — PANEL TRADING SYSTEM

MQL PRO TRADER has two visual panels built into the chart: the Side Ticket (buy, sell, close, volume buttons and the robot's status) and the MQL Manager (an operating panel with positions, summary, AI, settings and quick controls). The ticket is the main way to trade by hand through the visual interface.

Set each panel up in its own section: Buttons • Side Panel • MQL Manager

🎨 PANEL BUTTONS

It controls which button groups appear on the side panel. You can hide buttons you do not use to keep the interface cleaner.

ParameterDescriptionDefault
Show Market buttonsImmediate Buy/Sell at marketYes
Show Bid/Ask buttonsOrders at the Bid or Ask priceYes
Show Stop buttons (SL/TP)Set SL and TP by hand from the panelYes
Show Close buttonsButtons to close open positionsYes
Show Cancel buttonsButtons to cancel pending ordersYes
Show Action buttonsBreak Even, Reverse and other quick shortcutsYes
Show Breakeven buttonShows the dedicated Breakeven button on the side panelYes
Show Volume buttonsQuick lot adjustment straight from the panelYes
Panel toggle buttonButton to show/hide the side panelYes
MQL Manager buttonButton to open/close the MQL ManagerYes

🖥️ SIDE PANEL SETTINGS

It adjusts the size, position and font of the side panel fixed on the chart.

Press B on the chart to hide or reveal the ticket at any time, with no need to touch the settings.
The name is the robot's status: the badge MQL PRO TRADER at the top of the ticket shows the robot's state by colour — green when it is ON and gold when it is OFF. Switch it on/off with the Rkey, with the ROBOT button in the Manager, or in CONFIG → ROBOT.
ParameterDescriptionDefault
Show the side panelIt shows or hides the panel after startupYes
Panel width (pixels)The panel's width in pixels220
The panel's maximum heightThe height used when automatic mode is off700
Automatic heightIt fits the ticket's height to the space available on the chartYes
Button font sizeThe font of the buy/sell/close buttons9
Text font sizeThe font of the labels and information9
Toggle button fontThe font used on the button that shows/hides the ticketConsolas Bold
FONT size of the 2 buttons at the ticket BASEThe text size of the two buttons in the ticket's footer — MINIMISE (it hides the ticket, and turns into SHOW TICKET) and MANAGER (6-18)8
Width of the 2 buttons at the ticket BASEThe width of each toggle button — it fits itself to the panel110
Height of the 2 buttons at the ticket BASEThe height of the toggle buttons — it scales with the panel25
X position (right margin)The distance from the right-hand corner. -1 = automatic-1
Y position (top margin)The distance from the top of the chart30
Ticket background colorThe side panel's fill colourC'40,40,40' (dark grey)
Ticket border colorThe side panel's outline colourclrGray

The 3 pairs of entry buttons — which to use when

The ticket has three ways of entering a trade. The difference between them is not cosmetic: it is the classic better price vs guaranteed execution. It is worth understanding before you click.

ButtonsWhat happensWhen it makes sense
BUY / SELL An order at market, executed there and then. Buying, you pay the ask; selling, you receive the bid — in other words, you pay the spread to get in right away. When getting in now matters more than saving a few points.
BUY BID / SELL ASK It is not instant. It places a limit order waiting at the bid (on a buy) or at the ask (on a sell) — it is the idea of “buying at the bid / selling at the ask”: instead of paying the spread, you wait for the market to come to you. The order sits there pending and may never fill if price does not come back. When you have patience and want a better price. It is the stance of someone providing liquidity rather than consuming it.
B STOP / S STOP An order pending Stop order for a breakout: the buy sits above the high of the previous candle and the sell below the low, respecting the configured distance. It only fires if price breaks out. Trading a breakout — you only want in if the market confirms the direction.
Why the limit order does not sit exactly on the bid/ask: every broker demands a minimum distance between the current price and a pending order (the stops level). The robot respects that limit automatically and places the order as close as the broker allows — which is why, on some assets, it is born a few points beyond the bid/ask.
The buttons Z BUY / Z SELL zero out (close) open positions, and X BUY / X SELL cancel pending orders that have not filled yet. CLOSE ALL closes everything at once.

⌨️ 2nd KEYBOARD SHORTCUTS

MQL PRO TRADER offers a set of keyboard shortcuts for quick actions straight on the chart, without the mouse. Every shortcut works while the chart has focus.

Market orders

KeyAction
Shift + COpen a BUY order at market
Shift + VOpen a SELL order at market

Pending orders

KeyAction
CPlace a pending BUY order (LIMIT/STOP)
VPlace a pending SELL order (LIMIT/STOP)

Closing orders

KeyAction
Z + CClose BUY orders only
Z + VClose SELL orders only
Shift + ZClose ALL positions

Cancelling pendings

KeyAction
X + CCancel pending BUY orders
X + VCancel pending SELL orders

Protections and quick actions

KeyAction
Shift + BTrigger Breakeven on every position
Shift + IReverse positions (close buys and open sells, and vice versa)
Shift + TManual Auto TP on/off

Robot controls

KeyAction
RToggle the robot ON / OFF
QToggle Mouse Trading mode ACTIVE / INACTIVE
SToggle Stop Loss control ON / OFF
BShow / Hide the side panel
GShow / Hide the MQL Manager
IShow / Hide the floating AI panel on the chart (the same effect as the SHOW PANEL button on the AI tab, or the X Close (I) button in the panel's own corner)
Shift + AShow the full shortcut list in MT5

Manual target selection

They toggle individually which assets receive the manual actions from the ticket, combos and MQL Manager buttons. Same behaviour as the MQL Manager's A1/A2/A3 buttons — each key toggles the matching asset.

KeyAction
Alt + 1Toggle asset A1 (the main one, _Symbol) as a manual target
Alt + 2Toggle A2, set in the parameter ✏️ Secondary asset A2 (e.g. EURUSD, XAUUSD), as a manual target
Alt + 3Toggle A3, set in the parameter ✏️ Tertiary asset A3 (e.g. GBPUSD, BTCUSD), as a manual target

🖱️ 3rd MOUSE CLICK TRADING

It lets you place orders by clicking straight on the price on the chart. The robot creates the order at the clicked price and applies the configured SL/TP automatically.

Fixed shortcuts: Shift + Click = a pending Buy at the clicked price | Ctrl + Click = a pending Sell at the clicked price | Key Q = switches visual mode on/off
🖱️
Enable mouse-driven visual trading
It enables the Mouse Trading system. It has to be on for clicks on the chart to work as orders.
Default: NoYes/No
▶️
Start with visual mode active
When on, click-on-chart mode is already working as soon as the robot loads, with no need to press the Q key.
Default: NoYes/No
👁️
☑️ Show click preview line
Before you actually click, it shows a coloured line on the chart marking where the order would go. The line disappears after the time set in Seconds until the preview disappears.
Default: NoYes/No
🔵
☑️ Buy order color
The colour of the buy preview/order line on the chart.
Default: Blue (DodgerBlue)Colour
🔴
☑️ Sell order color
The colour of the sell preview/order line on the chart.
Default: Orange-red (OrangeRed)Colour
⏱️
✏️ Seconds until the line disappears
How many seconds the preview line stays visible on the chart after a plain click (no Shift/Ctrl).
Default: 5 secondsNumber

Where your order is stored — and why that matters

When you hang an order with the mouse, it can end up in two very different places. The difference only shows on the day your computer shuts down:

🟢
On the broker's server
The order exists at the broker. It fires even with MetaTrader closed, the computer switched off or the internet down. It is the same place as the orders you create through the MT5 window.
🔴
Only in the robot (a "shadow order")
The order exists only inside the robot, on your terminal. If you close MetaTrader, take the robot off the chart or the computer shuts down, it disappears without executing.

Why both exist

Not every broker accepts every pending order. Some do not allow certain types, others demand a minimum distance from the current price, and those rules change from broker to broker and even from asset to asset within the same broker. The shadow order exists so you can hang the order wherever you like even when the broker would refuse it.

How the robot chooses

You do not have to choose anything — the robot asks your broker, for each asset, at the moment it creates the order:

StepWhat the robot does
1It checks whether the broker accepts that order type on that asset.
2It checks whether the distance to price respects the minimum the broker demands.
3It sends the real order. If the broker refuses, the robot creates the shadow order automatically — you neither lose the order nor have to redo anything.
Why step 3 exists: some brokers state that they accept and then refuse in practice (they use limits that shift through the day). Instead of trusting what they declare, the robot tries — and keeps the shadow order as a safety net. That way the behaviour is right at any broker, including the ones we do not know yet.
☑️
☑️ LIMIT orders on the broker server
Leave it on (the default). Switching it off forces every mouse order to stay in the robot only — it only makes sense if your broker behaves oddly and you want the old way back. Switching it on carries no risk: wherever the broker refuses, the robot falls back to the shadow order on its own.
⚠️ Worth checking once: when you attach the robot, it writes a line to the journal (the Expertstab) starting with [ORDENS] saying what your broker accepts on that asset. If something does not go as you expect, that line is the first place to look — and it is what support will ask for.

COPY TRADE — WHAT YOU SET UP IN THE ROBOT

MQL PRO TRADER's Copy Trade happens through the Performance Center: you choose who to follow (or publish your own signals) on the dashboard's 🔁 Copy Trade tab, and that is where you will find the lot mode, the asset filters, the delay, the equity floor and the history of every copy. In the robot there are only two parameters left — and the most important of them is a safety lock.

Why only two? The robot executes the copies, but it is your choices on the dashboard that give the orders — and you change those from your browser or your phone, without recompiling anything or taking the robot off the chart. The old copy by Telegram channel (with the MASTER/SLAVE modes) was removed from the robot; if you saw those fields in an earlier version, they no longer exist.

Parameters in the robot

☁️
☁️ Allow CLOUD COPY (dashboard)
This account's safety lock. While it is switched off, no copy is executed here — even if you are already following a provider on the dashboard. It is the "yes, you may trade in this account" that only exists inside MetaTrader, so that nobody can open positions in your account just by fiddling with the dashboard. Switch it on in the account that is going to copy. Anyone who only publishes signals does not need it.
Default: OffYes/No
🔍
☑️ 🔍 Detailed Copy Trading logs
It writes on MetaTrader's Experts tab one line per copy event: [CP-PUB] when you publish a signal (opening, exit, SL/TP change) and [CP-CMD] with the result of each copy executed. It is the first place to look when something "did not copy" — the reason appears there.
Default: OnYes/No
A signal arrived and nothing happened? Check in this order: (1) Allow CLOUD COPY switched on in the robot; (2) the robot online in this account (the Center shows the status); (3) the provider's asset exists at your broker — the robot tries to translate the name by itself (XAUUSD ↔ GOLD, suffixes .pro, .m…), and it warns you on screen when it cannot find it; (4) the calculated lot cannot be below the asset's minimum. The 📜 copy history, on the dashboard, keeps the reason for each failure.

STOP LOSS SYSTEM (SL)

Sets the maximum loss per trade. When price reaches the SL, the position is closed automatically to protect your capital.

Normal block (fixed SL in points): applies to manual and automatic orders. | Advanced block (SL by Candle, Stochastic, ATR, Percentage): applies to your orders and to the robot's entries — Stochastic only to your orders on the asset's own chart. Which one wins when more than one is on is in the table just below.
⛔
✏️ Points from entry to SL
Distance in points from the entry price to the stop level. It applies with ☑️ ENABLE Stop Loss on — and, since robot 5.7.217, it beats SL by candle when both are on.
Default: 300 points
📐
☑️ ENABLE SL at previous candle Low/High
When on, the SL is born at the extreme of the candle before the entry (the low for buys, the high for sells) and follows along: on every new candle, it tightens the stop to the extreme of the candle that just closed — it never widens it. It only looks after the stop it created itself: with ☑️ ENABLE Stop Loss, ATR SL/TP or % SL/TP on, or on a position opened by a line with SetSL[…], the stop is theirs and the candle doesn't touch it. It comes on from the factory: it is the stop for anyone who hasn't set up any other.
Default: Yes
↔️
✏️ OK: Additional offset in points
Adds extra points of slack below/above the candle's extreme. Stops price clipping the SL by a single pip and then turning in your favour.
Default: 0 points

Advanced SL settings

BlockConfigurable parametersEA default
Fixed SLEnable fixed SL and the distance in pointsOff · 300 points
Candle SLUse the candle's extreme plus an extra offsetOn · offset 0
Stochastic SLEnable Stoch SL, period, slowing, oversold/overbought level, lookback candles and offsetOff · 14 / 3 · 20 / 80 · 10 candles · 5 points
ATR SL/TPEnable ATR, period, SL multiplier, TP multiplier (0 = no target), min/max SL and the mode Use PURE ATROff · 14 · SL 1.5x · TP 3.0x · min 50 · max 1000 · does not override
Percentage SL/TPEnable percentage, SL %, TP % (0 = no target), minimum and maximum percentage SLOff · SL 0.3% · TP 0.6% · min 0.05% · max 2.0%

The ruler the robot uses when a position has no stop

When you open a trade without a Stop Loss, the robot still needs a reference distance — it is what places the targets of Multi-TP (the R2X button means "twice that distance") and what the Stop Loss line shows on the chart.

⚠️ That reference is NOT a stop. It exists to place the targets and calculate risk/reward. If price moves against you, it closes nothing — unless you enable execution on the Visual Stop Loss line.

That distance is calculated by the ATR — the same volatility indicator you already use in expressions (ATR, ATRW, ATRREG) and that the robot offers as a stop criterion in the table above.

Why ATR and not a fixed number of points

Because "1 point" does not mean the same thing on every asset. The same value of Points from entry to SL produces completely different distances:

AssetWhat 1 point is worth300 points become
Gold (XAUUSD)US$ 1.00US$ 300 of distance — far too wide
Bitcoin (BTCUSD)US$ 1.00US$ 300 of distance — far too close
EURUSD0,00010.0300 of distance
Mini index (WIN$)1 index point300 index points
Cash equity (PETR4)R$ 0.01 (one cent)R$ 3.00 of distance
Index CFD (US30, NAS100)1 index point300 index points
How the robot works this out on its own, at any broker. It does not use a list of asset names: it asks the broker what type of instrument it is (future, exchange-traded share, index CFD, currency, metal) and derives the ruler from the type. That is why it works the same on a Brazilian asset and on an international one, and on an asset that did not even exist when the robot was written.

Verified in testing, three different markets with the same Points from entry to SL = 300: mini index 181,971 → stop 181,671 (300 points) · mini dollar 5,141.267 → 4,841.267 (300 points) · PETR4 39.50 → 36.50 (R$ 3.00). Three different results, all correct — that is the ruler adapting to the market.
Using an unusual asset? Check it in one line. At start-up the robot writes to the Experts tab the ruler it adopted for each configured asset:
[UNIDADES] BTCUSD | digits=2 calc_mode=… | ponto do TRADER (SetSL/SetTP)=1.00 | tick da corretora=0.01 | …

And when the two units differ — which is normal on gold, crypto and indices — it says so explicitly. It is worth reading that line before your first trade on a new asset: it is the quickest way to confirm your "300 points" mean what you think they mean.
And the price sent always lands on a step the broker accepts. Every asset has a tick — the smallest price step the broker accepts. On the full mini index, for instance, price moves in steps of 5: 181,115 is valid, 181,113 is not. Before sending any Stop Loss or Take Profit, the robot snaps the value to the nearest step.

Without that, a stop worked out by ATR or by percentage — which produces odd numbers — would go out at an invalid price, and the broker would reject the order or round it its own way, without telling anyone. The snap is always to the nearest step, so the largest difference is half a tick.

The ATR measures that asset's real agitation at that moment. That is why the ruler adjusts itself: a reference stop on Bitcoin is wide because Bitcoin moves a lot, and on EURUSD it is narrow because it moves little — with nothing for you to reconfigure when you change asset, broker or market.

You stay in control. The calculation uses the parameters that already exist in the group Dynamic SL/TP by ATR: the ATR period, the SL multiplier and the minimum and maximum limits in points. The limits exist to protect you from unusual days — on a holiday or after a gap the ATR spikes, and without a ceiling the ruler would become absurd exactly when the market is most dangerous.
Which unit that distance is measured in — and why it matters. The ruler is the trader's point of that asset, which not is the smallest price movement (the tick). On EURUSD 1 point is 0.0001 (one pip), while the tick is 0.00001 — ten times smaller. On gold and Bitcoin 1 point is US$ 1.00, while the tick is US$ 0.01 — a hundred times smaller. Mixing the two shrinks the stop by the same factor: on Bitcoin an intended distance of US$ 60 would become US$ 0.60, practically on top of the entry price.

That is why the journal shows the distance and what 1 point is worth: so you can check the arithmetic instead of just trusting it.
How to check what the robot used: when a position opens without a stop, the journal ( Expertstab) shows the distance and its origin — for example Regua virtual em 180 pts (ATR 14 x 1.5). If the ATR is unavailable (short history, newly listed asset), the robot falls back to the fixed value in points and writes (input fixo) — so you always know which of the two applied.

The floor: why the stop is never born glued to price

ATR solves the problem of "1 point is not worth the same on every asset", but it creates another one: on 1-minute charts ATR is tiny. On EURUSD M1 the ATR is usually close to 1 pip — and a 1 pip stop is not a strategy, it is a donation to the spread. It would be touched on the first tick after the open.

That is why the reference distance goes through a floor. The robot never draws the stop closer than the greater of these four numbers:

FloorHow much it isWhy it exists
3 spreadsthree times the asset's current spreada stop inside the spread itself is born already touched
The broker's minimum distancethe stops level the one it reportsbelow it the broker refuses the order
0.03% of the priceproportional to the assetit is what prevents the 1 pip stop on M1 — see the table below
Min SL in pointswhatever you setif you demand more than the market does, your demand wins
Why 0.03% of the price, and not a number of points. It is the same reason as the ATR: a fixed number does not suit every market. See what 0.03% produces in each one — none of them written by hand:
AssetPrice0.03% floor
EURUSD1,15503.5 points (≈ 3.5 pips)
Gold (XAUUSD)4.3431.3 points (US$ 1.30)
Bitcoin (BTCUSD)74.65022 points (US$ 22)
Mini index (WIN$)187.83056 index points

Up to version 5.7.220 the floor was 0.1% of the price. On EURUSD that was 11.6 pips — more than the normal 1.5 ATR stop on the 5 and 15 minute charts, where the ATR sits around 2.5 and 4.6 pips. The floor stopped being a protection and started deciding the stop. At 0.03% it does not touch the 1.5 ATR stop of any of the assets above on the 5 min, 15 min and 1 hour charts, and it still blocks the 1 pip stop of a quiet M1. The 3 spreads and the broker minimum distance still apply on top.
In practice the floor almost never shows up. On any normal timeframe the ATR is already bigger than it, and the ATR is what rules. The floor exists for the extreme case — a 1-minute chart, a dead market, the small hours — where the ATR shrinks until it becomes a dangerous number.
The field Min SL in points ships set to 0, and that means "the robot decides from the market". With 0 the three automatic floors above apply. If you fill in a value, it becomes one more requirement: the robot takes the larger of your number and what the market asks for — never the smaller. In other words, filling it in can only push the stop away, never bring it closer to price.

That same floor applies to the Dynamic SL/TP by ATR of the robot's orders, not only to the reference line — both use the same ruler, so the robot cannot do automatically what the panel stops you doing by hand.
When the floor or the Max SL in points changes the ATR stop, the target changes with it. The target-to-stop ratio you chose in the two multipliers always holds. Example: stop of 1.5 ATR and target of 3 ATR (1 : 2). If the floor pushes the stop from 8 to 12 points, the target goes from 16 to 24 points — still 1 : 2. If the Max SL cuts the stop in half, the target is also cut in half. Up to version 5.7.220 only the stop changed: on 5 minute EURUSD, 1 : 2 as configured became 1 : 0.7 as traded, without warning. The journal ( Experts tab) shows one [ATR] line per asset when this happens. A target of 0 still means "no target".

Several SL systems on at once — which one wins

The robot has six ways to calculate a Stop Loss, and you may leave more than one on. They do not add up: the robot walks the list below from top to bottom and uses the first one available. The others are ignored for that order.

#SystemRequires
1SL from the expression (SetSL[…])an expression that sets the stop on that order
2ATR SL/TPto be on — nothing else
3% SL/TPto be on — nothing else
4SL by Stocha manual order · the chart of the asset itself · and a recent Stochastic extreme
5Fixed SL (NORMAL group, in points)to be on with a value greater than zero
6SL by Candleto be on — nothing else
Since robot 5.7.217 the fixed SL comes before SL by Candle. SL by Candle comes on from the factory and used to come first: whoever turned on ☑️ ENABLE Stop Loss and typed 200 got the candle's stop, with no warning. And the candle also acts after the entry — it tightens the stop on every new candle — but only on the stop it created itself: if the stop came from the fixed SL, the ATR, the % or a SetSL[…] on the line, the candle leaves it alone.
✅ All of them apply to your orders AND to the robot's entries — with one exception: the SL by Stoch. It stores the last Stochastic extreme of the chart on screen, so using it on a position in another asset would put Bitcoin's stop at EURUSD's extreme. It is a technical limit, not a choice — and the visual SL line (the draggable one) is excluded for the same reason: it is a drawing positioned by that chart's price scale.

Measured in the tester (100% automatic entries): SL by Candle 124/124 · ATR 307/307 · % 178/178 · fixed SL 272/272. No entry was left without a stop.
How to check the arithmetic is right, with the real figures from a mini index test: entry at 181.415 with % SL/TP on (SL = 0.3%) produced a stop at 180.871 — a distance of 544 points, which is 0,2999% of the entry price. And the TP came out at 1,088 points, exactly double, because the TP is at 0.6%.
The ATR has a MODE switch — and it neither enables nor disables the system. What enables it is ATR SL/TP, on its own. The parameter Use PURE ATR chooses between two calculations:
• off (default): the robot uses the greater of the ATR value and your fixed value — the more conservative of the two;
• on: uses the pure ATR, even if it gives a shorter distance than the fixed one.

ATR stop with no target: set the TP multiplier to 0 — in both modes, the order goes out with the stop only (since robot 5.7.218; the same goes for TP % = 0). Before, 0 put the target at the entry price itself (the position closed at breakeven the next second) or, with pure ATR off, used the fixed TP even with it switched off.

In the same mini index test this was visible: in conservative mode every order came out with 300 points (the fixed value, which was greater than the ATR at that moment); in pure mode the distances varied order by order — 50, 52, 53, 54, 55, 57, 60 points — following the market's real agitation, with the 50-point floor appearing on the calmest ones.

I enabled the SL (or TP) with the position already open. Does the robot apply it?

It depends on the system — and the difference is big enough to deserve a table:

SystemDoes it apply to a position that is already open?
Breakeven✅ Yes. It watches open positions all the time; once enabled, it acts from the next check.
Trailing Stop (in both modes: fixed step and candle)✅ Yes. Same thing — it is a continuous watcher. Changing the mode with the position open also takes effect immediately.
Max profit giveback · Time stop exit✅ Yes. They are continuous watchers like the ones above.
Dynamic TP✅ Yes. It also watches open positions.
Fixed SL · fixed TP❌ No. They are applied at the moment the order is sent. Enabling them later only affects the next trades.
SL by Candle · SL by Stoch · ATR SL/TP · % SL/TP · Automatic TP · Conservative TP❌ No. Same rule: they apply when the order is sent.
How to put a stop on a position that is already open. Use MetaTrader (drag the position's line or edit it in the orders window), or the little + Add TP widget on the chart. Flicking the switch on the panel not does not go back over positions that already exist — and that is deliberate: changing the stop of a running trade on its own would alter the risk you already accepted, without you asking.

TAKE PROFIT SYSTEM (TP)

It sets each trade's profit target. The robot can use a fixed TP, an automatic TP based on the candle's size, or a Trailing TP that follows price.

🎯
✏️ Points from entry to TP
The distance in points from the entry price to the profit target. Used when Use Automatic TP is off.
Default: 600 points
🤖
☑️ ENABLE TP multiplied by SL
The robot works the TP out as a multiple of the SL (by default 2× on the 1st order and 4× on the 2nd, in ☑️ OK: TP mode, 1st order and ☑️ OK: TP mode, 2nd order). If ☑️ Use the candle's size in the calculation is ticked (the default), the multiplier's base stops being just the SL distance and becomes the larger value of that and the size of the last closed candle (high − low) — so a tight SL on a wide bar does not produce an unrealistic TP. The limits live in ✏️ OK: Min TP in points and ✏️ Max TP in points.

And what if you have no Stop Loss mode enabled? Before, this feature simply did nothing — without an SL there was no distance to multiply, and it gave up silently. Now it uses the same ruler as the SL line that appears on the chart: the Stop Loss you configured and, failing that, the asset's volatility (ATR). That way the line and the target always speak of the same number.
Default: No

Automatic TP settings

ParameterDescriptionDefault
TP multiplier, Order 11X, 1.5X, 2X, 3X, 4X — a multiple of the candle's sizeTP_2X
TP multiplier, Order 2Usually larger than Order 1TP_4X
Use the candle's sizeThe multiplier's base becomes the larger of the SL distance and the size of the last closed candle (high − low). It avoids a TP that is too short when the SL is tight on a wide bar. Unticked, only the SL distance countsYes
Min TP (points)It never sets a TP smaller than this value100 points
Max TP (points)It never sets a TP larger than this value4,000 points
📊
☑️ ENABLE DYNAMIC TP
The profit target moves along with price too. It lets you capture bigger moves without resetting the TP by hand.
Default: No
🛡️
☑️ ENABLE CONSERVATIVE TP
It uses more cautious logic when working the TP out. It may shrink the target in extreme market conditions to make sure the order closes before price turns.
Default: No

Detailed advanced TP settings

BlockConfigurable parametersEA default
Auto TPOrder 1 mode, order 2 mode, custom ratios, use the candle's size, min TP and max TPOff · Order 1 TP_2X · Order 2 TP_4X · ratios 2.0/4.0 · uses the candle · 100 to 4000 points
Trailing TPUse the TP's original ratio, a custom ratio, only improve the TP, and a minimum distanceOff · uses the original ratio · ratio 2.0 · only improves · distance 0
Conservative TPThe main MA, the MA method, use 3 MAs, the periods of MAs 2/3, comparison by MA and the TP's proportionOff · MA 8 · method 0/SMA · 3 MAs no · 21/50 · comparison on · 0.5

BREAKEVEN SYSTEM

Breakeven means moving the Stop Loss automatically to the entry price once the position reaches a certain profit. That way the worst possible outcome becomes a draw (zero).

⚖️
☑️ ENABLE Breakeven
When switched on, the robot constantly monitors the open positions and moves the SL to the entry price as soon as it reaches the profit set in PROFIT points to TRIGGER breakeven. It works for manual and automatic positions alike.
Default: No
📍
✏️ PROFIT points to TRIGGER BE
How many points of profit the position needs before the SL is moved to the entry price. E.g. 200 = it only triggers once the position is 200 points in the green.
⚠️ Check what 200 means on YOUR asset before using the default. The ruler is the same as SetSL[]'s: on gold and Bitcoin 1 point = US$ 1, so 200 here means US$ 200 of profit — on an M1 chart that almost never happens, and breakeven looks as if it "does not work" when in truth it was never triggered. For M1 scalping on gold/Bitcoin, values of 2 to 3 make sense. On the WIN$ 200 is 200 index points (reasonable), and on shares it is R$ 2.00.
Default: 200 pointsWhole number (points)⚠️ review it per asset
↔️
Offset from entry price (points)
It adds a small adjustment to the entry price when the SL is moved. With offset 0, the SL goes exactly to the entry price. With offset 5, it goes 5 points above the entry (for buys), guaranteeing a minimum profit on the close.
Default: 0 pointsWhole number (points)
Combine Breakeven with Trailing Stop and Max profit giveback for protection in three layers: Breakeven guarantees a minimum draw, Trailing follows price to maximise the profit, and Giveback stops you handing back the position's best moment. All three can be on together — each one measures from a different point.

TRAILING STOP SYSTEM (TS)

The Trailing Stop moves the SL automatically as price advances in your favour, locking in profits progressively without you having to watch it manually.

It measures from the current price and always keeps the same distance, in points. If what you want is "not giving back more than a slice of the best moment", that is a different ruler — see Max profit giveback. Both can be switched on at the same time.

📡
☑️ ENABLE Trailing Stop
The Trailing Stop's master switch. It must be switched on for any of the modes below to work.
Default: No
🔀
☑️ MODE: trail by CANDLE (off = fixed step above)
It is this parameter that chooses the mode. Unticked (the default), the Trailing runs as Traditional, by a fixed distance in points. Ticked, it runs as Dynamic: the stop is dragged to the previous candle's extreme. Both require ☑️ ENABLE Trailing Stop switched on, and only one of the two runs at a time.
Default: No (Traditional)Yes/No

Traditional TS (by points)

ParameterDescriptionDefault
Points to start TrailingMinimum profit in points before the Trailing switches on300 pts
SL distance from price (step)How many points the SL stays behind the current price100 pts
⚠️ The 300/100 defaults are calibrated for the index future — check them on your asset. These two fields use the same ruler as SetSL[]'s: on gold and Bitcoin 1 point = US$ 1, so "300 to start" means waiting for US$ 300 of profit — on M1 the trailing simply never switches on. For scalping on those assets, think of 5 to 10 to start and 3 to 5 for the step. On the WIN$ the defaults make sense as they are. See What "1 point" means in each market.

Dynamic TS (by candle extremes)

ParameterDescriptionDefault
Apply offset at the extremesAdds points of margin below/above the candle's extremeNo
Offset in pointsThe offset value0 pts
The Dynamic TS drags the stop; it does not close the position on its own. The stop now lives at the previous candle's extreme — it is the broker that closes the trade, when price touches it there. There is no "close on touching the opposite extreme" parameter: if you want a price action exit, write the rule into an exit expression (EXIT_BUY / EXIT_SELL).

MAX PROFIT GIVEBACK (per position)

The trade went up nicely, you set no target, and it came back to the entry price. The Breakeven saved you from a loss — but you handed back all the profit you already had. That is the hole this feature closes: it measures the highest point your position ever reached and does not let you hand back more than the slice you choose.

Why it differs from what you already have. Every protection in the robot measures from some point — and each one picks a different point:
ProtectionMeasures from
Percentage SL/TPthe entry price
Trailing Stopthe current price — it chases price, but does not remember what the peak was
Protect profits (positive drawdown)the the whole account, adding up every position
Max profit givebackthe that position's peak
They are different rulers, which is why one does not replace another. You can use all four at once.

How it works, with numbers

Suppose a buy that went 1,000 points above the entry and then started falling. With Give back at most 40%:

  • The robot stores the peak: 1,000 points.
  • 40% of 1,000 = 400 points — that is how much it will accept giving back.
  • As soon as the position drops to 600 points of profit, it acts: it moves the stop to lock in those 600 (or closes the position, if you prefer).

Had it gone up only 200 points, the arithmetic would be the same over 200 — the feature follows the size of the move, not a fixed number you would have to recalibrate per asset.

🔒
ENABLE Max profit giveback
It switches the feature on. It ships off: while it stays that way, nothing changes in the robot's behaviour.
Default: No
📉
Give back at most (%) of the profit already reached
The slice of the peak you accept giving back. 40 means "I want to keep at least 60% of the best moment". Low values (10–20%) protect more but pull the position out early on a normal bounce; high values (60–70%) let it breathe more.
Default: 40
🎯
Only after gaining (points)
It stops the feature "protecting" a profit that does not exist yet. Until the position has reached that distance, it stays quiet. With 0, it uses the same trigger as Breakeven (✏️ PROFIT points to TRIGGER BE).
Default: 0
✖️
Close the position instead of moving the stop
By default it moves the stop and the position stays open, free to rise again. Tick this option and it closes the position at the moment of the trigger.
Default: No
Two things it never does: worsen a stop you already have (if your manual stop already protects more than the calculation, it does not touch it) and put the stop too close to price — every broker demands a minimum distance, and it respects yours. In both cases it simply does not act, silently.
It applies to manual positions too. Like Breakeven and Trailing, it acts on any position on the chart's asset — opened by the robot or by you, by hand. What decides the reach is the parameter Where Breakeven, Trailing and giveback apply: A1 only (the default) stays on the chart's asset, On A1, A2 and A3 reaches the extra targets too, and Across the whole account includes positions opened by other robots — use it carefully. For the robot not to touch any manual position, turn on ☑️ Only manage positions the robot opened (not manual ones).
What to expect, honestly. Protecting profit reduces the ups and downs of your result — it does not increase the average profit. The academic research on stops (Kaminski & Lo) shows that, when price has no trend, stopping the trade reduces the expected return; the gain shows up when there is momentum, and it comes in the form of less variance. Treat it as risk control, not as a profit generator. Test it on a DEMO account first.

The robot records every trigger in MetaTrader's journal (the Expertstab) with the peak, the percentage given back and the new stop — that is where you check whether the number you chose is doing what you want.

TIME STOP EXIT

Every other exit in the robot looks at price: stop, target, trailing, profit giveback. This one looks at the clock. It answers a question traders ask themselves and no indicator answers: "if this trade has not moved in two hours, was it really the trade I was expecting?"

Two costs appear on no chart at all: the capital tied up in a stalled position (which could be in the next signal) and event risk — a news release, the session's end, the turn of the day. Time is the only ruler that measures both.

⏱️
ENABLE time stop exit
It switches the feature on. It ships off.
Default: No
🕐
Close after (minutes in the position)
How long the position may stay open. It counts from the opening, in clock minutes — not in candles, so it works the same on any timeframe.
Default: 120 A whole number (minutes)
🎚️
Only close if profit is below
The safety brake on this feature. Above that profit, time not closes nothing. With 0, it closes at any result — including a position that is doing well.
Default: 0 Whole number (points)
The classic mistake with this feature — and how to avoid it. A blind time stop closes precisely the trade that was working: the trade takes three hours to move, and you closed it in the second. That is what Só fechar se o lucro estiver abaixo de (pontos)is for. With it filled in, time closes only what is stalled; whatever is moving stays in the care of the Trailing Stop and the Max profit giveback. Leaving it at 0 is a choice, not a safe default — it makes sense in day trading that must not run overnight, and little sense in swing.
The same reach as the other protections: it applies to manual and robot positions, on the chart's asset, according to the parameter Where Breakeven, Trailing and giveback apply. Every trigger is recorded on MetaTrader's Experts tab with the elapsed time, the limit and the result in points. For the robot not to touch any manual position, turn on ☑️ Only manage positions the robot opened (not manual ones).
Combinations that make sense: log under day trading, a short time (30–60 min) with the profit ceiling filled in removes the trades that "did not catch" and frees up capital. In swing, long times (days) work more as a clean-up of forgotten positions. And if all you want is to avoid running overnight, the route is another one: use the time in your exit expressions.

VISUAL MULTI-TP WITH RISK:REWARD — ➕ ADD TP BUTTON

A system that lets you create multiple take profit targets straight on the chart, with an automatic partial close of each manually opened position. No prior setup is needed — the robot creates the buttons automatically beside each trade.

How it works

When a manual position is opened (through the Ticket or through Mouse Trading), the robot automatically creates three floating buttons near the entry line on the chart:

➕
The [Add TP] button — green
It opens the setup menu to add a new take profit level to that position.
✖
The [X] button — red
It closes the position, with no need to go into the Ticket. It asks for confirmation: the first click turns the button into [CLOSE?] in orange, and only the second click actually closes it. If you do not confirm, it goes back to normal on its own after 4 seconds.
_
The [_] button — grey
It dismisses the little block, leaving only a small [+] in its place. Click the [+] to bring the buttons back. It is there to unclutter the chart without having to create a TP.

TP configuration menu

When you click [Add TP], a mini menu with 3 cycling buttons appears in the chart's top left corner:

ButtonFunctionOptionsDefault
R:R multiplier (orange)It sets the target as a multiple of the risk (the distance between entry and SL)0.5R → 1R → 1.5R → 2R → 3R → 5R2R
Percentage (blue)The percentage of the volume that will be closed when price touches that target100% → 75% → 50% → 25%100%
✓ OK (green)It confirms and creates the TP level on the chart——

What happens after you confirm

The robot works out the TP price with the formula: entry ± (SL_distance × R) and draws a horizontal green line on the chart with a label showing the volume that will be closed. When price touches the line, the robot carries out the partial close automatically — the rest of the position stays open.

Each level created produces three visual elements on the chart: the target line, an edit button and a delete button. You can add up to 20 levels per position.

A practical example — WINFUT bought at 135,000, SL at 134,500 (500 pts of risk):
  • 1st TP at 2R = 136,000 → closes 50% of the volume
  • 2nd TP at 3R = 136,500 → closes 25% of the volume
  • 3rd TP at 5R = 137,500 → closes the remaining 25%
⚠️ A position with no Stop Loss — read carefully: if the position is opened with no SL set at the broker, the robot uses the input's value Stop Loss (pontos) only as a calculation reference for the R:R. That reference is NOT a stop: it is there to place the targets, and it does not close the position if price moves against you. In other words: the R2X shown in the menu is being measured against a distance that protects nothing. To turn it into real protection, see Visual Stop Loss line just below.

Visual Stop Loss line (with risk/reward)

By default the robot does not draw the Stop Loss line on the chart. Switch on the parameters below and it appears alongside the position, can be dragged with the mouse and shows next to it, in money, how much you lose if price reaches it and how much you make if it reaches your first target — the information that answers "is this trade worth it?" at the very moment you choose where to put the stop. The label looks like this:

🛡️ CORRETORA fecha  ·  risco −$2,00  →  alvo +$4,64  (1:2.32)

Reading from left to right: the line's state , how much you lose if price touches it, how much you make if it reaches the target, and — in brackets — the ratio between the two. In this example you are risking US$ 2.00 to chase US$ 4.64, meaning the possible gain is 2.32 times the risk.

☑️
☑️ Show the SL line on the chart (with risk/reward)
It draws the line and the label. It only shows — on its own, this parameter closes nothing. If the position already has a Stop Loss registered at the broker, the robot does not draw a second line (MetaTrader already draws its own) — only the label stays, sitting on the native line. Two almost overlapping lines would be a trap: dragging the wrong one would change the wrong thing.

Where the line's distance comes from: if the position has a stop at the broker, it is this one, always. If it does not, the line uses the same Stop Loss you configured (fixed, candle, percentage, ATR — whichever one is on), that is, the same maths the real order would use. And if no SL mode is on, the line still appears: it is then measured by the asset's volatility (ATR) and serves only as a ruler to calculate the risk/reward of the targets — it is not protection, and the label says so in plain words.
Default: YesYes/No
☑️
☑️ AND CLOSE the position when price reaches that line
It is what turns the line into a real stop: if price reaches it, the robot closes 100% of the position. It needs the parameter above switched on. Applies to any line — the one you dragged and also the one the robot drew by itself when opening the position. What makes this safe is the origin of the price: the line is born from the Stop Loss you configured, and only uses the asset's volatility (ATR) as a ruler when no SL mode is enabled. It is not a guess by the robot — it is your own setting drawn on the chart. If you want no protection at all on that position, dismiss the line with the ✕.

With this switched off, the line goes back to being only the ruler that calculates the targets, and nobody closes if price passes through it.
Default: YesYes/No

🌐 Dragging is a proposal · SAVE is what sends it to the BROKER

🛑 First of all: that line is already your stop, from the very first second. As soon as you open a position, the robot draws the SL line — and it closes the position if price reaches it, even if you never drag it. It is not a preview: it is the robot's stop, and it is from it that the target and the risk/reward are calculated. Its price comes from Stop Loss you configured; only when no SL mode is enabled does the robot use the asset's volatility (ATR) as a ruler.

Dragging changes where it sits. SAVE changes who executes it. Without saving, the robot is the one that closes — and that requires MetaTrader open. Once saved, the broker is the one that closes, and then it holds with everything switched off.

Dragging the line moves only the robot's drawing — it lets you try out levels and watch the money risk change, without sending anything to the broker. For the protection to hold even with the computer switched off, click the button SAVE button next to the label: it is what writes the stop on your broker's server. Once saved, the line drawn by the robot leaves the chart and what stays is MetaTrader's native line (the label and the x remain there, on top of it). The difference shows up when the computer is switched off:

SituationStop only on the chartStop registered at the broker
MetaTrader openprotectsprotects
MetaTrader closed, PC asleep, internet downdoes not protectprotects
How to confirm it was registered. After clicking SAVE, the label changes to 🛡️ BROKER closes, the robot's dashed line disappears (MetaTrader's one stays) and the SAVE button itself goes away — there is nothing left to save. If the label keeps saying 🛑 ROBOT closes and the button stays on screen, the broker did not accept the stop (price too close, market closed) — and the robot opens a red alert on the panel to warn you, because in that case you think it was registered when it was not.

Until you save, the label says 🛑 ROBOT closes: the robot respects that line and closes the position on it — both the one you dragged and the one it drew by itself — but that protection only exists while MetaTrader is open.
⚠️ The robot warns you when the stop is born out of your sight. Depending on the zoom, the line can end up above or below the part of the chart you are looking at. When that happens, an alert appears on the safety panel saying where the stop ended up and how much it costs if it is hit — so you are not left with an active protection somewhere you never saw.
What the robot writes to the journal for every stop that is set:
[SL-VISUAL] Stop de #313500778 em EURUSD definido em 1.16905 (50 pts da entrada,
            risco $5.00) — a CORRETORA fecha (vale com o MT5 desligado).
Where it ended up, what it costs if it is hit, and who will close it. Those are the three things you need in order to decide whether that stop is any good.
💰 The target's money keeps up, whichever line you drag. When the target is already real at the broker and you move the native MetaTrader line, the robot adopts the new price and recalculates the value on the label. Before, it adopted the price and left the money frozen at the value from when the target was created — the screen showed a profit that was no longer real.

📌 When the target is real, the two lines are the same thing. With a single target closing 100%, it becomes a real Take Profit at the broker — and then MetaTrader draws the TP line. The robot hides its own line so the two do not overlap, and you can move the target by dragging either of the two: if you drag the native MetaTrader line, the robot adopts that price and recalculates risk/reward on its own. The server is in charge — it is the one that executes. In the journal: [TP-VISUAL] Alvo de #… movido NA CORRETORA: X -> Y. O robo adotou o alvo do servidor.

⚠️ And the partial targets? Those still depend on MetaTrader being open. The Stop Loss and a target that closes 100% can become real orders at the broker, because MetaTrader accepts one stop and one target per position. A fractional exit (close 50% here, 30% there), on the other hand, does not exist in MetaTrader's protocol — the one executing it is the robot. This is not a MQL PRO TRADER limitation: no robot can leave a partial exit parked on the server.

The line's label says which of the three states it is in — and the difference matters:

What you seeWhat it means
Stop already in profitWhen you drag the stop beyond the entry price (above it on a buy, below it on a sell), that stops being risk: the position can no longer take a loss. The label starts saying "locked +$X" instead of "risk −$X", turns green, and the risk/reward ratio disappears — with no loss to compare against, a 1:4 would mean nothing there.
🛡️ BROKER closesThere is a Stop Loss registered on the broker's server. It works even with MetaTrader closed, the computer switched off or the internet down. It is the strongest protection there is.
🛑 ROBOT closesThere is no stop on the server: the one who will close it is the robot, and only while it is running. If you close MetaTrader, take the robot off the chart or the computer shuts down, the position is left unprotected — and nothing warns you. Applies to the line you dragged AND to the one the robot drew by itself: both close the position. For the stop to hold with MetaTrader closed, click SAVE.
⚠️ NOBODY closesThere is no protection at all — and now this only happens in three cases: you dismissed the line in the ✕; switched off the parameter "AND CLOSE the position when price reaches that line"; or the line was born behind the price when the robot adopted the position (see "When the robot is reloaded from scratch"). In those cases the line is only the ruler the robot uses to calculate the targets, and if price reaches it nothing happens — the position stays open and losing.
⚠️ Mind the unit: the distance is shown in trader's points. On gold (XAU) and crypto, 1 point = US$ 1 — a Stop Loss of "100" means US$ 100 of distance, not cents. Check the [UNIDADES] line the robot prints when it is attached to the chart.
If no target has been created, the label says "no target set" — there is no reward to compare against. And if your broker does not report the tick value, the robot shows the distance in points instead of in money, rather than risk a wrong figure. Dragging the line to the wrong side of the entry (above it on a buy, below it on a sell) is refused — there it would be a target, not a stop.
The label changes on its own when the stop's owner changes. If you set a Stop Loss through MetaTrader after opening the position — or if the robot's own Breakeven and the Trailing Stop move the stop onto the server — the line switches to saying "BROKER closes" automatically. And if you remove the stop, it goes back to warning that nobody is protecting you. The robot re-reads this information on every refresh, instead of holding on to whatever was true when the position was opened.
🛑 The stop you SAVE cannot be loosened by any automatic system. The robot has several systems that touch the stop — Breakeven, Trailing Stop, candle SL, Profit giveback and the expressions with MODIFY. All of them can still tighten your stop, bringing it closer to price and protecting more. None of them can move it away nor erase it. If any tries, the robot refuses, keeps your stop and writes in the journal who tried:
[SL-DONO] #330498467 XAUUSD: RECUSADO. SL por candle tentou mover o stop
            de 4235.79 para 4229.80 — isso AFROUXA o stop que VOCE gravou,
            entao foi barrado e o seu stop continua valendo.
This warning does not depend on any logging input — it always appears, because it is your money. And it applies to the stop you set by dragging the line or clicking SAVE: the ruler the robot draws by itself when opening the position has no owner and stays free to be adjusted. Your own orders still override it — SAVE, the commands from the Desk via Telegram and the Manager can move the stop wherever you want, including further away.
⚡ The line closes right away, not "almost right away". When the robot is the one that closes (state 🛑 ROBOT closes), it checks the price on every tick of the asset, and not from time to time. This holds even with Scalping Mode switched off and even with automatic entries switched off: protecting someone already positioned does not depend on the robot being allowed to open a new position.
⚠️ The visual panel belongs to the chart the robot is on — and to that one only. If the robot is on the gold chart and you open a EURUSD position through the secondary assets A2/A3, that position gets no visual panel at all: neither the draggable SL line, nor the little block + Add TP, nor the risk/reward label. The reason is simple: all of that drawing is positioned by the current chart's price scale, and one asset's price means nothing on another's scale — a EURUSD line (1.16) drawn on a gold chart (4,660) would land just anywhere.
✅ But the real Stop Loss and Take Profit keep working normally on A2/A3. They are calculated with the ruler of the position's own asset and sent to the broker as in any other trade. The only thing missing is the interactive drawing on the chart. To see and drag the lines of a EURUSD position, open a EURUSD chart.

How to confirm it: the journal (the Expertstab) records the decision in plain text — [MTP] Posicao #123 e de BTCUSD e o grafico e EURUSD -> painel visual de TP/SL NAO criado (e ancorado neste grafico). O SL/TP REAL da corretora nao e afetado.
Dismissing the SL line: the x next to the label. The SL line appears on its own on every position with no stop — it is the targets' reference ruler. If it is getting in the way of your reading of the chart, the x grey one to the right of the label dismisses it from that position. Deleting the line through MetaTrader itself is no use: since it is drawn automatically, the robot recreates it straight away — the x is the way to say "I do not want this one".

What the x does NOT do: it does not touch your Stop Loss at the broker. If there is a stop on the server, the protection stays there and MetaTrader's own line stays on the chart — only the robot's label disappears.

⚠️ If the stop was only the line (it was not saved at the broker) and you had already dragged it — that is, the level is your decision, but it has not gone to the server yet —, dismissing the line also disarms the automatic close and the robot warns you in the alerts. That is deliberate: a stop nobody can see on screen that closes the position anyway would be worse than no stop at all.

How to bring it back: use the handle – on the entry line to minimise the position and then restore it. On restoring, the SL line comes back — as a reference; to make it really count, use SAVE again.
Changed a parameter with a position open? Everything stays as it was. When you change any field and click OK, MetaTrader restarts the robot without wiping its memory — it is not a reload from scratch. That is why the little block, the SL line, the TP targets you created and the + Add TP button of each open position stay on the chart exactly as they were — and the targets remain in force.

When the robot is reloaded from scratch — on restarting the terminal, removing the EA from the chart and dragging it back, or recompiling — it sweeps the open positions of this chart's asset and rebuilds the panel for each one you opened by hand. The journal records: [MTP] 2 posicao(oes) ja aberta(s) readotada(s) apos recarregar o EA.

⚠️ What does not come back in that case: the TP targets you had already created. They existed only in the robot's memory, and there is no way to recover them after a reload — the robot says so on that same journal line. The little block and the SL line come back; the targets you redo through + Add TP. The Stop Loss and Take Profit that were already at the broker never depended on this and remain intact.

🛑 And what if price has already passed the stop? On a position with no Stop Loss at the broker, the robot calculates the line's stop from the entry price. If, when it adopts the position, price is already beyond that stop, the line is born as a reference only (⚠️ NOBODY closes): the robot does not close the position, and the alerts panel shows the critical alert "Robot stop already passed, NOT closed", saying how many points it has already gone past. Drag the line to where it makes sense — then it is in force again — and use SAVE, or close it yourself.
Target off screen? The label disappears along with the line. If you zoom or scroll the chart until a TP line (or the SL one) sits above or below the visible area, that line's buttons and figures disappear along with it and come back on their own when it reappears. That is deliberate: a stray value in the corner of the screen, with no line to belong to, would have you reading the number as if it were another target's.

PROTECTIONS AND MOUSE ORDERS

There is no parameter that switches the protections on or off for mouse orders only. The Breakeven, the Trailing Stop and Max profit giveback act on any position inside the scope — it does not matter who opened it: the robot, the ticket, a mouse click, a keyboard shortcut, Telegram or the platform itself.

The order you open with the mouse IS protected — and that can catch you out. With the factory default, the scope is A1 only — just this chart's asset: every position on the chart's asset is included, even the ones you opened by hand, outside the robot. If you want to manage the stop yourself, change the scope first.

The scope decides

The ✏️ Where Breakeven, Trailing and giveback apply (A1 only) has three options:

OptionWhat the protections take in
A1 only — just this chart's assetDefault. Any position on the chart's asset, whoever opened it.
On A1, A2 and A3 — everything this robot openedThe chart's asset plus whatever carries this robot's magic number.
Across the whole account — includes other robots' positionsEverything open in the account.
Orders opened by the mouse carry the suffix _Manual in the comment. It is there for you to identify the origin in reports — and nothing else. It does not take the position out of the automatic protections.

CAPITAL SAFETY SYSTEM

A set of automatic systems that protect your account from excessive losses and lock in the gains you have made. Each subsystem can be switched on independently.

Browse the sections below to set up each layer of protection: Dynamic Risk → Daily Lock → Close on Drawdown → Daily Profit Protection

📊 DYNAMIC RISK PER TRADE

It sets the orders' volume as a percentage of the account's balance, instead of a fixed volume. The robot automatically works out each trade's lot so that it risks only the configured percentage.

📊
☑️ Enable dynamic risk per trade
When switched on, the entry Volume parameter is ignored. The volume is worked out dynamically from the balance and the risk percentage set below.
Default: No
📉
✏️ Risk per trade (0.02 = 2% of balance)
The percentage of the account's total balance to risk per trade. E.g. 2% on a R$10,000 account means R$200 of maximum risk per trade.
Default: 2% (0.02)Decimal (0.01 = 1%)

📅 DAILY LOCK

It stops the robot trading for the day when the day's total loss OR profit goes past the configured limits. It resets automatically on the next trading day.

🔴
☑️ Lock by daily loss
It enables the loss lock. When the day's total loss reaches the configured percentage, the robot stops opening new orders.
Default: No
💸
✏️ Max daily loss (%)
Maximum percentage of loss against the day's opening balance. Ex: 10% on an account with $10,000 at the open = stops when it loses $1,000 in the day.

The robot now warns on screen before and after: on consuming 70% of the limit, an alert appears saying how much is left; on reaching the limit, a critical saying that automatic entries were switched off until the next day. Before, this only came out as a sound or a phone notification — and both are born switched off, so the robot stopped and nothing explained the silence.
Default: 10%
🟢
☑️ Lock by daily profit
It enables the target lock. When the day's profit reaches the configured percentage, the robot stops opening new orders.
Default: No
💰
✏️ Max daily profit (%)
The percentage of profit against the day's opening balance which, once reached, locks the robot for the rest of the day.
Default: 10%
⏹️
☑️ Stop trading after limit
On hitting the day's limit (loss or profit), the robot stops opening new entries.
⚠️ It does NOT close positions that are already open. What closes positions automatically is another protection: ☑️ Close all on target, from the Daily Profit Protection in $, and the Close positions on Drawdown.
Default: YesYes/No

CLOSE POSITIONS ON DRAWDOWN

It closes every open position when the drawdown (floating loss) goes past a limit. It protects against situations where several orders add up to a growing loss without any of them hitting its own SL.

⚠️
☑️ Close positions on drawdown threshold
Switches on the monitoring of the open orders' total drawdown.
Default: No
ParameterDescriptionDefault
Maximum NEGATIVE drawdown (%)The % of total floating loss that closes everything5%
Maximum POSITIVE drawdown (%)The % of floating profit that also closes everything (it locks the profit in)8%
Use Profit ProtectionThe positive protection only fires once the profit has been above a threshold and starts falling backNo

DAILY PROFIT PROTECTION ($)

Unlike the Daily Lock (which uses a percentage of the balance), this system works with amounts in dollars/reais. It sets a daily profit target and a protection drawdown below that target.

💵
☑️ Enable USD profit protection
It switches on the daily target system based on a money value.
Default: No
ParameterDescriptionDefault
Use net profitIt also counts open positions in the profit calculationYes
Daily profit target (R$/$)The amount that, once reached, triggers the protection$100
Protection drawdown (R$/$)If the profit falls back to this amount, it closes everything. E.g. target=$100, draw=$90 = it closes if the profit drops to $90 after having reached $100$90
Close all on targetIt closes positions when the daily target is reachedYes
Stop the robot on targetIt stops opening orders after the day's target is reachedYes

EVENTS AND BEHAVIOUR SYSTEM

A set of filters that control when the robot may trade: permitted hours, market sessions, the maximum spread level and macroeconomic news periods. Ideal for avoiding entries at moments of high volatility.

Reach each sub-system from the side menu: Times • Sessions • Spread • News • Alerts

🕒 TRADING HOURS

Sets the periods of the day in which the robot is allowed to open new trades. Outside the configured hours, the robot only monitors and protects the positions that are already open.

These filters only affect automatic entries (BUY/SELL expressions). Manual trades (ticket, shortcuts, mouse, Telegram) are not blocked by them.
🕒
☑️ USE SPECIFIC HOURS
It enables the manual time fields below and the list of days of the week. Use it when you want to restrict the robot to a specific period of the day. With it switched off (the default), the robot may open trades at any time and on any day the broker allows. It does not affect the session filter or the spread protection — those two have their own switch and work independently.
Default: No

Morning and afternoon session

ParameterDescriptionDefault
Morning startOpening time of the morning period00:00
Morning endClosing time of the morning period12:00
Afternoon startOpening time of the afternoon period12:01
Afternoon endClosing time of the afternoon period23:59

Trading days

Tick the days of the week on which the robot may trade:

The days of the week only apply with USE SPECIFIC HOURS switched on. They are part of the same hours block — with specific hours switched off (the factory default), the robot trades on any day the broker allows. This is deliberate: crypto trades 24/7 and Saturday/Sunday come unticked, so always applying the list would kill the weekend for anyone trading BTC. To restrict days, switch specific hours on — and set the morning/afternoon periods along with it.
DayParameterDefault
SundayTrade on SundayNo
MondayTrade on MondayYes
TuesdayTrade on TuesdayYes
WednesdayTrade on WednesdayYes
ThursdayTrade on ThursdayYes
FridayTrade on FridayYes
SaturdayTrade on SaturdayNo

🌍 MARKET SESSIONS

It filters trades by global session: Asian, London and New York. Each session has different volatility characteristics. It also lets you trade only during the overlap hours (London + NY).

🌍
☑️ Filter by sessions
Switches the session filter on. Only the sessions ticked as Yes below will be active.
Default: No
SessionParameter (the name shown in the robot)The window the robot usesDefault
🌏 Asian☑️ 🌏 Asian session (Tokyo 00:00-09:00)00:00 - 09:00No
🌍 London☑️ 🌍 London session (09:00-18:00)09:00 - 18:00No
🌎 New York☑️ 🌎 NY session (14:00-23:00)14:00 - 23:00No
🔥 Overlap only☑️ 🔥 London/NY overlap only (14:00-18:00)14:00 - 18:00No
These hours are read on the reference clock and the robot does not convert time zones. By default the clock is the broker's server, which almost never matches your local time — on a GMT+3 server, for instance, the "London session 09:00-18:00" happens from 03:00 to 12:00 where you are. Check on the panel what time the robot is seeing before calibrating. And mind this: switching the field ✏️ Clock for TIME/DAYOFWEEK (Server/Local) to Local moves these windows along with it — it is not just for the expressions.
Só Overlap London/NY ignores the three boxes above. If it is on, only the 14:00-18:00 band is released — ticking Asia, London or NY alongside it makes no difference.

📊 SPREAD PROTECTION

It stops the robot opening orders when the spread (the difference between buy and sell) is too wide. It avoids entering at moments of low liquidity with a high cost.

📊
☑️ Filter high spread
Switches on the spread check before an order is sent.
Default: No
↔️
Max spread allowed (points)
If the current spread is wider than this value, the entry is blocked until the spread settles. Adjust it to the asset: EURUSD is normally 1-3 pts, indices can be more.
Default: 20 points

📰 NEWS DETECTOR (MULTI-REGION)

It identifies the important economic releases (GDP, rates, jobs and so on) — the moments when the market tends to move sharply and unpredictably — and hands that information to your expressions. The system uses the MT5's own calendar (MqlCalendar) — real events with country, importance and official time — and it also feeds the Gemini AI Analysis prompt, letting the AI factor macro timing into its recommendations.

The robot does not stop on its own because of news — that is by design. The detector blocks nothing on its own: it merely publishes what is coming in the variables NEWSIN[X], NEWSIMP and NEWSCTY. The one who decides to block is you, in the expression — e.g. NEWSIN[15]==0 && DIR[0]==1 @MARKET (it only enters if there is no news in the next 15 minutes). If none of your expressions uses those variables, switching the calendar on changes nothing in the robot's behaviour.
✅
☑️ ✅ ENABLE ECONOMIC CALENDAR
It switches on the main news system. The robot reads the events straight from MT5's own calendar (MqlCalendar): country, impact, official time — and it feeds the NEWSIN[X] variable in your expressions (1 = there is news in the next X minutes · 0 = a clear window) and the AI Analysis prompt. The block is decided by YOU in the expression — e.g. NEWSIN[15]==0 && DIR[0]==1 @MARKET (it only enters with no news within 15 min). There is no automatic pause of the robot for news. It needs an active internet connection in MetaTrader.

⚠️ Switching this field off does not switch news off. It chooses the source: on, the robot reads MT5's official calendar; off, it falls back to the built-in secondary calendar — and the variables go on being fed as normal. There is no combination of the two switches that zeroes NEWSIN[X].
Default: YesSource: the native MqlCalendar
🔄
☑️ 🔄 SECONDARY CALENDAR
A fixed-date calendar built into the robot — it covers recurring events such as FOMC, COPOM, ECB, NFP. It works as a backup when MT5's calendar is unavailable (no connection, missing datasource).
Default: Yes
When AI Analysis is on, the calendar's events (the next few hours, high impact, the pair's currencies) are also injected into the prompt sent to Gemini. The AI may recommend WAIT when a critical event is imminent, or insert a warning in the alerts field of its answer.

Impact levels CONSIDERED (they feed NEWSIN[X])

LevelExamplesDefault
🔴 High impactFOMC, NFP, COPOM, CPI — violent movesYes
🟡 Medium impactPMI, smaller jobs data, inventoriesYes
🟢 Low impactCentral bank speeches, secondary dataYes
If you want more entries with less protection, you can switch off Low impact. For conservative strategies, keep them all on. The High level should always stay on.

Country filters (all Yes by default)

CountryMain eventsSuited to
🇺🇸 USANFP, FOMC, CPI, GDPEvery dollar-denominated asset
🇧🇷 BrazilCOPOM, IPCA, SELICWIN, WDOL, IBOV
🇪🇺 EuropeECB, GDP, HICPEURUSD, XAUUSD
🇯🇵 JapanBOJ, CPI, TankanUSDJPY, JPY pairs
🇬🇧 United KingdomBOE, CPI, GDPGBPUSD, GBPJPY
🇨🇳 ChinaPMI, GDP, PBoCCommodities, AUDUSD
🇦🇺 AustraliaRBA, CPI, jobsAUDUSD, AUDNZD
In the BUY/SELL expressions you can also check news manually with the variable NEWSIN[15] — it returns the number of news items expected in the next 15 minutes. Example: NEWSIN[15]==0 @MARKET = it only enters if there is no news within 15 min.

🔊 ALERT SYSTEM

It notifies you in real time about the robot's important events. Available in two formats: sound (it plays on the computer) and push (a notification in the MetaTrader app on your phone).

How they differ from the Telegram alerts: these alerts are MetaTrader's own — simpler to set up, with no bot or token needed. If you already use Telegram (Group 14), this system is optional — Telegram already covers all of it in more detail.
🔊
Enable sound alerts
Switches MT5's sound system on. For it to work, the computer's volume has to be on. Check Tools → Options → Events in MT5 as well.
Default: No
📱
☑️ PUSH to the MetaTrader app
It sends notifications to the MetaTrader 5 app on your phone (iOS/Android). It requires being logged into the same account as the PC and a MetaQuotes ID set in Tools → Options → Notifications.
Default: No

Monitored events

EventWhen it firesDefault
New signal detectedA BUY/SELL expression evaluates as true — before the order is sentNo
Order closedAny position is closed (by EXIT, SL, TP or by hand)No
Take Profit reachedA position closed specifically by the TPNo
Stop Loss reachedA position closed specifically by the SL — useful for immediate loss alertsNo

⚠️ SAFETY ALERTS PANEL

It is the dark panel that appears in the chart's top left corner when the robot spots something that could stop a trade — or already has. It exists so you are never left wondering why an order did not go through.

The panel only appears when there is something to say. If the chart is clear, there is no pending alert.

The panel buttons

🔧
Fix
It opens the CONFIG menu already on the tab and the field that raised the alert. A shortcut to fix it without hunting.
🔕
Ignore Alert
Snoozes that specific alert and it comes back on its own later — the time is what you set in ✏️ Snooze a dismissed alert for (minutes) (default 15). It serves to get it out of the way while you work, without losing the warning.
🧹
IGN ALL
Snoozes at once all the alerts on screen, without having to click one by one. It sits at the top, next to minimize and close.

With one deliberate exception: it does not reach CRITICAL alerts. Snoozing everything is tidying the screen; silencing a warning about position open without a Stop Loss with a tidy-up click is another. Critical ones can still be snoozed one by one, with intent.
▲▼
The golden instruction
When the adjustment is in the Parameters window (F7) and not in the CONFIG menu, the alert does not show the Fix — it would have nowhere to take you. In its place a golden line appears telling you the exact name of the parameter to look for. Example: "Adjust ✏️ Maximum open risk (% of equity) in the F7 window."
▲▼
Pages (▲ ▼)
The panel shows 3 alerts at a time so as not to take over the chart, and the most recent one always appears first — regardless of severity, so that something new is never hidden behind old warnings. The exception is the refusal of one of your orders: it comes before everything and the panel goes back to page 1, because it is the answer to what you have just done. If there are more, the buttons appear ▲ and ▼ at the top with the page number, and the footer says how many are on the others.
✖️
X (close) and − (minimise)
The X simply closes the panel — it comes back on the next alert (it silences nothing). The − shrinks the panel down to the header only.

Alerts the robot raises on its own

AlertWhen it appearsWhat to do
Unknown trigger Your expression uses a @ that does not exist — almost always a typo (@MARKT, @LIMITE). Correct the trigger's name. The expression is ignored and no order is sent while it is wrong.
Automatic order not sent The signal was approved but the order was blocked: volume below the minimum, not enough margin, trading session closed, a symbol with no quote, and so on. The reason is written in the alert. Adjust whatever the alert points to (e.g. SetVolume[] below the asset's minimum).
Distance filter too short for [asset] When you drag the robot onto a fast asset (WIN, indices, crypto), it warns that the distance limit is too small for its volatility. Raise Max distance from reference price or switch the filter off — see below.
Buy/Sell blocked by the distance filter One specific entry was blocked because price was too far from the reference. It shows the real distance and the limit. If it keeps happening, the limit is too short for that asset.
The distance filter — mind it when dragging onto indices: the default is 10 pontos, designed for forex pairs. On assets like WIN$ price moves dozens of points per candle, so that limit blocks almost every automatic entry. The robot now warns you when it spots this case — but the adjustment is yours: raise the value in CONFIG → ROBOT or switch the filter off.
An invalid volume does not become the default volume. If the expression asks for a volume below the asset's minimum (e.g. SetVolume[0.5] on WIN$, whose minimum is 1), the robot blocks the order and warns you — it never enters on its own with a size different from the one you asked for.

When the robot holds an order instead of sending it

Before sending an order, a close or a stop/target change, the robot checks what the broker would refuse. If the broker would refuse it, the robot does not send it and writes one line in the Journal of MetaTrader (in the Experts tab) saying why — no log needs to be turned on. To keep the Journal readable, each reason appears at most once every 10 minutes (the stop one, once a minute per position).

The line starts withWhat it meansWhat to do
[ORDER BLOCKED] An order was blocked before it left, with the same reason as the alerts panel: Insufficient margin on …, stop too close, volume below the minimum, distance filter… The robot also checks the margin on the chart symbol with SetVolume[]; on a netting account, an order that reduces the open position needs no margin. Adjust what the line says: a smaller volume, more balance, a wider stop.
[SESSION] The broker's trading session for that symbol is closed right now (weekend, break, opening — gold, for example, quotes at 01:00 and only trades around 01:02). The robot sends no order, close or stop/target change, which the broker would refuse with Market closed. Nothing: when the session opens, the robot sends again by itself. If it shows up at a time you think is open, check the sessions in the symbol's Specification in MT5.
[SL/TP] A stop or target change requested by a robot feature (candle stop, trailing, break even…) would be on the wrong side of the price or closer than the broker's minimum — or the current stop is frozen near the price (freeze level). The stop/target at the broker stays in force; the rest of the request goes ahead. Usually nothing — it is the robot avoiding a refusal. If it is constant, that feature's stop is too short for the symbol.

📊 MQL MANAGER (OPERATIONS PANEL)

The MQL Manager is MQL PRO TRADER's horizontal operations panel at the foot of the chart. It does not replace the side ticket: the ticket is for fast manual execution; the MQL Manager is for monitoring, robot control, target selection, AI analysis and quick configuration without opening MetaTrader's parameters window.

It is organised in 3 physical rows: Row 1 — POSITIONS / INFO / AI / CONFIG tabs; Row 2 — quick buttons for status, direction and manual target; Row 3+ — content of the active tab. Press G or click the MANAGER button on the side panel to open/close it at any time.

Read this before configuring: once you click 💾 SAVE on the CONFIG tab, the panel becomes the one in charge — changing that setting in the Inputs stops having any effect. It is the explanation for "I changed it in F7 and nothing changed". It applies to about 120 settings, per account and per asset. How it works and how to undo it →
Ideal use: leave the panel open while you are monitoring trades, risk and the AI. Hide it with G when you want a clean chart for full-screen technical analysis.

Quick map of the MQL Manager

AreaElementsWhat it does
Row 1POSITIONS · INFO · AI · CONFIGChooses which content appears in the panel body. The INFO tab has [SUMMARY] and [CENTER] sub-tabs. CONFIG opens a quick-settings overlay.
Row 2 — StatusROBOT · MOUSETurns the automatic robot and Mouse Trading mode on/off without opening the EA inputs.
Row 2 — Direction▲BUY · ▲BOTH▼ · ▼SELLSets the direction allowed for automatic expression entries. It does not affect manual closing.
Row 2 — Manual targetA1: símbolo · A2: símbolo · A3: símboloSelects which assets the ticket, shortcuts and mouse send manual orders to. Each button shows its own symbol (e.g. A1: WINM26). They are the manual target — separate from the robot's automatic trading (CONFIG → ROBOT).
Button colourGreen / blue / greyGreen = on/selected. Blue = available but not selected (manual target). Grey = off/no symbol.
ContentPositions, INFO (summary/Center), AI or CONFIGUpdates with the EA's runtime data; POSITIONS and INFO follow the account/assets, AI follows the AI cache and modes.

The ✖ on the POSITIONS tab — close everything, only profit or only loss

On the POSITIONS each asset is one row, with its buys on one side and its sells on the other. There are three ✖ per row: one on the buys, one on the sells and one on the asset (which reaches both sides).

Clicking a ✖ does not close anything straight away — it opens a box in the middle of the panel, with a gold border, whose title states what is at stake (e.g. CLOSE XAUUSD BUYS — close what?) and the choice buttons:

OptionWhat it closes
TUDOEvery position in that group, winning or losing.
SÓ LUCROOnly the ones in profit — banks what you have already won and leaves the losers open.
SÓ PREJUÍZOOnly the ones in loss — cuts the losses and lets the winners run.
Each button shows how many positions and how much money. You read it SÓ LUCRO (3) +BRL 240.00 and decide by looking at the figure, not from memory. That is deliberate: "only the winners" without knowing how many or how much is a decision made blind.
A button that would close zero positions does not appear — if there is no loser in that group, the SÓ PREJUÍZO simply does not exist on that click.
The asset's ✖ adds both sides together. On the buy and sell ✖ the figures are for that side only; on the asset's ✖, SÓ LUCRO means "every position of this asset in profit, buys and sells".
Want to close one specific position? Not here: each position has its own ✖ on the chart, next to the ➕ Add TP, anchored to its own line — there you see price, stop and target before deciding.

The menu closes on its own when you change tab, and the CANCEL button exits without doing anything. Every close is recorded in MetaTrader's Experts tab.

How to open and close it

HowDescription
Key GOpens or closes the MQL Manager instantly while the chart has focus
Button MANAGER on the side panelSame behaviour as the G key — a visible button on the chart's right-hand side panel
Button M-Close / Close on the panelButton in the bottom-right corner of the MQL Manager — performs the same toggle as the G key and hides the operations panel
"Show panel at startup" parameterWhen on, the panel opens automatically as soon as the EA loads on the chart

Configuration parameters

ParameterDescriptionDefault
Show panel at startupIf on, the panel opens as soon as the EA initialisesNo
Background colourThe panel's background colourC'40,40,40' (dark grey)
Border colourThe visible border colour of the MQL ManagerclrDimGray
Text colourThe colour of the text shown on the panelWhite
Height (pixels)Panel height in pixels. Valid range: 220–500. A 3-column layout + Col5 with 1 row per asset on the POSITIONS tab — the taller it is, the more position rows fit on screen (capped by Max visible assets)430
Width (pixels)Panel width. Use 0 to fit the chart width automatically (full screen)1000
Font sizeText size on the panel. Valid range: 6–12. Recommended: Full HD → 10, 4K → 11–12, laptops → 8–910
Max visible assets (Col5)Maximum number of assets shown at once on the POSITIONS tab — tied to the panel height (each slot takes one row)8

Row 1 — Content tabs

ButtonTypeContent
POSITIONSTabIndividual positions per asset with P&L and close buttons
INFOTab (with sub-tabs)Two sub-tabs: [SUMMARY] = account statistics (overall result, profit of the day, performance, all positions, hours and spread) · [CENTER] = access to the Performance Center (web dashboard). This tab used to be called SUMMARY, then CENTER.
AITabGemini analysis hub: ANALYSE A1/A2/A3 buttons, AI modes, cache and floating panel
CONFIGModal overlayOpens a quick-settings overlay panel with 8 internal tabs (see the section below)

Row 2 — Quick button bar

These buttons change the EA's runtime state directly on the chart. Green = active/selected, grey = inactive/not selected. The old SL/TP/BE/TS/NEWS buttons are no longer on this bar: they moved to the sub-tabs of CONFIG.

Row 2 — Status toggles

Two toggles that switch features on and off straight from the panel, without opening the settings:

ToggleWhat it controls
ROBOTTurns the automatic robot on/off (BUY/SELL expression entries)
MOUSEEnables/disables click-to-trade with the mouse on the chart

Row 2 — Automatic direction toggles

Three mutually exclusive buttons that set the direction allowed for the robot's automatic entries (they do not affect manual trading):

ToggleEffect on automatic entries
▲BUYThe robot only opens buy positions — automatic sells are blocked
▲BOTH▼The robot may open buys and sells (default behaviour)
▼SELLThe robot only opens sell positions — automatic buys are blocked

Row 2 — Manual target selector (A1 / A2 / A3)

After the direction toggles come the 3 A1 / A2 / A3 buttons that control which assets the manual actions are sent to — ticket, keyboard shortcuts and mouse. Each button shows its own symbol (e.g. A1: XAUUSD, A2: WINM26), so you can see at a glance which is the primary asset and which are the secondary ones. Each click turns the matching asset on or off individually.

Each button shows the label plus that slot's symbol:
• With a symbol: A1: WINM26, A2: PETR4, A3: WDO$
• Slot with no symbol configured: A2: — (greyed out, not selectable)
• When space runs short, the button shortens only as much as needed and keeps the symbol as long as it can: first it drops the colon, then it trims the symbol one letter at a time, down to 3 (e.g.: A1 XAUUSD → A1 XAUU). Only on a very narrow panel does it become just A1 / A2 / A3 (without the symbol) so it does not spill over the side ticket.
ButtonLookDefaultAsset it controls
A1: símboloGreen = selected | Blue = available | Grey = no symbolSelectedThe chart's main asset (_Symbol)
A2: símboloGreen = selected | Blue = available | Grey = no symbolAvailableSecond asset (A2) — set in the parameters or under CONFIG → ROBOT
A3: símboloGreen = selected | Blue = available | Grey = no symbolAvailableThird asset (A3) — set in the parameters or under CONFIG → ROBOT
If no button is green, manual actions will not be executed and a warning is written to MT5's Experts tab. Keep at least one asset selected (green).
Do not mix up the two sides — bar vs CONFIG: the A1: símbolo/A2: símbolo/A3: símbolo buttons on Row 2 (the Manager bar) control the target of manual actions (ticket, shortcuts, mouse). The buttons under R-A1/R-A2/R-A3 log under CONFIG → ROBOT → "ROBOT Trades on:" control the robot's automatic trading. The symbol of each A2/A3 slot is the same on both sides (that is why the label there reads "A2 ROBOT/MANUAL:"); what changes is what each button enables — the bar enables manual, CONFIG enables the robot.

⚙ CONFIG — Quick settings overlay

When you click CONFIG a modal overlay opens over the panel content. While the overlay is open, the POSITIONS/INFO/AI content is hidden and comes back when CONFIG is closed. CONFIG has 8 internal sub-tabs for quick adjustments to trading, risk, session, Telegram and diagnostics:

TabWhat it holds
STATUSA lean summary of the values and totals that are not repeated in the other sub-tabs
NORMALEditable SL, TP, Breakeven and Trailing Stop fields — change the numeric values directly
ADVANCED8 advanced protection toggles: Candle SL, Stoch SL, ATR, % SL, Auto TP, Trailing TP, Conservative TP, Dynamic TS
RISKCapital protection: daily loss limit, maximum drawdown and limits in money (USD/R$)
SESSIONTrading hours, allowed weekdays, market sessions, spread filter and news protection
ROBOTThe robot's tactical control: auto-trading, scalping mode, per-candle entry limit, distance filter, volumes (robot/manual), A2/A3 symbols, the "ROBOT Trades on: A1/A2/A3" selector and custom buy/sell filters
TELEGRAMTelegram notification and alert settings — token, chat ID and which events send a message
BUFFERSIndicator analyser: name, subfolders and buffer/parameter discovery for use in expressions (the overlay's internal title is "INDIC — Buffer/Parameter Discovery")

STATUS sub-tab — overall robot reading

BlockWhat it showsWhat it is for
Robot, entries and assetsPer-candle entry limit, distance filter, secondary assets A2/A3, order permission on A2/A3 and the active buy/sell filtersQuickly check whether the robot is being limited by a filter before you go hunting for an expression error.
Risk and account limitsDynamic risk, daily profit/loss locks and profit protection in moneyConfirm whether a capital protection could block new entries or close positions.
Hours, market and newsAllowed hours, weekdays, market sessions, spread, calendar/news, impact levels and monitored countries/currenciesUnderstand whether the robot is inside its trading window and whether news/spread are filtering the market.
Licence / AlgoTradingThe EA's licence status and MT5's trading permissionDiagnose basic blocks: invalid licence or AlgoTrading disabled in the terminal.

NORMAL sub-tab — SL, TP, Breakeven and Trailing Stop

ControlTypeEffect
SL: LIGADO/DESLIGADOToggle buttonTurns the normal fixed Stop Loss on/off.
Points of the SLEditable fieldSets the Stop Loss distance in points.
TP: LIGADO/DESLIGADOToggle buttonTurns the normal fixed Take Profit on/off.
Points of the TPEditable fieldSets the Take Profit distance in points.
BE: LIGADO/DESLIGADOToggle buttonTurns the automatic Breakeven on/off.
PROFIT pts of the BEEditable fieldMinimum profit in points to trigger the Breakeven.
Offset of the BEEditable fieldPositive/negative slack applied to the entry price when the SL moves to break-even.
TS: LIGADO/DESLIGADOToggle buttonTurns the normal Trailing Stop on/off.
PROFIT pts of the TSEditable fieldMinimum profit before the stop starts trailing.
Step of the TSEditable fieldThe step used to reposition the stop while trailing.

ADVANCED sub-tab — protections and smart targets

ButtonWhat it switches on/offNote
SL pelo CandleStop Loss calculated from the candle structureUsed when you want a technical SL from the high/low or a reference candle.
SL pelo StochStop based on Stochastic logicDepends on the protection system's detailed settings.
ATR SL/TPSL/TP by volatility via ATRFits the protection to the asset's average move size.
% SL/TPPercentage SL/TPUseful for assets with a different price scale.
Automatic TP (xSL)Take Profit as a multiple of the Stop LossLets the target stay proportional to the configured risk.
Dynamic TPTrailing/dynamic adjustment of the targetAims to protect profit as price moves in your favour.
TP ConservadorConservative target modeUsed for more defensive exits.
TS DinâmicoDynamic Trailing StopAdjusts the trailing according to the advanced logic configured.

RISK sub-tab — capital protection

ControlTypeEffect
Dynamic risk (% balance) + %Toggle + fieldCalculates the volume from the risk percentage of your balance.
Daily Loss Limit + %Toggle + fieldLocks the robot when the configured daily loss is reached.
Daily Profit Limit + %Toggle + fieldLocks the robot when the daily percentage target is reached.
Stop Robot When Limit Is HitToggleStops new entries after the risk/profit/loss limit.
Close Positions on DrawdownToggleCloses positions when the configured drawdown is reached.
Profit ProtectionToggleEnables the general logic that protects accumulated profit.
Daily Profit Protection + Meta USD + Prot. up to $Toggle + fieldsOnce the money target is reached, it protects you if profit pulls back to the limit you set.
Close All on Target HitToggleCloses positions when the money target is reached.
Stop Robot After TargetToggleBlocks new entries after the target.

SESSION sub-tab — hours, days, market, spread and news

GroupControlsEffect
TimesSpecific Hours, morning start/end and afternoon start/endDefines when the robot can trade, via fixed time windows.
WeekdaysSun, Mon, Tue, Wed, Thu, Fri, SatLets you block specific days.
MarketsMarkets, Asia, London, NY, Overlap OnlyFilters trading by market session and, if you wish, only the overlap.
SpreadSpread Filter + Max ptsBlocks entries when the spread is above the limit.
NewsEcon. Calendar, impact levels Low/Medium/HighEnables the news filter and chooses which impact levels count for the analysis/block.
Countries/currenciesUS, BR, EU, JP, GB, CN, AUSets which economies/currencies the news filter considers.

ROBOT sub-tab — tactical control, volumes, multi-asset and filters

GroupControlsEffect
TradingTrading Robot, Scalping ModeTurns automation and scalping mode on/off.
EntriesEntry Limit per Candle + Max, Entry Distance Filter + PtsPrevents too many entries in the same candle and entries far from the ideal point.
BehaviourAvoid Same Direction, Flatten OppositeControls whether the robot avoids stacking in the same direction and whether it closes the opposite position before entering.
Volume and ordersVolume for Robot Mode, Volume for Manual Mode, Max Positions per direction, Max Pending Orders/dirAdjusts lots, the cap on open positions per direction (0=unlimited) and how many pending orders @LIMIT/@STOP may pile up per direction (0=unlimited, 1=default) — all without reopening the EA inputs.
A2/A3 symbolsFields A2: / A3: + OKType the secondary/tertiary asset's symbol and click OK — the robot validates it, saves and restarts (~1-2s) already recognising the new asset in both automatic and manual trading.
Automatic multi-assetROBOT Trades on: R-A1, R-A2, R-A3Trading permission automatic per asset (the R- prefix = robot). A1 is the chart; A2/A3 depend on a configured symbol.
Buy filtersF.C1 the F.C5Turns the custom buy filters on/off.
Sell filtersF.V1 the F.V5Turns the custom sell filters on/off.

TELEGRAM sub-tab — notifications, reports and alerts

GroupControlsEffect
DiagnosticsShow Error Logs in the JournalShows Telegram communication errors in the MT5 Journal — useful for support.
Local/remote alertsSound, Push, New Signal, Order Closed, TP Hit, SL HitSets which alerts the EA raises for trading events.
Configuration fileSEND .SETSends your current EA configuration to Telegram when the token and chat ID are set.

BUFFERS sub-tab — indicator discovery

ControlTypeEffect
Indicator NameText fieldType the indicator's name without .ex5 and without a full path.
SubfoldersText fieldGive extra subfolders when the indicator is in Market\.... Use the ; separator for several folders.
ANALYSEButtonRuns the buffer/parameter discovery: the full report (buffers, syntax and ready-to-paste expressions) appears in the Journal. Ask the AI Coach for the indicator by name and the same report arrives straight in the panel chat.
Native indicatorsAutomatic detectionRSI, MACD, MA/EMA/SMA, STOCH, ATR, Bollinger and other native ones are recognised without needing a custom file.
After editing any field, click SAVE to lock in the configuration. Without saving, the change is 100% in force right away — the robot already trades with it — but it belongs to the session: it disappears on the robot's next restart (a timeframe change, among others). That is excellent for testing a setting; just do not mistake it for a permanent configuration. The three modes, and what wipes out an unsaved change → The robot's official on/off switch lives on the MQL Manager's main bar, in the button ROBOT. ⚠️ Important: after the first SAVE, this panel's fields take precedence over the Inputs on every restart — if you change one of these fields in the Inputs window and it "does not take", it is because the panel's saved configuration is winning. Change it on the panel itself (and save again).

POSITIONS tab — individual positions per asset

Title shown: INDIVIDUAL POSITIONS (ACCOUNT). It shows up to N assets at once (configurable under "Max visible assets"). For each asset with an open position it shows:

FieldWhat it displays
SymbolThe asset's name with a coloured marker (▌) on the left
BuysOpen buy volume + buy P&L in currency
SellsOpen sell volume + sell P&L in currency
ResultThe asset's total result (buys + sells) in currency
X button (buys)Closes only the asset's buy positions
X button (sells)Closes only the asset's sell positions
X button (everything)Closes every position of the asset (buys and sells)
The buttons X on the POSITIONS tab only appear when there is real volume on that side. If Sells: 0.00, for example, the close-sells button for that asset should not appear. Click carefully: the X on buys closes the asset's buys, the X on sells closes the asset's sells and the X on the result closes everything for that asset.

The tab's footer shows the totals for the whole account:

FieldContent
Compras: ---The sum of all open BUY volume in the account
Vendas: ---The sum of all open SELL volume in the account
Result Total: ---The total money result of every open position
Margem: ---Total margin requirement in use on the account (every asset that consumes margin). It can appear in 3 states — see the note below.
The 3 states of "Margin:" (POSITIONS tab footer):
• A value (e.g. Margem:$59.88) — margin in use, adding up every asset in the account.
• "N/A" — there is a position, but the broker does not report the margin (e.g. B3 futures on a demo account). Not an error — see Markets and Brokers.
• "---" — there is no open position in the account (a genuine zero margin).
The reading is live (PositionsTotal) — with many positions on a fast feed, the margin stays stable (it does not flicker).
If more assets have open positions than the configured limit, the panel shows only the allowed number and tells you more assets are hidden. Adjust Max visible assets and the panel height to show more rows.

INFO tab — account summary + Performance Center

The INFO tab (which used to be called SUMMARY and then CENTER) has two sub-tabs: [SUMMARY] — the account statistics described below (internally it uses Col3_/Col4_) — and [CENTER]objects), which opens the Performance Center (web dashboard). The SUMMARY sub-tab is split into three blocks shown side by side:

Block 1 — OVERALL RESULT (ACCOUNT)

FieldContent
Buys:Total P&L of open buys (symbol + value)
Sells:Total P&L of open sells (symbol + value)
Total Result:Consolidated P&L for the whole account
Acct. Total Margin:Total margin in use (or "EA Total Margin:" when restricted to the robot)
Meta:Progress towards the configured profit target, or OFF
Lim:Visual indicator of the loss limit with percentages, or OFF
Risk:Percentage and amount at risk in the open positions, or OFF
Why does "Total Margin" show R$ 0.00 on a demo account?
It is completely normal on demo accounts at Brazilian brokers (B3) — it is not a robot problem. What happens is this: MT5 fetches the margin required per contract straight from the broker's server . On many B3 demo accounts, that server simply does not supply the information (technically: the field SYMBOL_MARGIN_INITIAL stays at zero). Without that figure the terminal shows 0,00 — but orders are still sent and executed normally.

On a liveaccount, the broker reserves and reports the correct margin: WIN/WDO mini contracts have a per-contract margin set by B3 (e.g. ~R$ 100 per WIN); shares have margin calculated on the position's financial value. The robot neither controls nor calculates margin — that is entirely the broker's and the MT5 server's responsibility.

Block 2 — PROFIT OF THE DAY + PERFORMANCE OF THE DAY

FieldContent
Buys:Realised profit on buys for the day
Sells:Realised profit on sells for the day
Profit of the Day:Total realised money result for the day
Trades:Number of trades closed in the day (wins/losses)
Win Rate:The day's win rate as a percentage
Best Win:The day's biggest winning trade
Worst Loss:The day's biggest losing trade
Streak:Current streak of consecutive wins or losses

Block 3 — ALL POSITIONS + HOURS

FieldContent
BUYS:Number of open buy positions in the account
SELLS:Number of open sell positions in the account
Compras Pendentes:Number of pending buy orders
Vendas Pendentes:Number of pending sell orders
Tempo da Vela:Time left before the current candle closes
Server Time:The broker server's current time
Local Time:The computer's local time
Spread:The asset's current spread in pips
Session:The market session currently active
📰 Notícia:The next relevant economic news item (when the Calendar is set up)

🤖 AI tab — Gemini analysis hub

The operations hub of the AI Market Analysis system. It gathers the per-asset analysis buttons, the persisted runtime modes, the A1/A2/A3 cache status and the trigger for the floating AI panel on the chart. You do not need to open the EA parameters to change AI behaviour — it is all done here.

Analysis and maintenance buttons

ButtonActionPrecise note
ANALISAR A1Queues a Gemini analysis for the current chart's main asset.If the AI is off, the EA logs a warning telling you to enable the parameter ☑️ Enable AI Assistant (Gemini).
ANALISAR A2Queues an analysis for the second asset.It only runs if ✏️ Secondary asset A2 (e.g. EURUSD, XAUUSD) is filled in.
ANALISAR A3Queues an analysis for the third asset.It only runs if ✏️ Tertiary asset A3 (e.g. GBPUSD, BTCUSD) is filled in.
ANALISAR TODOSQueues A1 and the configured secondary assets in sequence.It was made for use with A2/A3. If only A1 exists, use ANALISAR A1.
SHOW PANEL / HIDE PANELShows or hides the floating AI panel over the chart.Same effect as the I.
CLEAR CACHEClears the AI's runtime cache and resets the displayed fields.Use it when you want to force a fresh reading without inheriting the previous answer.
REFRESH PANELRe-renders the floating AI panel and the AI tab.Useful after a resize, a visual change, or when you want to refresh the displayed reading.
TELEGRAM LASTResends the last AI analysis to Telegram.It only works if there is a cached answer and Telegram is enabled.

AI modes (persisted runtime toggles)

Each toggle below changes the next analysis's behaviour immediately. The state is kept across EA restarts — you do not need to reopen the parameters to change it.

ToggleWhat it enablesParameter as seen in MT5
DEEPUses the ✏️ PROFUNDO model instead of the fast model.☑️ Use DEEP model (slower/costlier)
WEBAllows web search and reading of news/fundamentals during the analysis.☑️ 🌐 Use web search (news/fundamentals)
CHARTAttaches a multi-timeframe chart screenshot with the request.☑️ 📷 Send a chart screenshot (multi-TF)
REVIEWEnables self-critique: the AI reviews its own answer before returning it (uses more tokens, improves quality).☑️ 🔎 Automatic AI review (may use more tokens)
ALERTSDecides whether the analysis leaves MT5: with it on, the result goes to the web dashboard (🤖 AI Coach tab) and, if you have connected it, also to Center on Telegram — along with the errors, when the AI fails. With it off, the analysis stays on the chart only.☑️ 📢 Send AI analyses to the panel and the alerts
SIMULATETest mode: blocks automatic orders that depend on the AI (but the analysis still runs and the cache is filled normally).☑️ 🧪 Test mode: blocks automatic AI orders
PLAN BSafety net: it uses the PROFUNDO model first and only falls back to FLASH if the deep one fails (timeout, 5xx, 503). You lose no depth and are never left without an analysis — best left on, mainly because the gemini-2.5-pro is frequently overloaded (503) on Google's side.☑️ 🔄 If DEEP model fails, automatically retry with FAST
The AI tab also shows the cache status per asset (A1/A2/A3): current decision, confidence, the analysis's age in seconds and whether it is valid (IA_VALIDA == 1). This panel is what your expressions using ANALISA_IA, A2ANALISA_IA and A3ANALISA_IA read in real time.
AI cache fieldMeaning on the panelUse in expressions
DecisionThe main direction/action returned by the analysis, such as buy, sell, wait, manage or close.Equivalent to the direction variables, such as ANALISA_IA, A2ANALISA_IA and A3ANALISA_IA.
ConfidenceThe clarity and strength of the signal (%) calculated by the AI. No is not the probability of the move — that is the Up%/Down% (IA_PROB_ALTA/IA_PROB_BAIXA).Use filters such as IA_CONFIANCA>=70 to avoid weak entries.
ValidityShows whether the analysis is still within the configured TTL.Always combine it with IA_VALIDA==1 before using the AI in automatic entries/exits.
AgeSeconds since that asset's last analysis.Helps avoid decisions on a stale analysis in fast markets.
Close BUY/SELLThe AI's signal to close open buys or sells.Can be used in exits such as IA_FECHAR_BUY==1 @BCLOSE or IA_FECHAR_SELL==1 @SCLOSE.

Send .SET button

📤
Send .SET
Exports your entire current EA configuration (active indicators, entry/exit/modification expressions) and sends it straight to your Telegram Ticket — the same chat where you receive the robot's notifications.

Use it to share your strategy with colleagues, keep a snapshot of your configuration or send it to support for review. The file arrives named SIMBOLO_MQLPRO_CONTA.set and can be forwarded to anyone on Telegram with one tap.
Requires Telegram to be set up
For the Send .SET button to work, the Bot Token and Your Chat ID fields must be filled in the Telegram settings (Group 14). If Telegram is not set up, the button is silently ignored.

🔁 THE SAME SETTING HAS TWO NAMES — Panel ↔ Inputs map

The robot is set up from two places:

  • The Inputs — the long list that appears when you drag the robot onto the chart, or when you click the robot's icon in the chart's top right corner and choose Properties.
  • The MQL Manager — the panel at the bottom of the chart, with the POSITIONS · INFO · AI · CONFIG tabs.

They are the same settings — but the panel uses short names, because space is tight there.

If you go looking in the Inputs for the name you saw on the panel, you will not find it — and vice versa. Use this table. It also serves the AI Coach: if you ask about "Max pts", it finds the matching parameter here.

⌨️ Keyboard shortcuts — the golden rule

Every action that moves money takes TWO keys, and the modifier key comes FIRST. Hold the modifier, then tap the letter. A letter on its own never opens an order — if you press C or V on its own, the robot merely explains in the Journal what to do.
ShortcutWhat it does
A+C / A+VOpen Buy / Sell Stop (a pending order). A for Open.
Shift+C / Shift+VBuy / Sell at Market (executes there and then)
Z+C / Z+VZero out every open buy / sell
X+C / X+VCancel the pending buys / sells
Shift+ZClose all
A+1 / A+2 / A+3Switches each manual target A1 / A2 / A3 on/off
Shift+AOpens the panel with the full list, on the chart itself
Two protections working for you: (1) the modifier expires in 2 seconds — if you hold Z and change your mind, it does not stay "stuck" making the next key mean something else; (2) there is a minimum interval between keyboard orders, so holding a key down does not fire a flood of orders.
The order of the keys matters: it is Z+C, not C+Z. Always think "what do I want to do (A rm, Z ero out, X cancel) and with what (C = buy, V = sell)".

⚠️ Which wins: the panel or the Inputs?

Once you click 💾 SAVE on the CONFIG panel, the panel is in charge. From then on, changing the value in the Inputs no longer has any effect on those fields: the robot keeps using what was saved. This is the explanation for "I changed it in the Inputs and nothing changed".

The reason is the reading order: on startup the robot reads the Inputs first and then immediately overwrites them with the configuration you saved from the panel — if there is one. About 120 settings are in that condition: the SL/TP/Break-even/Trailing ones, the risk and protection ones, the session/time/spread/news ones and the robot's own.

The saved configuration is per account and per asset. What you saved on account X trading WIN does not interfere with the same account trading XAUUSD, nor with account Y — each combination keeps its own.

In a backtest (Strategy Tester) it is different: the robot ignores the configuration saved from the panel and follows only the Inputs — that is, the .set you loaded for the test. And during the test, 💾 SAVE saves nothing. That way the result is that of the .set, and testing does not touch the configuration of the robot that is trading for real.

There are three modes, and you choose between them all the time

Many people think there is only "change it in F7" or "save it on the panel". There is a third one, and it is the most useful day to day:

What you wantWhat to doHow long it lasts
Test right now — change the stop, the risk, the volume and see the effectChange it on the panel and do NOT click 💾 SAVEIt also accepts immediately and it works exactly the same — it just does not survive the robot's next restart (list below)
Make it stick — leave it that way from now on for that chartChange it on the panel and click 💾 SAVEIt holds until you save again. From then on F7 stops being in charge of those fields
Give control back to F7Delete the saved file (step by step below) and put the robot backWhatever is in the Inputs takes over again
Rule of thumb: not saving is not "half working". The change takes effect 100% immediately — the robot trades with it. The only difference is that it belongs to the session, not to the file. If you are testing a setting, that is exactly what you want: test freely and only save once you like the result.

What wipes out an unsaved change (anything that makes the robot restart):

  • Changing the chart's timeframe — the most common one, and it catches almost everybody;
  • Changing the chart's asset of the chart, applying a template;
  • Opening the Inputs and clicking OK, or recompiling;
  • Removing and re-adding the robot, closing and reopening MetaTrader;
  • ⚠️ The robot restarting itself — it does that on its own when you set up A2/A3 from the panel, when you authorise the URLs and when it receives a command from the web dashboard.
The easiest trap to fall into: you adjust several things on the panel without saving and, on the same screen, type the A2 and click OK. The robot restarts to apply A2 — and takes with it everything you had not saved. If you are going to touch A2/A3, save first.
If you want to…Do this
Change a setting after having savedChange it from the panel and click 💾 SAVE again
Go back to being in charge from the InputsDelete the saved configuration file (path below) and put the robot back on the chart
Use different settings on each assetIt already works that way: set it up and save on each chart

How to give control back to the Inputs

The saved configuration lives in a file named NEXUS_MenuCfg_<sua conta>_<ativo>.bin. Deleting that file and putting the robot back on the chart makes F7 take charge of that chart again. You lose nothing else — only that one set of saved settings.

Beware the wrong folder — it is the most common mistake here. In MetaTrader, File → Open Data Folder opens the terminal's folder, and the file is not there. It lives in the Commonfolder, which is one level up and outside the folder with the code-like name. Anyone following the obvious path concludes the file does not exist.

The easiest way (the robot hands you the path): open the Experts (Journal) tab in MetaTrader right after putting the robot on the chart. When there is a saved configuration, it prints a line starting with [MenuConfig] containing the file's full path. Copy the path from there and paste it into File Explorer's address bar.

Through File Explorer, step by step:

  1. Press Win + R.
  2. Paste exactly this and click OK: %APPDATA%\MetaQuotes\Terminal\Common\Files
  3. Find the file NEXUS_MenuCfg_<sua conta>_<ativo>.bin — for instance, NEXUS_MenuCfg_123456_WINV26.bin.
  4. Delete only the file for the account+asset pair you want to release.
  5. Go back to MetaTrader and put the robot on the chart again (or switch the timeframe and come back).
Each file belongs to one account and one asset. Deleting WIN's does not touch XAUUSD's, nor another account's — so you can release just the chart you want, without reconfiguring the rest.
If that file is deleted or gets corrupted, you lose nothing: the robot warns you in the Journal ("Config file truncated/corrupted - using the inputs") and goes back to obeying the Inputs on its own.

CONFIG → ROBOT tab

On the panelOn the Inputs tab
Trading Robot☑️ ENABLE TRADING ROBOT
Scalping Mode☑️ ⚡ ENABLE Scalping Mode (RECOMMENDED)
Entry Limit per Candle + Max:☑️ Limit entries per candle + ✏️ Max entries per candle (per direction)
Entry Distance Filter + Pts:☑️ Distance filter for auto entries + ✏️ Max distance from reference price (pts)
Avoid Same Direction☑️ Skip order if position exists in the direction
Flatten Opposite☑️ Close opposite position before entering
Volume for Robot Mode:✏️ ROBOT VOLUME (BUY1-10/SELL1-10 without SetVolume[])
Volume for Manual Mode:✏️ Initial VOLUME (adjustable via TICKET)
Max Positions per direction:✏️ Max open POSITIONS per direction (0=unlimited)
Max Pending Orders/dir:✏️ Max PENDING ORDERS per direction (0=unlimited)
F. Compra: F.C1 … F.C5☑️ Enable Filter 1 … 5, in the 🤖 BUY FILTER SETUP (01 to 05) group
F. Venda: F.V1 … F.V5☑️ Enable Filter 1 … 5, in the SELL group

CONFIG → NORMAL tab (SL / TP / BE / TS)

Careful here: on this tab the labels Points: and PROFIT pts: appear twice each. What tells them apart is the row they are on — the SL one, the TP one, the BE one or the TS one.
On the panelOn the Inputs tab
SL: ON/OFF + Points: (SL row)☑️ ENABLE Stop Loss + ✏️ Points from entry to SL
TP: ON/OFF + Points: (TP row)☑️ ENABLE Take Profit + ✏️ Points from entry to TP
BE: ON/OFF + PROFIT pts: + Offset:☑️ ENABLE Breakeven + ✏️ PROFIT points to TRIGGER BE + the BE offset
↳ drags by CANDLE / ↳ drags by FIXED STEP (it only shows with TS switched on)☑️ MODE: trail by CANDLE (off = fixed step above)
TS: ON/OFF + PROFIT pts: + Step:☑️ ENABLE Trailing Stop + the points to start and the step distance

CONFIG → ADVANCED tab

Here the panel only switches on and off — the numbers live in the Inputs, and the panel says so itself.

On the panelOn the Inputs tab
SL pelo Candle☑️ ENABLE SL at previous candle Low/High
Stoch SL (chart only)☑️ ENABLE SL by Stochastic extreme
ATR SL/TPthe DYNAMIC SL/TP BY ATR group
% SL/TPthe PERCENTAGE SL/TP (% of price) group
Automatic TP (xSL)☑️ ENABLE TP multiplied by SL
Dynamic TP☑️ ENABLE DYNAMIC TP
TP Conservador☑️ ENABLE CONSERVATIVE TP
The TS Dinâmico is no longer on this tab. It was never a separate system — it is the Trailing Stop's mode , and with Trailing switched off it did nothing, even though the button could read ON. It now appears on the NORMALtab, right below the TS row, and only while TS is switched on.

CONFIG → RISK tab

Risk per trade appears in different units in the two places. On the panel you read Risco dinâmico (% banca): 2.00 %; in the Inputs the same setting is ✏️ Risk per trade (0.02 = 2% of balance) — that is, 0.02. It is the same value written two ways.
On the panelOn the Inputs tab
Dynamic risk (% balance)☑️ Enable dynamic risk per trade + ✏️ Risk per trade (0.02 = 2% of balance)
Daily Loss Limit☑️ Lock by daily loss + ✏️ Max daily loss (%)
Daily Profit Limit☑️ Lock by daily profit + ✏️ Max daily profit (%)
Stop Robot When Limit Is Hit☑️ Stop trading after limit
Close Positions on Drawdown☑️ Close positions on drawdown threshold
Profit Protection☑️ Protect profits (positive drawdown)
Daily Profit Protection☑️ Enable USD profit protection
Target $: and Prot. up to $:✏️ Daily profit target in $ and ✏️ Protect if drops to $ (drawdown)
Close All on Target Hit☑️ Close all on target
Stop Robot After Target☑️ Stop trading after target hit

CONFIG → SESSION tab

On the panelOn the Inputs tab
Specific Hours☑️ USE SPECIFIC HOURS
Markets · Asia · London · NY · Overlap Only☑️ Filter by sessions and each session's toggles
Spread Filter + Max pts:☑️ Filter high spread + the maximum spread
Econ. Calendar + Baixa/Média/Alta☑️ ✅ ENABLE ECONOMIC CALENDAR + the impact filters

CONFIG → AI tab (and the AI tab at the top)

On the panelOn the Inputs tab
Model:✏️ FAST model
Deep model: / the DEEP☑️ Use DEEP model (slower/costlier)
Quick plan B:☑️ 🔄 If DEEP model fails, automatically retry with FAST
Chart:☑️ 📷 Send a chart screenshot (multi-TF)
Alerts: / the ALERTS☑️ 📢 Send AI analyses to the panel and the alerts
Auto A1/A2/A3:each target's auto-analysis parameters
Logs/CSV:☑️ 📝 Write a CSV of the analyses

CONFIG → BUFFERS tab

It is the indicator discovery: you type an indicator's name .ex5 and the robot answers with the buffers and parameters it has. It does not replace the declaration — once you have found out, fill in ✏️ INDICATOR NAME and ✏ INDICATOR PARAMETERS in the Inputs, as shown in How to declare an indicator.

🧹 CLEANUP SETTINGS

The robot creates chart objects while it works (lines, labels, arrows from the panels and from the orders).

There is nothing to configure here — and there is no need to. The cleanup happens on its own when the robot leaves the chart: when you remove the EA, change the timeframe or recompile, it deletes its own objects. There is no periodic routine sweeping the chart while the robot trades, nor any interval parameter. If any object is left behind after an abnormal MT5 shutdown, the robot's own next start-up clears it.

🐛 LOG / DEBUG

It controls the diagnostic records on the Experts tab in MT5. For most users no log needs to be switched on — use them only when investigating a problem.

Heavy logs (Verbose, System) produce hundreds of messages per minute and can slow MT5 down. Switch them on only while actively diagnosing and switch them off afterwards.
ParameterWhat it recordsDefaultWhen to use it
Interval between logs (sec)How often the periodic status logs come out60 secDrop it to 10 sec during active debugging
System logsStartup, ticks, state changesNoThe robot does not start or seems stuck
Licence debugActivation/licence verificationNoOnly if support asks for it
⭐ Errors in expressionsSyntax errors and invalid tokens in BUY/SELL/EXIT/FiltersNoSwitch it on whenever you set up new expressions
Verbose debug (full)Every expression evaluation and decision flowNoAn expression does not fire and you want to see it step by step
General errorsFailures opening handles, communication errors; and repeats the [ORDER BLOCKED] on every refusal (without it, at most once every 10 min per reason)NoUnexpected behaviour with no clear message
Order executionPrice, volume and result of every order sentNoAn order did not go out or the price differs from what you expected
Profits/lossesThe calculated open profit and day's profit valuesNoThe figures on the panel look wrong
Indicator debugLoading and the values read from IND1–IND30 and the AI's indicatorsNoAn IND returning zero or wrong values in expressions
Telegram errorsConnection failures, an invalid token, the bot timing outYesKeep it on until you confirm Telegram works
A2 update logsSyncing and updating the secondary asset's dataNoTrouble reading A2
A2 execution logsExecution of orders aimed at the secondary assetYesSpecific trouble with orders on A2
A2 validation logsA2's detailed internal validationsNoHeavy debug, use it only if you must
When setting up new expressions, temporarily switch on ☑️ Show errors in expressions (RECOMMENDED) — the log shows exactly which token is wrong and in which slot (e.g. [EXPR ERROR] COMPRA [01]: token desconhecido '@MERCADOO').
An error is never hidden. The lines marked [ERRO], [AVISO] and [DICA] always come out, with every log switched off — that is deliberate, so the robot never fails in silence. What these parameters control is the routinelog, not the problem one.

The parameters, one by one

They all live in the ✅ SYSTEM LOGs, DEBUGs AND ANOMALIESgroup, in the Inputs.

✏️
✏️ ⏱️ Interval between Logs and Debugs (seconds)
The minimum spacing between repeated messages. It is the brake that stops the same warning coming out on every tick. It applies to the routine logs below.
Default: 60Seconds
☑️
☑️ Show errors in expressions (RECOMMENDED)
The only one worth leaving on day to day while you build strategies: it points at the wrong token and the exact slot.
Default: NoYes/No
☑️
☑️ Full debug (evaluations, cache, flow)
The heaviest of them all — it records every condition evaluation. ⚠️ Use it only during a diagnosis and switch it off afterwards.
Default: NoYes/No
☑️
☑️ Order execution
It records every order sent and what the broker answered. It is the first one to switch on when "the order did not go out".
Default: NoYes/No
☑️
☑️ 🔍 Detailed Copy Trading logs
It details what happens in copying through the Center — what was published and what was executed, with the reason for each failure.
Default: YesYes/No
☑️
☑️ Order execution logs on A2
For the secondary asset. 🔑 It is this one that reveals when the ceiling ✏️ Max volume allowed on A2 (lots) cut your volume — without this log, the cut happens silently.
Default: YesYes/No

The rest follow the same logic and live in the same group: ☑️ 🖥️ System logs (OnInit, OnTick, state changes) · ☑️ General errors (handles, etc.) · ☑️ 💵 Profits/losses · ☑️ Indicator debug (config, params, errors) · ☑️ 🔐 Debug: show licence verification logs · ☑️ Secondary asset update logs · ☑️ Validation logs (heavy debug) · ☑️ 🐛 Show detailed error logs in the Journal. On the AI side: ☑️ 📋 AI logs on the Experts tab, ☑️ 📝 Write a CSV of the analyses, ☑️ 🔢 Log tokens used per call (cost estimate) and ☑️ 💾 Save shots to Files\AI_Screenshots\ (visual debug).

🤖 AI MARKET ANALYSIS

Market analysis system powered by Google Gemini. The AI can be triggered from the MQL Manager's main AI tab, from the AI ANALYSE button on Telegram, or by timed auto-analysis for A1/A2/A3. The current mode is SIGNAL-ONLY: the AI delivers direction, confidence, probabilities and a qualitative market reading, without suggesting an entry price, SL, TP or R:R.

How it works: the EA gathers technical data, session context, open positions, the economic calendar, the recent analysis history and, if enabled, a web search and a chart screenshot. Gemini returns a structured JSON with BUY, SELL or WAIT, confidence, up/down probability, trend strength, reversal, justification and alerts.
☑️
☑️ Enable AI Assistant (Gemini)
The master switch. With it off, the analysis buttons queue no Gemini calls and the AI expressions receive no fresh cache.
Default: NoYes/No
📊
✏️ 🔑 Your Gemini API key (https://aistudio.google.com/apikey)
Each client uses their own Google AI Studio key. Paste the full key into this field and allow the URL https://generativelanguage.googleapis.com in MT5's WebRequest.
Default: emptyText
🔗
☑️ 🔗 Measure REAL correlation between assets (A1/A2/A3)
Turns on the measured correlation report that goes with every AI analysis. Before, the AI only received the verdict of the other assets and guessed the correlation from general knowledge; now it receives the real number from your broker, over your period.
What the report brings for each pair: the correlation of the long window (the normal regime), that of the short window (the regime right now), the beta (how far one asset moves per unit of the other — this is what sizes a hedge), how many candles were actually paired, and a warning when the correlation is changing regime.
🎯 And the warning that is worth money: if you are long two assets with a +0.9 correlation, that is not diversification — it is the same bet twice over. The report says so. Opposite directions with a positive correlation become a self-cancelling hedge (risk and result tend to zero, but the costs remain).
How it is measured (and why that way): over returns, not over price — two assets in an uptrend would give a ~0.99 correlation with no real relationship at all; and with the candles aligned by timestamp, not by index — assets from different markets (WIN$ and EURUSD, for instance) have different sessions, and matching candle by candle would compare different days. Only a candle that exists in both counts.
Cost in the prompt: about 500 characters for 3 assets — the report sends only the conclusions, never the price series.
Default: YesYes/No
⚙️
Correlation settings
⏱️ Measurement timeframe — Current uses the timeframe of the chart the robot is on; pick a fixed one (e.g. M15) if you want to always measure on the same.
✏️ Candles in the LONG window (default 100) = the relationship's "normal" regime. ✏️ Candles in the SHORT window (default 20) = how it is right now. The gap between the two is what reveals the correlation breaking down — the moment the assets start to decouple.
✏️ Minimum PAIRED candles (default 25) — below that the robot says "small sample" instead of showing a number. With few candles, a correlation of 0.4 is noise, not information; better to say it does not know.
☑️ Use logarithmic returns (default Yes) — this is the correct way. Only turn it off if you want to compare with another tool that uses simple returns.
✏️ |correlation| that triggers the doubled risk warning (default 0.70) — from this value up the robot warns about concentrated exposure or hedging. Raise it to 0.85 if you only want the extreme cases.
Long: 100 · Short: 20Min paired: 25Warning: 0.70
🧠
AI models and modes
✏️ FAST model is used in the normal flow and ✏️ PROFUNDO model steps in when you want a more critical analysis. The PROFUNDO, WEB, CHART, REVIEW, SIMULATE, TELEGRAM and PLAN B buttons on the AI tab change the runtime state and are persisted.

🔁 You can change the model freely: these fields accept any Gemini model ID — just type it (e.g. gemini-3.5-flash, gemini-3.1-pro-preview, gemini-2.5-pro). The EA adjusts the "reasoning" style on its own according to the model generation (2.5 and 3.x) and keeps the web search. Tip: the gemini-3.5-flash is usually faster and more stable than the 2.5-pro (which is frequently overloaded with 503).
Fast default: gemini-3.5-flash (free)Deep default: gemini-3.1-pro-preview (paid)accepts 2.5 and 3.x
⏱️
Cache and A1/A2/A3 auto-analysis
AI analysis validity for expressions sets how long the analysis stays valid; Minimum time between AI requests limits requests that come too close together; Auto-analyse A1/A2/A3 keeps the analysis refreshed automatically; If the AI analysis expires decides whether the AI expression blocks when the cache expires.
TTL: 300sCooldown: 30sA1/A2/A3
⏰
✏️ ⏰ TIMEFRAMES (AI only)
Sets which timeframes are gathered and sent for analysis. You can enable one or more of: M1, M5, M15, M30, H1, H4, D1, W1, MN1. The AI receives the data from every active timeframe and judges how coherent they are: the higher timeframe sets the direction (primary trend) and the lower one sets the entry timing.

🔑 A pullback is not a conflict. If H4 is trending up and H1 is merely pulling back or consolidating, that does not cancel the signal — it is precisely the entry in favour of the higher trend. The AI only returns WAIT for divergence when the primary trends point in opposite directions.

💡 Recommended combinations: H1 + H4 or M15 + H1. With three enabled (e.g. M15 + H1 + H4) there is a tie-breaker when two disagree — with only two, both have to agree.
Default: H1 + H4Yes/No per timeframe
🎯
✏️ 🎯 Min probability (%) for the AI to call BUY or SELL
This is the cut-off that decides whether the analysis comes out as BUY/SELL or as WAIT. With the default of 65%, the AI only calls a buy once the High probability reaches 65% (or a sell once Low does); below that it answers WAIT.

💡 If the AI sits on WAIT nearly always, lowering this value (say to 55% or 60%) makes it take a side more often. Raising it makes the AI more selective: fewer signals, higher bar.

🚩 Mind what this field does NOT do: it changes what the AI recommends — does not block any trade. To block an entry on signal quality, that is your entry condition's job, e.g. ANALISA_IA == 1 && IA_CONFIANCA >= 70 && IA_VALIDA == 1.

⚠️ It applies to Up/Down (probability), which is different from the Confidence shown in the analysis: confidence measures how clear the signal is, not the chance of rising or falling.
Default: 65%Number (%)
📱
📢 Result sent in the alerts
With the ALERTS button on the AI tab on, the analysis's final result goes to the Center's dashboard, to the 🔔 dashboard bell and to the Telegram bot. It includes decision, confidence, probabilities, technical reading, price action, macro scenario, zones of interest, justification and alerts. It does not include Entry/SL/TP/R:R as an AI recommendation. What governs this in the robot's parameters is ☑️ 📢 Send AI analyses to the panel and the alerts.
Depends on the ALERTS button on the AI tab
💸 Free vs Paid — and how to test in FREE mode: whether it is free or paid does not depend on your e-mail, but on whether the Google Cloud project that owns the key has billing enabled or not.
  • FREE key = a project without billing. It only works with Flash/Flash-Lite (gemini-3.5-flash, gemini-2.5-flashmodels, with lower limits; the data may be used by Google to improve the models.
  • PAID key = a project with billing. It unlocks every model, including Pro (gemini-3.1-pro-preview, with higher limits and no use of your data for training.
To test it free of charge you do NOT need another e-mail: in aistudio.google.com/apikey → Create API key → Create API key in a new project (do not enable billing on that project). In the EA: paste that key, leave the FAST model log under gemini-2.5-flash or gemini-3.5-flash and keep DEEP mode off (Pro does not run on a free key).
"Suggested Bias" in the header: the top of the analysis shows Suggested Bias: 🟢 BUY / 🔴 SELL / ⚪ NEUTRAL/WAIT. It is the direction the AI read in the market (an educational reading) — it is not an order. What acts is always your own expression BUY/SELL/EXIT, using the variables ANALISA_IA, IA_CONFIANCA, IA_PROB_ALTA/IA_PROB_BAIXA — which come from the analysis's numbers, not from that text.

AI operational settings

Name as seen in the parametersDefaultUse in the EA
☑️ Enable AI Assistant (Gemini)NoTurns the whole Gemini assistant on/off.
✏️ 🔑 Your Gemini API key (https://aistudio.google.com/apikey)emptyThe client's individual Google AI Studio key.
✏️ FAST model / ✏️ DEEP modelgemini-3.5-flash / gemini-3.1-pro-previewFast (free) and deep. They accept any Gemini ID — every Pro model (including the deep one) is paid (it requires billing); without billing, use only FAST and leave DEEP mode off (the default).
☑️ Use DEEP model (slower/costlier)NoUses the deep model by default when enabled.
☑️ 🌐 Use web search (news/fundamentals)YesAllows web search/fundamentals when WEB mode is on.
☑️ 📷 Send a chart screenshot (multi-TF)YesSends a chart screenshot when CHART mode is on.
✏️ 🔁 Retries on HTTP 429/5xx / ☑️ 🔄 If DEEP model fails, automatically retry with FAST / ✏️ ⏱️ Max time for the AI to reply (sec)1 / Yes / 120sHTTP retries (1 = one quick extra attempt; each 503 consumes quota, so hammering is unwise), Plan B on the fast model and the maximum reply time (120s gives DEEP mode room to finish).
☑️ 🧪 Test mode: blocks automatic AI ordersNoAllows analysis but blocks automatic AI-based entries.
☑️ 🛑 AI analysis expired: block (true) or renew (false)YesIf the AI cache expires, AI expressions block instead of renewing on the spot.
☑️ 🔎 Automatic AI review (may use more tokens)YesEnables automatic review of the answer, using more tokens.
✏️ ⏰ Auto-analyse A1/A2/A3 every N sec (0=buttons only)0 / 0 / 0Schedules auto-analysis per asset; 0 leaves only manual/button triggering.
✏️ ⏱️ AI analysis validity for expressions (sec) / ✏️ ⏱️ Minimum time between AI requests (sec)300s / 30sThe cache's validity for expressions and the minimum time between calls.
☑️ 📝 Write a CSV of the analyses / ☑️ 🔢 Log tokens used per call (cost estimate) / ☑️ 📋 AI logs on the Experts tab (respects the Interval between Logs and Debugs)Yes / Yes / YesRecords analyses, token use and AI logs in the terminal/Telegram.
☑️ 📢 Send AI analyses to the panel and the alerts / ☑️ 💾 Save shots to Files\AI_Screenshots\ (visual debug)Yes / NoSends the analysis (and the AI's errors) to the web dashboard and the alerts; and, if you wish, saves screenshots to Files\AI_Screenshots\.

Advanced AI calibration (LACs)

These parameters calibrate the context sent to Gemini. They neither open nor close orders on their own; what executes is always your BUY/SELL/EXIT expression using the AI variables.

LayerParameters as seen in MT5EA default
ATR regime☑️ AI receives market VOLATILITY reading
✏️ 📈 Sensitivity to detect a VOLATILE market (default 1.3)
✏️ 📉 Sensitivity to detect a CALM market (default 0.7)
✏️ 📊 History candles for the volatility average
On · volatile ≥ 1.3x · calm ≤ 0.7x · 20-candle average
Bollinger Squeeze☑️ AI detects COMPRESSION before explosive moves
✏️ 🤐 Detect COMPRESSION before a strong move (default 0.6)
✏️ 💥 Detect EXPANSION in a wide move (default 1.4)
✏️ 📊 History candles for the Bollinger average
On · squeeze ≤ 0.6x · expansion ≥ 1.4x · 50-candle average
AI-driven closing☑️ AI uses strict criteria to suggest closing positions
✏️ 🚪 Min confidence (%) for the AI to suggest closing
On · 60% minimum probability to suggest closing a position
AI signal cut-off✏️ 🎯 Min probability (%) for the AI to call BUY or SELL65% · below that the AI answers WAIT. Lowering it makes the AI take a side more often; it does not block trades
Cross context☑️ AI cross-checks A1/A2/A3 analyses (correlation)
☑️ AI considers your TOTAL open risk
☑️ AI fetches the right news for each asset type
On · cross-checks A1/A2/A3, open risk and asset class
Recent OHLC✏️ (reserved for future improvements - no effect right now)5 candles · reserved for future improvements, no operational effect right now

Data sent for the Gemini analysis

BlockParameters as the client sees themWhat it adds to the context
Native indicatorsAI ONLY: Enable RSI, AI ONLY: Enable MACD, AI ONLY: Enable Stochastic, AI ONLY: Enable ADX, AI ONLY: Enable ATR, Enable Bollinger, AI ONLY: CCI, AI ONLY: Williams %R, AI ONLY: Momentum and AI ONLY: Parabolic SAR🚩 Note the "AI ONLY:" in the label — it changed what these fields promise. These tick boxes (and the ⏰ SÓ IA: Timeframe …fields) decide what goes into the reading sent to the AI and do not affect your expressions — with one exception, and it matters (just below). If your condition mentions RSI, the RSI is computed anyway, and the timeframe comes from the expression itself, not from this field.

⚠️ The exception: in this same list, Enable Bollinger also drives your expression — and the same goes for Enable VWAP, Enable Ichimoku, Enable POC and Enable automatic Fibonacci. With the tick box off, that family's tokens (BBUPPER, VWAP, TENKAN, POC, FIBO500…) have no value to compare — and the robot rejects the condition, warning in the SAFETY ALERTS panel and on Telegram which value was missing. A rejected condition simply does not fire: it counts as neither zero nor true. The full list is in section 16. If your expression mentions one of these, leave the tick box on — otherwise that line will never trade, and the alert is the only way you find out.

🔑 What does affect both worlds (AI and expression) is the period and the applied price: Período RSI, Período rápido/lento/Sinal of the MACD, %K/%D/Slowing, Period and Desvio padrão for the Bollinger. Change the period there and your condition changes too.

Classic technical readings per configured timeframe; CCI/WPR/Momentum/SAR come in as optional extras. The CCI has its own period and timeframe; Williams %R (14), Momentum (14) and Parabolic SAR (0.02/0.2) use the classic parameters and the timeframes ticked under ⏰ TIMEFRAMES (AI only). The period used always appears in the reading sent to the AI.
Moving averagesApplied price (EMA), EMA 8, EMA 21, EMA 50, EMA 200, their timeframes and periodsTrend alignment and confluence between timeframes.
Price actionCandle patterns, Support/Resistance, Volume analysis and Trend analysisCandle patterns, support/resistance, relative volume, divergence and trend.
Advanced readingsLight VWAP, Ichimoku, light POC and automatic Fibonacci, with their timeframes/periods (see the sub-table below)Light VWAP, Ichimoku, binned POC and automatic Fibonacci enrich the AI and, when the matching parameters are on, also feed the advanced variables used in expressions.
Custom AI indicatorsEnable IND21 to IND30, Indicator Name and Indicator ParametersA dedicated block for indicators the AI should read as extra context. Unlike IND1-IND20 (used in BUY/SELL/EXIT/Filter expressions), IND21-IND30 are read automatically across every buffer from 0 to 7 and injected into the Gemini prompt with the name, parameters and readings of each buffer. It only works with the slot enabled and a valid indicator handle.
Multi-TFM1, M5, M15, M30, H1, H4, D1, W1 and MN1Sets which timeframes go into the prompt when the indicator uses PERIOD_CURRENT.
Analysis historyThe last 5 AI analyses of the same asset (decision, confidence, time)The EA keeps a circular history of the 5 most recent analyses per asset and re-injects it into the prompt so the AI stays coherent between consecutive analyses (it avoids "flip-flop" with no clear reason).
Open positionsVolume, P&L, SL/TP and magic of the open positions on the analysed assetThe AI receives the portfolio's real state so it does not recommend an entry that conflicts with an already open position, and so it can tell "manage" (same direction) from "close/reversal" (opposite direction).
Real economic calendarEvents via MT5's native MqlCalendar (the next few hours)Real events filtered by country, importance and time window (not a fixed fallback). The AI uses them to spot macro timing — it may suggest WAIT when a critical event is imminent, or note it in alerts.
Analytical frameworkThe AI's persona with 7 explicit rulesThe AI works under a fixed framework: top-down multi-timeframe trend, confluence across ≥ 2 TFs, S/R with strength ≥ 2 as the anchor, indicators as a filter (not a standalone trigger), fundamental context, an implicit minimum R:R ≥ 1.5, never against the primary trend without a complete reversal. It increases consistency between runs.
LAC calibrationATR regime, Bollinger squeeze/expansion, multi-asset context, portfolio risk, asset class and the strict closing ruleIt improves the reading of volatility, compression, A1/A2/A3 correlation and position closing. The result is available in the AI expression variables.
Automatic reviewToggle REVIEW on the AI tab / the parameter ☑️ 🔎 Automatic AI review (may use more tokens)When on, the AI reviews its own answer before returning it — it checks for a contrary signal, timeframe alignment, SL/TP coherence against ATR, the calendar, flip-flop and confidence calibration. It uses more tokens but raises quality.

Advanced readings — detailed parameters

Each advanced reading has its own timeframe and parameters. The defaults are balanced for most assets — only change them if you know what you are changing.

ReadingParameters as seen in MT5Default
Light VWAP☑️ Enable VWAP (volume weighted average price)
☑️ ⏰ Chart used to compute the VWAP
✏️ 📊 Candles used in the calculation (default 50)
Yes · PERIOD_CURRENT · 50 bars
Ichimoku☑️ Enable Ichimoku — Japanese trend cloud
☑️ ⏰ Chart used to compute the Ichimoku
✏️ 📏 Fast conversion line (default 9)
✏️ 📏 Slow base line (default 26)
✏️ 📏 Width of the future cloud (default 52)
Yes · PERIOD_CURRENT · 9 / 26 / 52
Light POC☑️ Enable POC — the price with the largest traded volume
☑️ ⏰ Chart used to compute the POC
✏️ 📊 Candles analysed for the POC (default 120)
✏️ 📐 Price bins for the volume (default 24 — leave it)
Yes · H1 · 120 candles · 24 bins
Automatic Fibonacci☑️ Enable automatic Fibonacci (finds top and bottom)
☑️ ⏰ Chart used to locate the Fibo swing
✏️ 📊 History candles to find the swing (default 120)
✏️ 📐 Margin candles to confirm the top/bottom (default 3)
Yes · H4 · 120 candles · 3 (swing window)
These readings enrich the prompt sent to Gemini and can also feed advanced variables from the Expression Library, such as VWAP, POC, TENKAN, KUMOTOP, FIBO618 and Bollinger, as long as the matching parameter is on.
Rule for automatic entries: always use the decision together with the confidence and the cache validity. For example: ANALISA_IA == 1 && IA_CONFIANCA >= 70 && IA_VALIDA == 1 @MARKET. The old minimum-confidence parameter was removed; operational control lives in the expressions.

AI expression variables

AssetMain variablesRecommended use
A1ANALISA_IA/IA_DECISAO, IA_CONFIANCA, IA_VALIDA, IA_IDADE_SEG, IA_PROB_ALTA, IA_PROB_BAIXA, IA_FECHAR_BUY, IA_FECHAR_SELL, IA_REVERSAO, IA_FORCA_TENDENCIAEnter, filter or exit on the chart's asset.
A2A2ANALISA_IA, A2IA_CONFIANCA, A2IA_VALIDA, A2IA_PROB_ALTA, A2IA_PROB_BAIXA, A2IA_FECHAR_BUY, A2IA_FECHAR_SELLFilter, trade or exit on the second configured asset.
A3A3ANALISA_IA, A3IA_CONFIANCA, A3IA_VALIDA, A3IA_PROB_ALTA, A3IA_PROB_BAIXA, A3IA_FECHAR_BUY, A3IA_FECHAR_SELLFilter, trade or exit on the third configured asset.
Important: legacy variables such as IA_RR, IA_SL_PTS, IA_TP1_PTS, IA_TP2_PTS and the suggested new SL/TP remain available in expressions for compatibility, but in SIGNAL-ONLY mode they return zero or should not be used for operational decisions.

AI expression examples

Use the analysis as a trigger or a filter, always together with IA_VALIDA == 1. The analysis must exist in the cache: run it from the AI tab's buttons, from Telegram or via A1/A2/A3 auto-analysis.

COMPRA [01]: ANALISA_IA==1 && IA_VALIDA==1 && IA_CONFIANCA>=70 && IA_PROB_ALTA>=60 @MARKET -> SetVolume[0.01]
VENDA  [01]: ANALISA_IA==-1 && IA_VALIDA==1 && IA_CONFIANCA>=70 && IA_PROB_BAIXA>=60 @MARKET -> SetVolume[0.01]

SAÍDA COMPRA [01]: IA_VALIDA==1 && IA_FECHAR_BUY==1 @BCLOSE
SAÍDA COMPRA [02]: IA_VALIDA==1 && IA_REVERSAO==1 && ANALISA_IA==-1 @BCLOSE
SAÍDA VENDA  [01]: IA_VALIDA==1 && IA_FECHAR_SELL==1 @SCLOSE
SAÍDA VENDA  [02]: IA_VALIDA==1 && IA_REVERSAO==1 && ANALISA_IA==1 @SCLOSE

COMPRA [02]: A2ANALISA_IA==1 && A2IA_VALIDA==1 && A2IA_CONFIANCA>=70 @A2MARKET -> SetVolume[0.01]
VENDA  [02]: A3ANALISA_IA==-1 && A3IA_VALIDA==1 && A3IA_CONFIANCA>=70 @A3MARKET -> SetVolume[0.01]
SAÍDA COMPRA [03]: A2IA_VALIDA==1 && A2IA_FECHAR_BUY==1 @A2BCLOSE
SAÍDA VENDA  [03]: A3IA_VALIDA==1 && A3IA_FECHAR_SELL==1 @A3SCLOSE

🖥️ Floating AI panel on the chart (key I)

Besides being sent to Telegram, each AI analysis's result can be shown directly over the chart, in a floating panel. Use the I key to toggle it, or the SHOW PANEL button inside the AI buttons of the MQL Manager.

🪟
Two-column layout
The panel renders the analysis in 2 side-by-side columns when the chart is wide enough. Font Consolas 9pt, line height 17px, twice the capacity of a single column — the full analysis fits without being cut. When the chart is narrow, it falls back automatically to one wide column.
Font: Consolas 9ptLine: 17px
🔄
It appears on its own (auto-pop)
When a new analysis (A1/A2/A3) is ready — or when an error/warning occurs (e.g. an overloaded server) — the panel appears automatically over the chart, with the same message that goes to Telegram. You do not have to open anything. If you close it with I or with the Xbutton, that same content does not come back on its own — only the next analysis/error reopens it.
Success and errorSyncs A1+A2+A3
⏳
It appears at the START (an "ANALYSING…" banner)
The moment you click to analyse (A1/A2/A3), the panel appears on its own straight away with an "[ ANALYSING … ]" banner at the top — you do not need to press I. If an analysis was already on screen, the banner goes at the top and keeps the previous analysis visible below; when the new result arrives, the banner disappears and the new analysis is shown.
Immediate feedbackKeeps the previous one
✖️
"X Close (I)" button
In the panel's top-right corner there is a button X Close (I) that closes the panel with one click — no need to remember the shortcut. The (I) in the label reminds you that the I key does the same (open/close).
Click or key I
👁️
It always starts hidden
By UX decision, the panel starts hidden every time the EA loads — even if the previous screen had it showing. Use I or SHOW PANEL to show it whenever you want (and it also appears on its own when an analysis/error completes).
Default: hidden
The panel's content is the same one sent to Telegram (decision, confidence, technical readings, justification, alerts), but the panel has no 4096-character Telegram limit — on long analyses, it is the panel that shows the full report.
"Gemini server overloaded (HTTP 503)": it is a temporary problem on Google's side, common on the PROFUNDO (gemini-2.5-promodel — it happens even on paid accounts and is not an EA fault. When it does, the panel shows the warning with instructions. What to do: (1) wait 2–3 min and run the analysis again; or (2) enable PLAN B on the AI tab — with it on the EA uses DEEP first and only falls back to FLASH if the deep one fails, so you lose no depth and are never left without an analysis. Avoid resending back to back: every attempt consumes your API quota even when it fails. The warning itself identifies which DEEP model is configured and, if it belongs to the 2.5 generation (the one most prone to 503), it automatically suggests changing the input to Gemini_ModelDeep to gemini-3.1-pro-preview — a newer generation with fewer reports of overload (it requires active billing on the Google account).

Example result on Telegram

ANÁLISE XAUUSD [Gemini]
COMPRA | Confiança: 78%
Alta: 72% | Baixa: 28%
Força tendência: 65/100 | Reversão: NÃO
Sessão: Nova York

LEITURA TÉCNICA:
Tendência principal alinhada em H1/H4, com suporte próximo e volume acima da média.

AÇÃO DO PREÇO:
Últimos candles mostram continuação compradora, mas ainda exigem confirmação de rompimento.

CENÁRIO MACRO/POLÍTICO:
Sem notícia crítica imediata no calendário; manter atenção a eventos USD.

ZONAS DE INTERESSE:
Suporte: 2380/2372 | Resistência: 2405/2418

JUSTIFICATIVA:
1. Confluência de tendência nos timeframes maiores.
2. Preço acima das médias principais.
3. Risco de falso rompimento se perder o suporte curto.

ALERTAS:
- Não use a IA sozinha; combine com IA_VALIDA e sua regra de entrada.
"Confidence" is not the chance of the move — they are two different numbers. In the example above:
  • Confidence: 78% (IA_CONFIANCA) = the clarity and strength of the signal — how "clean" the setup is (confluence between timeframes, no conflicts, macro aligned). No the probability of price rising/falling, nor "78% certainty of being right".
  • Up: 72% | Down: 28% (IA_PROB_ALTA / IA_PROB_BAIXA, they add to 100%) = the probability/chance of the direction. This is where you read "what are the odds it goes up or down".
Internal rules: the AI only recommends BUY if Up ≥ 65% and SELL if Down ≥ 65%; otherwise, WAIT. Confidence is calibrated separately: BUY/SELL at 75-90% = strong confluence; 60-74% = a decent setup with caveats. On a WAIT, high confidence means "there is a clear reason to stay out" (e.g. an economic event within minutes) — and not uncertainty about direction. That is why mature filters use both: IA_CONFIANCA>=70 && IA_PROB_ALTA>=60.
Want to share your AI results? Post them in the Group →

Performance Center (Dashboard)

A Performance Center is your personal web dashboard: it receives on its own every trade the robot (or you) closes in MetaTrader and turns it into easy-to-read charts and figures. You type nothing — you just follow along and learn from your own results. It works on desktop and mobile. Every Dashboard feature has its own detailed section below (grouped in the side menu under “Performance Center”).

Who has access: the Performance Center is a feature of the paid plans, unlocked per account. Live account with an active licence → access granted: trades upload to the cloud on their own and the dashboard opens straight from the EA. Demo account → by default the dashboard stays in demonstration mode and the data not upload to the cloud; for the full dashboard on a demo there is Demo Plus (from R$50). There is no parameter in the robot that unlocks this — it is granted on your account, on our side, when you subscribe. After subscribing, the robot unlocks on its own within a few minutes; to check straight away, use the CHECK ACCESS button on the CENTER tab of the robot's panel (that is also where SEE PLANS and CONTACT SUPPORT).
How to open it: in MetaTrader, on the MQL Manager's INFO tab, click CENTER → OPEN CENTER. It opens already connected to your account (no login or password to type). On mobile, click COPY LINK and paste it in your browser. The access is saved on that device.
Privacy: the dashboard is identified by your account number plus an invisible code that the robot generates on its own. Anyone who only knows your account number not see your data.

Sharing and revoking access

You can share your dashboard (e.g. with a mentor) by sending the link the robot generates. Careful: the link is the key — whoever has it sees your data without a password, in read-only mode.

"🔓 Revoke shared access" button (on the dashboard's 📖 How to use tab): use it when you want to cut off access for someone you shared with — or if you suspect someone is getting in. When you click it, every old link stops working immediately (including the ones you already sent). Your own access carries on normally (it renews itself on this device), and the robot re-syncs the link within a few minutes. It is your security panic button .
How to navigate: the sections live in a menu on the top bar. Click the "☰ [current section] ▾" button and pick the tab — that way the dashboard keeps more vertical space for the charts. The current section's name always shows on the button.

The tabs, one by one (what they are + how to use them)

TabWhat it shows and how to use it
OverviewThe summary of everything: how much you won/lost, the MQL PRO Index (a 0-to-100 score for the system's health), automatic notices (Insights), the equity curve (with an optional comparison against CDI/Ibovespa) and the main figures (KPIs) with arrows ▲/▼ comparing them to the previous period. Use it for the daily X-ray: always start here.
📅 CalendarA map of the month with green days (profit) and red ones (loss); today is highlighted . Click any day to see that day's trades. Great for spotting patterns (e.g. bad Mondays, good Fridays).
📊 AnalyticsWhere you win (or lose) most: by weekday, time, asset, by setup/strategy (Playbook) and even by the emotion you noted. It includes what you "left on the table" (MFE) and risk control (MAE). Use it to cut what hurts you and repeat what works.
🎯 ProfilesIt separates on its own your trades into Scalp, Day, Swing and Position (by how long they stayed open) and shows which style you are best at — and which one is hurting you. It includes a risk/target plan per profile calculated on your real balance. Use it to discover your most profitable "type" of trade.
🏆 StrategiesThe arsenal of ready-made MQL PRO TRADER setups (cards with rules and examples). Use it to study and pick strategies to apply in the robot. Some content is exclusive to the paid plans.
⚖️ RiskA calculator for how much to risk per trade, the Kelly criterion (calculated from your history) and your loss limits (the discipline that protects the account). Use it before trading to size your lot/risk.
🧺 PortfolioBuild and follow your portfolio: concentration by asset/class, the weight of each position and the risk of the whole. Use it so you do not get too concentrated in a single asset.
🗓️ MonthlyResult month by month and a tax estimate (B3). Use it to follow your long-term progress and plan ahead.
📋 TradesYour trade journal . Click any row to see the details (entry, exit, how far it went for and against you) and to note the strategy and the emotion. Filter by Wins/Losses and search by asset. This is where the "Start over from scratch".
💹 Trading DeskCommand the robot from the cloud: buy/sell, pending orders, close (all/partial/by criterion), adjust SL/TP, choose the assets (Targets) and receive your robot's AI analyses in the bell and on Telegram. Protected by a password; every order asks for confirmation. (Details in the Trading Desk.)
🤖 AI CoachAn artificial intelligence chat that sees only YOUR dashboard data and teaches/analyses: performance, setups, portfolio, news and questions about the EA. Use it to ask "how am I doing?", "what should I improve?" or "what does drawdown mean?". (Details in the AI Coach.)
📓 NotebookYour study notebook and journal, saved in the cloud (it syncs phone and PC). Write theses, plans and reviews, paste chart screenshots, use ready-made templates and organise with #tags. The The AI Coach can read your notes. (Details in the Notebook.)
🤝 AffiliatesPromote MQL PRO TRADER and earn a recurring commission (via PIX). This button opens your Affiliate Portal — its own page with your link/code, the full funnel (clicks → contacts → downloads → paid), ranking, materials and profile. You can be an affiliate even without using the robot, by signing up at mqlprotrader.com.br/afiliados. (Details in the Affiliate Programme.)
🔁 Copy TradeA signal: supply your own signals (with a CPY- code and PIX tip going straight to you) or copy a provider from the directory (with lot mode and risk locks). It has chat and ⭐ ratings. (Details in the Copy Trade.)
🏦 Home BrokerFollow all of your investments in one place — including outside MetaTrader (shares, crypto, dollars): register the asset, the quantity and the average price and see the live profit/loss, chart and analysis in your currency — including 🏦 TOTAL Equity (MT5 account + manual portfolio added together). Got many assets? Import the whole portfolio via 📥 CSV (a template is provided). (Details in the Home Broker.)
🔔 NotificationsReceive alerts on Telegram (open/close, target/limit, robot offline…). Set the bot up once and choose what you want to receive. (Details in the Notifications.)
⭐ RateGive your star rating and a comment about MQL PRO TRADER. (Details in the Rate.)
🎫 My PlanSee your plan and its expiry. On the 2 or 3 accountplans, the account that paid becomes the seat owner and can attach the other MT5 accounts by number — the attached account inherits the licence and unlocks itself within minutes. You can release one and attach another. This is also where you download the robot (.ex5) to install on the other accounts.
🆘 SupportTalk to the team without leaving the dashboard: open a ticket by subject (installation, licence, billing, bug…), attach screenshots and files and follow the reply right there (with an unread badge). The team can also start a conversation with you.
🧠 ChecklistA daily list to keep you disciplined, from pre-market to the close. Use it every day before trading.
📖 How to useThis guide, inside the dashboard itself (abridged). The full version is this page.

Understanding the numbers (in plain language)

TermWhat it means
Net ResultHow much you won or lost in total, costs included.
Win RateOut of every 100 trades, how many were profitable.
Profit FactorHow much you win for every R$1 you lose. Above 1 = profitable.
Expectancy (R)How much you win on average per trade, compared to the risk you took. Positive is good.
DrawdownThe largest fall in capital from a peak. The smaller, the better.
MAE / MFEHow far the trade went against you (MAE) and in your favour (MFE) before closing. It shows whether you exited too early or held well.
MQL PRO IndexA score from 0 to 100 that combines profitability, consistency and discipline into a single number.
Want to understand every number in depth, with examples? See the Dashboard Glossary — it explains every term for people who do not come from the markets. And you can always ask the AI Coach inside the dashboard.

Dashboard features

  • Language: switch between PT / EN / ES in the top-right corner.
  • Theme: light or dark (🌙 / ☀️ button).
  • Period: filter by Today, 7 days, month, and so on.
  • Currency: values appear in your account's currency automatically.
  • Hide/show the bar: the blue button in the top-right corner hides the top bar and gives the whole screen to the content — click it again to bring it back.
  • 🔗 Which account you are on: the connected account is always at the top of the screen — broker · number · DEMO/LIVE · name. On mobile, where it does not all fit, you get the short version with what matters: the account number and DEMO/LIVE. Check that badge before sending any order — it is what separates trading the simulator from trading your own money.
  • 🔀 Switching account: have more than one MT5 account? The 🔀 button on the bar keeps a address book of logins in this browser (with nicknames) and switches account instantly, without MetaTrader being open — you can ➕ add one by pasting another account's link. With two or more accounts saved, the selector itself spells out the current account.
  • 👁 Privacy mode: recording a video or sending a screenshot? The 👁 button blurs the balance, equity, margin and account number — the charts stay visible.
  • On mobile: the controls (period, currency, language, theme, font…) are gathered in the ⚙ Options, next to the ☰menu; the brand is centred at the top.

Starting over from scratch

Changed the way you trade and want to reset the statistics? On the Tradestab, use the "Start over from scratch"button. The metrics start counting from that moment on — nothing is deleted and you can undo it whenever you like.

The restart is purely visual (a "zero mark"). Your full history stays safely stored; it just stops appearing in the figures until you undo it.
Stuck on something? Talk to Support or join the Community — we will help you.

Performance Center parameters (in the robot)

In MetaTrader, when you configure the robot, there is a group of parameters called “──────── PERFORMANCE CENTER ────────”. They already come with the ideal factory setting — you do not need to change anything for the dashboard to work. They are here only for those who want to understand or fine-tune a detail.

ParameterWhat it doesDefault
☁️ Send to the Performance Center (cloud)Turns on the upload of your trades to the web dashboard. Only turn it off if you want to use the robot without the online dashboard.On
🎛️ Accept commands from the DashboardLets the Trading Desk command the robot from the cloud. If you turn it off, the Desk stops working.On
☑️ Write a local journal (CSV backup)Saves a backup copy of the trades to a file .csv on your computer (as well as the cloud).On
📄 CSV file nameThe name of that backup file. Change it only if you want to.MQLProTrader_CentralPerformance.csv
📂 Save in MT5's COMMON folderKeeps the CSV in the folder shared between MT5 terminals, instead of the current terminal's folder.Off
⏱️ Account snapshot interval (sec)How often the robot sends an account summary to the dashboard.90
📜 Days of history on initial loadHow many days of past trades the robot sends when it first connects (it sets the range of the dashboard's date picker). 0 = sends no history.365
🛡️ Safety net — frequency (sec)How often the robot checks whether a trade failed to upload and resends it.60
🛡️ Safety net — days reviewedHow many days back that check reviews.3
🤝 A friend's referral codeIf a friend referred you, paste their code here (e.g. MQL-XYZ123) — only the first time. You can also paste it later on the CENTER sub-tab of the robot's panel. See Affiliate Programme.empty
The the system's internal addresses (the server and the dashboard page) are fixed and therefore do not appear in the parameters — they are part of how the product works, not something for you to configure. Do not confuse them with the 3 URLs you allow in MetaTrader (under Setting up MT5): that is MT5's own permission for the robot to reach the internet, not a robot parameter.

📚 Every Dashboard feature, in detail

Below, every Performance Center tab/feature has its full explanation. It is all part of this same section — just scroll (or use the side-menu shortcuts).

Your numbers: Overview, Analytics, Trades, Monthly and Calendar

These five tabs show the same truth from five angles. They all drink from the same source — the closed trades the robot sent — and they all respect the Period chosen on the top bar. If a figure looks wrong on a tab, check the Period before anything else: it is cause number 1.

📊 Overview — the diagnosis in 10 seconds

It is the opening screen. At the top sits the live account (balance, equity, floating profit, margin) and the positions open right now. Below, the coloured diagnostic band sums it all up in one sentence: 🟢 a system with a positive edge, 🟡 positive but below target, 🔴 negative expectancy.

NumberWhat it means in practice
Net resultThe sum of profit and loss with costs included (swap and commission). It is what reached your pocket.
Win rate% of winning trades. On its own it says nothing — a 90% win rate with an overall loss is common when the losses are big.
Profit factor (PF)How much you made divided by how much you lost. Below 1 = you are losing. Above 1.5 is already a healthy system.
PayoffAverage win ÷ average loss. It tells you whether your wins pay for your mistakes.
Expectancy (R)How much you expect to make per trade, measured in multiples of the risk. It is the most honest metric here.
DrawdownThe largest fall from a peak. It is the size of the pain your strategy has already put you through.
MQL PRO IndexA score from 0 to 100 combining win rate, PF, expectancy, recovery and consistency (SQN). It is there to compare you against you over time.
The ▲▼ arrows beside the figures compare against the previous period of the same length. They only appear when there is data on both sides — if they did not appear, there was nothing to compare against.

📊 Analytics — the charts

The equity curve, the distribution of results, performance by asset, by weekday and by hour. It is where you find the patterns the table hides: “I systematically lose money in the first hour” or “my entire result comes from a single asset”.

📋 Trades — trade by trade, and you can write on them

The full list for the period. Click any row and it opens the trade's detail — with the visual “map” in money (entry, stop, target, MAE/MFE) and the fields you fills in: setup, emotion, did you follow the rules? and a note.

Filling in the setup is what switches on the 🎯 Profiles tab and the /setup command of the AI Coach. Without it, the dashboard knows how much you made, but not with what.

🗓️ Monthly — the year in one table

One month per row: number of trades, win rate, result, best and worst trade. It is there to reveal seasonality and progress — and it carries an estimate of income tax at 20% of the month's profit (the day trading rate in Brazil).

The tax estimate is only a rough guide. It does not offset losses from previous months, does not separate day trading from swing, and does not account for exemptions, tax withheld at source or other brokers. Do not use it to file — talk to your accountant.

📅 Calendar — the month in colours

Each day painted green or red by its result. It is there to find what the average hides: a single catastrophic day in the middle of a “good” month, or that Friday when you always hand back the week's profit.

Discipline: Profiles, Risk and Checklist

Three tabs that do not look at the past — they help you not repeat the mistake the past revealed.

🎯 Profiles — which style REALLY makes you money

The dashboard sorts each trade into scalp, day trading, swing or position (by how long the trade stayed open) and builds a table per style: number of trades, win rate, expectancy, profit factor and result.

  • It points out your dominant profile — the one you trade most.
  • And the best and the worst by expectancy, counting only profiles with at least 3 trades — too small a sample would turn into bad advice.

It is the tab that answers the trader's most expensive question: “should I stop scalping?”.

⚖️ Risk — the calculator before the order

You enter your capital, risk per trade (%), stop in points and point value; it returns the lot that respects that risk. It is the arithmetic the amateur trader does “in their head” and gets wrong.

Beside it, the Kelly worked out from your own figures (the period's real win rate and payoff): the dashboard shows full Kelly and the half Kelly.

Full Kelly is too aggressive for real life. It assumes your win rate and your payoff will stay exactly the same — and they will not. Market practice is to use half or less. If your Kelly comes out negative, the message is blunt: with these numbers, the right size is not to trade until the strategy improves.

🧠 Checklist — the daily ritual

A discipline checklist in three moments, which resets itself every day:

  • ☀️ Pre-market — slept well, read the economic calendar, marked the levels, decided which setups to trade, set the day's maximum loss and checked whether you are emotionally neutral.
  • 📈 During the session — the setup was in the plan, you worked out the size before entering, stop set before before sending, you did not add to a position to “get it back” (revenge trade), you respected the maximum loss.
  • 🌙 After the session — you reviewed the trades, filled in setup/emotion/note, wrote down what you did well, which rule you broke, and whether the result came from the system or from luck.

It is kept in your browser, day by day. It does not go up to the cloud: it is a ritual of yours, not a report.

Strategies — Arsenal and Hall of Fame

The 🏆 Strategies is a library of strategies ready for the robot's engine: each card carries the idea, when it works, its weak point and the expressions already written in the format MQL PRO TRADER understands.

  • 📋 Copy on each card gives you the expression ready to paste into the robot's parameter. The button copies from the internal data, not from the text on screen — so what you paste is always exact, even if the browser has translated the page.
  • Hall of Fame brings together approaches from well-known traders, adapted to the expression engine.
  • You can filter by category and ask the 🤖 AI Coach to explain or adapt any of them to your asset.
It is educationalcontent. No card is a recommendation nor a promise of results — test it on a demo account, with your asset and your time of day, before anything else. What works on WIN on M5 can be disastrous on gold on M1.

Portfolio — a snapshot of what is open

The 🧺 Portfolio shows your trading account's current exposure: what is open right now, on which assets, which way, and what that really amounts to in money (the exposure, not just the number of lots).

Do not confuse it with the 🏦 Home Broker. A Portfolio is automatic and comes from your MetaTrader — they are the robot's/your positions, right now. The Home Broker is manual: you register shares, crypto and dollars that are outside MT5, so you can see your total equity in one place.

📈 The asset chart — and why it does NOT work like MetaTrader's

This is the point that confuses people coming from a trading platform the most, so it is worth reading slowly.

On a MetaTrader you pick a one timeframe (M5, H1, D1) and the platform scrolls the history. Here there are TWO independent controls:
  • Candle — 15m, 1h, 4h, D, S, M: what each candle represents (15 minutes, 1 hour, 4 hours, 1 day, 1 week, 1 month).
  • Period — 1D, 5D, 1M, 3M, 6M, 1Y, 5Y: how far back the chart goes.

The two combine. D + 3M = daily candles for the last 3 months (≈65 candles). M + 5Y = monthly candles for the last 5 years (60 candles). That is why the bar has two labels: Candle and Period. And just below the buttons the dashboard writes the combination in plain language — "Each candle = 1 month · showing the last year" — so you are never in doubt about what you are looking at.

Why some Period buttons are greyed out

For two reasons, depending on which side of the table you are on. On big candles, the combination would produce far too few candles to be a chart (a monthly + 1 month = a single candle). On small candles it is the opposite: the free source does not keep old intraday history — 15 minutes only exists for the last ~60 days, 1 hour for the last ~2 years. Asking outside those ranges would return an emptychart, and empty without explanation looks like a fault. That is why the dashboard greys the button out and adjusts the period on its own when you change the candle type:

CandleAvailable periodsWhy the rest is greyed out
15m 15 minutes1D · 5D · 1Mthe source only keeps ~60 days of 15-minute data
1h 1 hour5D · 1M · 3M · 6Mthe source only keeps ~2 years of 1-hour data
4h 4 hours5D · 1M · 3M · 6Mthe same range as the 1-hour candle (see below)
D daily1M · 3M · 6M · 1Y · 5Y—
S weekly3M · 6M · 1Y · 5Y1M would give ≈4 candles
M monthly6M · 1Y · 5Y1M would give 1 candle · 3M would give 3
The 4-hour candle is assembled here. The free source does not offer 4 hours (only 1 hour), so the dashboard groups the 1-hour candles in fours — and always within the same session. That matters: if the grouping crossed the night, the end of one day would be glued to the next one's open and out would come a false candle swallowing the overnight gap. When you choose 4h, the dashboard writes below the chart that it was "assembled from the 1-hour candles".
Why there is no 5-minute candle. It was actually built and then deliberately removed. The free quote arrives ~15 minutes late — on a 5-minute candle that is three candles of lag: the chart would be pretty and wrong, showing as "now" a move that is already over. On 15 minutes the delay is one candle, which is honest to display with a warning. Anyone who needs the price to the minute uses the MetaTrader, which receives your broker's feed in real time.

The other tools on the bar

  • MA — switches on the 20 and 50 period moving averages (trend).
  • log — a logarithmic scale, useful on an asset whose value has multiplied: it favours the percentage change over the difference in cash.
  • 🖼️ — downloads the chart as an image.
Your average price line. If the asset is in your portfolio, the chart draws a horizontal line at your average price — green if price is above it (profit) and red if it is below. Above the chart sit how much you hold, how much you invested, what it is worth today, the P/L and — when you are at a loss — how many % short of breaking even. The dotted lines mark the period's high and low .

The dashboard remembers your choices (candle, period, MA and log) for next time. And the quote comes from a free source, so it may be delayed — do not use it to decide an entry to the second.

Your account: My Plan, Affiliates and Support

🎫 My Plan

It shows your plan, the expiry date and the buttons to subscribe or renew. It is also where you download the robot (the .ex5) in its most recent version — whenever an update comes out, it appears here.

🤝 Affiliates

You get a code of your own (in the format MQL-XXXXXX) and a link to share. Anyone who subscribes through your referral generates recurring commission, paid by PIX. The tab tracks clicks, referrals and how much you have to receive.

🆘 Support

Talk to the team inside the dashboard itself: open a ticket by subject and follow the answer right there — with a history, without depending on e-mail. You can also attach a file .set when the question is about configuration.

  • 📖 Full manual — the shortcut at the top takes you straight to this documentation. Your answer is usually already here.
  • 📊 Send a performance report — it sends the team an automatic summary of your result (the last 30 days or last month), with you typing nothing. You can also save that report to your 📓 Notebook and follow your own progress.
  • The direct channels (WhatsApp, Telegram, e-mail) are still right beside it.

Dashboard glossary — every number explained

This section explains every term that appears in the Performance Center in the language of someone who is not from the market. Each term follows the same format: what it is in 1 sentence → why it matters → what is good or bad → an example with numbers. There is nothing to memorise: whenever you are unsure, come back here or ask the AI Coach inside the dashboard.

First of all, what is "R"? R is the a trade's risk — how much you decided you can lose if it goes wrong. Everything in professional trading is measured in "R": if you risk $100 per trade, then 1R = $100. Making $300 on a trade is "making 3R". Thinking in R (rather than in cash) lets you compare trades of different sizes fairly.

📈 Result and profitability

Net Result — In 1 sentence: how much you made or lost in total, with costs (brokerage, fees) already deducted. · Why it matters: it is the figure that does (or does not) reach your pocket. · Good/bad: positive is good; negative means the whole set is at a loss. · Example: 40 trades adding up to +$1,200 with costs included → Net Result = $1,200.

Win Rate (Win Rate) — In 1 sentence: out of every 100 trades, how many made a profit. · Why it matters: it shows how often you "get it right". · Good/bad: there is no magic number — a low rate can be excellent if the wins are big (see Payoff). · Example: 55 wins in 100 trades → Win Rate = 55%.

Profit Factor (profit factor) — In 1 sentence: how much you make for every $1 you lose. · Why it matters: it sums up in one number whether the system "pays its way". · Good/bad: above 1 is profitable; above 1,5 is good; below 1 it is losing. · Example: made $3,000 and lost $2,000 in total → Profit Factor = 1.5.

Payoff (win/loss ratio) — In 1 sentence: the size of your average win compared with your average loss. · Why it matters: it tells you whether your wins make up for your mistakes. · Good/bad: above 1 = you make more when you are right than you lose when you are wrong. · Example: an average win of $200 and an average loss of $100 → Payoff = 2.0.

Expectancy (R) — In 1 sentence: how much you make on average per trade, measured in R (risk). · Why it matters: it is the system's "edge" — the profit expected per trade over the long run. · Good/bad: positive is good; negative means that, repeated often enough, you tend to lose. · Example: An Expectancy of +0.3R with $100 of risk → you make, on average, $30 per trade.

🛡️ Risk and drawdown

Drawdown (drawdown / Max DD) — In 1 sentence: the largest fall in your capital from a peak. · Why it matters: it measures the maximum "pain" you went through and the risk of blowing the account. · Good/bad: how much smaller, the better (below ~10% is usually healthy). · Example: capital rose to $10,000 and fell to $8,500 → a drawdown of $1,500 (15%).

Recovery (recovery factor) — In 1 sentence: how much profit you made for each unit of your largest fall. · Why it matters: it shows whether the return makes up for the jolt of the drawdown. · Good/bad: above 1 is good; the higher it is, the more "efficient" the gain against the risk. · Example: a $3,000 profit and a $1,500 largest fall → Recovery = 2.0.

Kelly (the Kelly criterion) — In 1 sentence: a formula that suggests what fraction of your capital to risk in order to grow fast without going bust, worked out from your own history. · Why it matters: it helps you risk neither too little nor too much. · Good/bad: in practice most people use half or a quarter of Kelly (safer). · Example: a Kelly of 8% suggests risking up to 8% — the conservative reading would be 2% to 4%.

Streak (streak) — In 1 sentence: the longest run of wins or losses in a row. · Why it matters: it prepares you psychologically — losses in a row are normal. · Good/bad: it is neither good nor bad on its own; it is there so you neither panic nor get carried away. · Example: "longest losing streak: 6" means there have already been 6 losing trades in a row.

🎯 Quality and execution

SQN (System Quality Number, from Van Tharp) — In 1 sentence: a grade for your system's quality , combining expectancy with consistency (how much the results vary). · Why it matters: a system can be profitable yet unstable; SQN captures that. · Good/bad: below 1 = weak; 1.6–2 = good; above 2 = very good; above 3 = excellent. · Example: an SQN of 2.3 indicates a consistent system with a good edge.

MAE (maximum adverse excursion) — In 1 sentence: how far the trade moved against you you before it closed. · Why it matters: it reveals whether your stop is well placed and how much "squeeze" each trade puts you through. · Good/bad: a small MAE on winning trades = good entries; a large MAE right before it turns = poorly controlled risk. · Example: the trade went as far as -$80 and closed at +$150 → MAE = $80.

MFE (maximum favourable excursion / "left on the table") — In 1 sentence: how far the trade moved in your favour before you got out. · Why it matters: it shows whether you are getting out too early and leaving profit on the table. · Good/bad: if the MFE is usually much bigger than the result, you may be able to hold on longer. · Example: the trade went as far as +$300 but you got out at +$120 → MFE = $300 (you left $180 on the table).

🧭 Profiles (trading styles)

The dashboard sorts on its own each trade into a style, by the time it stayed open:

ProfileTime open (approx.)In 1 sentence
Scalpseconds to a few minutesvery fast trades, small profits and lots of them.
Day Trademinutes to hours (closed the same day)opened and closed in the same session, never held overnight.
Swingdays to weeksthe position is held for some days chasing bigger moves.
Positionweeks to monthslong trades, focused on broad trends.

What it is for: finding out which style actually makes you money — and which one is getting in your way — so you can focus on what works.

📊 Comparisons and equity

Benchmark (CDI / Ibovespa) — In 1 sentence: a "ruler" for comparing your result against fixed income (CDI) and against the stock market (Ibovespa). · Why it matters: making money is good, but making more than leaving it in the bank is the goal. · Good/bad: your curve above the CDI/Ibovespa = you are beating the benchmark. · Example: you made +12% and the CDI over the period was +5% → you beat the CDI.

Equity / Deposits and Withdrawals — In 1 sentence: how your money evolved, separating what is trading profit from what is a deposit/withdrawal you made. · Why it matters: it stops you mistaking "I deposited more" for "I traded better". · Good/bad: what counts for performance is the growth without the deposits. · Example: the account rose by $5,000, but $3,000 of that was a deposit → the trading profit was $2,000.

Estimated tax (B3) — In 1 sentence: an estimate of the tax on your results on the Brazilian exchange. · Why it matters: it helps you plan ahead and not be caught by surprise. · Good/bad: it is only a guide — the official calculation has to be done with your accountant. · Example: day trading on B3 is usually taxed at 20% of the month's net profit.

⭐ Score and dashboard notices

MQL PRO Index — In 1 sentence: a score from 0 to 100 that brings profitability + consistency + discipline together in a single number. · Why it matters: it gives a quick "thermometer" of your system's health without having to look at 10 metrics. · Good/bad: the higher the healthier; low values call for a review of stops, setups and discipline. · Example: An Index of 78/100 = a healthy system, with points to refine.

Insights — In 1 sentence: automatic messages the dashboard generates by reading your history. · Why it matters: they point out patterns you might not spot on your own. · Example: "Your Fridays show a recurring loss — consider reducing your exposure on that day."

KPIs and the ▲/▼ arrows — In 1 sentence: a KPI is a "key figure"; the arrows compare the current period with the previous period of the same length. · Good/bad: a green ▲ = it improved; a red ▼ = it got worse. · Example: a Result with ▲ $300 = you made $300 more than in the previous period.

Starting over from scratch (zero mark) — In 1 sentence: a button that makes the metrics start counting from now on, without deleting anything. · Why it matters: useful when you change strategy and want to measure only the "new you". · Good/bad: it is purely visual and reversible — you can undo it whenever you like. · Example: switched from scalp to swing? Set the zero mark and follow the new phase with a clean slate.

Still unsure about a term? Ask the 🤖 AI Coach on the dashboard ("what does SQN mean?") or talk to Support.

AI Coach (Dashboard assistant)

The AI Coach is a artificial intelligence chat inside the Performance Center (the 🤖 AI Coachtab). It is an expert in financial markets and in the EA itself that sees only your own data from this dashboard and speaks your language (PT/EN/ES), in plain terms — made for people who are not fluent in market jargon.

🧪 Before switching an expression on, test it in the chat: the testar_expressao command validates how your rule is written and shows the current value of every variable it uses — you see straight away whether it makes sense, without risking an order. And if you prefer, ask the Coach itself to create, review or fix the expression with you: it knows the robot's whole manual. In practice, the system teaches you how to use it.

What it does

  • Analyses your performance — strengths, what to improve, where you lose money (time of day, weekday, emotion).
  • Explains any number on the dashboard in plain language ("what is drawdown?", "is my SQN good?").
  • Comments on your setups and your portfolio — concentration, risk, what to watch.
  • Brings news and market context (web search) and relates it to your open portfolio.
  • Answers questions about the EA (inputs, panel, installation, features) using this manual; if it cannot find the answer here, it says so and sends you to support.
  • 🧩 It builds a .set for you — describe your strategy in conversation (asset, entry, exit, SL/TP, risk) and the Coach runs a guided interview and produces the ready-made configuration file. You can validate each rule on your own robot (the real engine, without risking an order) and download the .set. It only uses the manual's syntax and the Arsenal's strategies — it does not invent features.
  • It answers in the dashboard's language by default — and in another language if you ask ("answer in English").

What it does NOT do

  • It does not give buy or sell orders. It is educational, never investment advice.
  • It does not answer off-topic questions (markets/trading/EA) — it declines politely and steers you back.
  • It does not make up your figures — it uses the real data from your dashboard.

How to use it

  1. Open the 🤖 AI Coachtab. The first time, set up your Gemini key (free at aistudio.google.com/apikey) and create an unlock password.
  2. Type your question or use one of the shortcuts (Analyse performance, My best/worst setup, Today's news, Question about MQL…). The answer appears as the AI writes it.
  3. Use the 📋 copy button to keep an answer. If you see "server busy" (error 503), it is temporary — just resend or switch model (see below).
Choosing the model (and what to do on "server busy"): in the chat footer there is a selector with 🧠 with Fast 3.5, Stable 2.5 and Light 2.5 Lite (free) and Deep 3.1 Pro (paid). If the chosen model is overloaded (503), the Coach tries the other free models on its own before telling you — and when it does, it suggests switching model. The Pro is only used if you pick it (it requires a paid key). To change the Gemini key, use the 🔑 Change key link next to the selector (it reopens the "Configure AI" screen).
Free vs paid: the Coach's key can be the same one as the EA's. To use it free of charge, generate a key in a project with no billing and choose a Flash model (Fast 3.5 / Stable 2.5) in the selector — the Pro only works with a paid key. The step-by-step for creating the free key (same e-mail, new project without billing) is in the EA's AI section of this manual.
Privacy and security: your Gemini key is encrypted and stays only on your device — it never reaches our servers. The conversation history is also stored encrypted (with your password) and only comes back after you unlock it. When you reload the page you do not have to type the password again — the key stays unlocked for the browser session and disappears when you close the browser; on top of that, the Coach locks itself after about 30 min of inactivity. The AI costs are on your Gemini account (the default model is free).

🔐 Protecting your key — what to do on your side

The encryption above protects the key stored on this device. The rest depends on precautions in your Google account — and they are simple:

PrecautionWhy
Do not add a card if you only want the CoachThe Google's free tier is enough. Without a card, Google simply stops when the free quota runs out — which is the safe behaviour. With a card, usage above the limit becomes a bill for you.
If you do add a card, set a spending capOn a Google Cloud → Billing → Budgets & alerts, create a budget with an alert (e.g. R$ 20). It is your safety net against a nasty bill.
Never send your key to anyoneNot in a screenshot, a spreadsheet, a WhatsApp group or a website. Our support will never ask for your key — if someone asks while pretending to be us, it is a scam.
Beware of browser extensionsA malicious extension sees what the page sees, including after you unlock it. Use the dashboard in a clean browser, with no unknown extensions — no password replaces that.
Suspicious? Revoke the keyAt aistudio.google.com/apikey you can delete the key and create another at any time. The old one dies instantly and nothing can use it any more.
A the unlock password cannot be recoveredIt never leaves your device (we have no way of knowing what it is). If you forget it, just register the key again with a new password.
Being honest about the limit of this protection: the password protects the key at rest (against someone who gets hold of your computer, for example). But while the session is unlocked, the key sits in the browser's memory — and a malicious program or an extension with permission in that browser could read it. That is true of any application that uses an API key in the browser; the defence that actually works is keeping the browser clean and the key without a card attached.
Mirror of the EA: the market analyses the AI performs directly in the robot (MetaTrader) also land in the Coach's chat automatically — so you can ask "explain this analysis" or "is this analysis any good?" and carry the conversation on in the dashboard.

💬 Quick Coach commands

Besides chatting, the Coach understands quick commands — speak in plain language (e.g. "show me SuperTrend's buffers", "estimate my tax", "how is the robot's config?") or use the slash (/comando) and the chips below the chat. When the command talks to the robot in MT5, the answer comes with real data and the AI also interprets and analyses it for you.

CommandWhat it doesSource
buffers do [indicador]Discovers the buffers and parameters of a custom indicator in your MT5🤖 robot
/leitura [ativo]Technical reading live from the robot + professional analysis from the AI (trend, zones, bias, what to do)🤖 robot + AI
/variaveisLive values of the expression variables (BID, VWAP, ATR…)🤖 robot
/testar [expressão]Validates an expression in the robot's engine and shows the current values🤖 robot
🧩 Montar um .setA guided interview that builds a complete .set file of your strategy — with Validate on my robot (the real engine) and Download .set🤖 robot + AI
/margemUsed/free margin and level + margin per lot, live🤖 robot
/radarScans your assets (A1/A2/A3 + open positions): price, day % and spread🤖 robot
/configReads the robot's settings (on/off, direction, SL/TP/BE/TS, multi-asset…)🤖 robot
/custosAdds up commission + swap on your trades for the period📊 your trades
/darfTax estimate (day trade 20% · swing 15%) per month — educational, confirm it with an accountant📊 your trades
/riscoHow much to risk per trade (0.5% / 1% / 2% of equity) + the sizing formula📊 account
/setup · /perfilA ranking of your setups and performance by style (scalp/day/swing/position)📊 your trades
/alerta [ativo] [preço]Creates a price alert — it tells you on Telegram when it is hit (/alertas lists them)☁️ server
/macro · /calendario · /correlacao · /replay · /diarioMacro overview, economic calendar, portfolio correlation, trade review and journal🌐 AI + web
Tip: the commands that talk to the robot (buffers, reading, variables, margin, radar, config) require the EA to be open in MT5, on the same account. If the answer comes back short, the Coach suggests switching to a better model in the 🧠 selector.

Trading Desk (Dashboard)

A Trading Desk field ( 💹 Trading Desk of the Center) lets you command your robot remotely from the browser — over the same channel as the Center (it does not slow the EA down). It is protected by a password that is yours alone (encrypted on the device, like the AI Coach's) and every order asks for confirmation. For the robot to accept commands from the dashboard, keep 🎛️ Accept commands from the Dashboard on in the robot's parameters.

The 4 parts

  • ⚡ Ticket — buy/sell at market, a pending order (buy/sell stop/limit) or on the candle (high/low). It has volume chips and fields for SL/TP, plus Close the symbol's buys/sells.
  • 🎯 A1/A2/A3 targets — choose which assets to trade. Type the symbol into A2/A3 and activate it in one click (the robot loads it there and then, with no restart). It applies to the Trading Desk and for auto-trading. The Buy/Sell on targets trade all active symbols at once, with the same lot on each one and the SL/TP in points of each symbol (the same ruler as SetSL[] in expressions).
  • 📋 Positions — close everything, partially (the ✂️ 25% · 50% · 75% buttons on each position, or a volume you type in) or by criterion (winners only, losers only, by volume or by %). Adjust the SL/TP or move to break even per position. It also lists the pending orders (cancel one or all of them).
  • 🤖 AI analyses — your robot analyses and the alert reaches you (below).

🤖 More than one chart with the robot on the same account

Each chart with the robot is a separate robot: it has its own ROBOT button (running or paused) and its own Targets A1/A2/A3. The Desk shows the account's robots and the state of each one at the top. With more than one, ⏸ Pause and ▶ Resume ask which robot — or all at once —, and the 🎯 Targets tab has a selector to choose which robot the targets you are viewing and changing belong to. 🔌 Connection tests each robot separately.

📟 Robot replies

Every reply of the robot to the buttons (Connection, Status, orders, targets…) stays in the 📟 Robot replies, below the Desk, until you clear it: what was asked, at what time, how long it took, which robot answered and the reply in plain language. When the broker rejects, the box says why — margin, market closed, stop too close to the price.

✂️ Taking partial profit — close 25% · 50% · 75% of the position

On each open position there are ✂️ 25%, ✂️ 50% and ✂️ 75%buttons: one click closes that slice of the volume and leaves the rest running, with the same SL and TP. It is the way to take profit at the first target without giving up the bigger move. Anyone wanting a specific amount still has the Closebutton, which asks for the volume.

It works on hedge and on netting accounts — the mode of B3 brokers. If the slice would leave a remainder smaller than the minimum lot of the symbol, the order is not sent and the reply explains why.

This is different from 🛡 Protect. Both work with 25/50/75%, and it is easy to mix them up:
• 🛡 Protect moves the stop to lock in part of the profit — the position stays whole.
• ✂️ 25/50/75% closes part of the volume — the money from that slice is banked now.
Why sometimes fewer buttons appear — or none at all: the dashboard only offers what your broker accepts. The lot is adjusted to the asset's step (half of 0.03 would be 0.015, which would be refused), a slice smaller than the minimum lot does not become a button — on a 0.01 position no partial appears at all —, and fractions that land on the same lot appear only once.
The same buttons exist on the phone: see Trading through Telegram.

🛡 Protect: the right price on any symbol

When you use 🛡 Protect (break even or lock part of the profit), each option already shows the price on the symbol's price step — WIN moves in steps of 5 points, WDO in steps of 0.5 — and only appears if it respects the minimum distance the broker requires from the current price. It is the same rounding the robot does before sending: the price you confirm is the price that goes. And if the market moved since the screen last refreshed, the robot checks again and warns you instead of sending a stop the broker would reject.

🤖 AI analyses that arrive on their own

There used to be a Pilot here that opened orders on its own. It was removed: to work it required the browser tab to be open, and in the end it fired real orders based on a model's judgement — high risk for little use. What took its place is more useful day to day and works with the browser closed:

  1. Your robot analyses on its own, at whatever time you set. In the robot's parameters there are the fields ⏰ Auto-analyse A1 / A2 / A3 every N sec (0 = buttons only). Put a value in and the robot runs that asset's deep analysis by itself, with your Gemini key.
  2. The analysis becomes an ALERT. It shows up in the dashboard's 🔔 bell and on Telegram — you do not need to open the dashboard to get it. Just keep the 🤖 AI analyses (from your robot) box ticked on the 🔔 Notifications tab.
  3. And it is kept so you can talk about it. The same analysis goes into the chat on the 🤖 AI Coach tab, so you can ask “what did you make of that?” and discuss it with the AI afterwards.
⚠️ What this needs — said plainly
  • Your MT5 has to be open with the robot on the chart. The one doing the analysis is the robot, with data from Your own MetaTrader (indicators, structure, multi-timeframe and, if you allow it, a screenshot of the chart). MT5 closed = no new analysis. Anyone running MT5 on a VPS has this 24 hours a day.
  • Mind the cadence and your quota. The field is in seconds. The AI's web search has a free monthly limit, and one analysis every 5 minutes on 3 assets blows through your quota. Recommended: 30 minutes or more (1800 sec), or a few times a day.
  • There is an alert ceiling: at most 1 alert per asset every 15 minutes, so Telegram does not turn into spam even if you set a short cadence.
  • There are two different Gemini keys: the robot's (which does the analysis) and the browser's (the Coach's chat). Separate places and separate quotas.
  • With everything switched off, what still arrives are the alerts that do not depend on AI: protections, trades, system, robot offline and the summary at the market's close — the server sends those by reading your history, even with MT5 closed.

🔒 The Desk password

The Trading Desk is protected by a password that is yours alone, separate from everything else. It is validated on the server (not in the browser), and unlocking it produces a temporary pass of about 2 hours — after that the dashboard asks again. Getting the password wrong several times in a row blocks further attempts for a few minutes.

The reason for the design: whoever opens the dashboard on your phone sees your figures, but cannot send an order without that password. The read-only tabs (Summary, Coach, Analyses) stay open — the lock applies only to what touches money.

How a command leaves here and reaches the robot

  1. You click on the dashboard → the command joins a queue on the server.
  2. The robot pulls the queue along with the upload it already makes to the Center — without opening a new connection and without slowing MetaTrader down.
  3. The robot executes it and sends the result back, which appears on the dashboard.

That is why the command takes a few seconds to act — and why it only works with MetaTrader open and the robot on the chart. If the robot is closed, the command waits in the queue; if it grows too stale, it is discarded rather than executed late (an order from 10 minutes ago is no longer any use).

Safety: the Trading Desk executes real orders in your account. It is protected by a password that is yours alone, every order asks for confirmation, and with the robot offline the order is refused instead of being held back to execute later at a price that is no longer the one you saw. It is educationalcontent, not investment advice.

Notebook (Studies & Journal)

The Notebook field ( 📓 Notebook) is your space for notes, studies, theses and a journal inside the Performance Center. Unlike the per-trade note, here you write freely — and everything is saved in the cloud, synced between phone and PC.

What you can do

  • Write in markdown — headings, bold, lists; with a preview (the 👁️ View button).
  • Paste a screenshot of the chart — copy the image and paste it with Ctrl+V inside the note (it is compressed and stored with it). You can also attach one with the 🖼️ button.
  • Ready-made templates (the + Template button): Market thesis, Pre-trade plan, Post-trade review, Strategy backtest, Day journal.
  • Organise with #tags (e.g. #XAUUSD, #breakout) and search across every note.
  • Make it stick (⭐) the important notes at the top and export as Markdown or PDF.
  • It saves itself as you write (autosave to the cloud).
  • Keep your Performance Report — on the 🆘 Supporttab, the 📓 Save to the Notebook button records the summary of your result (the last 30 days or last month) as a note, so you can compare your progress month by month.
The AI Coach reads your notes: when you chat on the AI Coach, it uses the relevant notes (the pinned ones and the ones matching your question's asset/tags) and cross-checks them against your real performance. In the editor, the 🤖 Ask the Coach button sends the note to the chat; in the Coach's answers, the button 📓 turns the answer into a note; and the "Summarise the week" shortcut has the Coach write a journal entry you save with 1 click.
Cloud and privacy: the notes live in the same protected place as your trades (isolated per account and released only through your access link) — which is why they show up on the phone and on the PC. As in the EA, the AI's costs are on your own Gemini account.

Affiliate Programme (Refer & Earn)

Every MQL PRO TRADER user can refer friends and earn commission — a % of the amount the referred person pays. It all happens on the 🤝 Affiliates tab of the dashboard.

1. Join the programme (quick sign-up)

The 🤝 Affiliates of the dashboard opens your Affiliate Portal — a page of your own, already connected to your account. The first time, fill in a short registration: name, WhatsApp and PIX key (required) and e-mail (optional) — PIX is how our team pays you.

Not a robot user? You can still be an affiliate. Anyone can register straight at mqlprotrader.com.br/afiliados (with an e-mail and password) and earn by referring — with nothing to install. The portal shows your full funnel (link clicks → contacts → downloads → referrals on demo → paid), a 30-day chart, ranking of affiliates and promotional material (QR code, logo).

2. Get and share your link/code

The dashboard shows your code (something like MQL-XYZ123) and the your link (mqlprotrader.com.br/?ref=SEU-CODIGO), with buttons to copy and to share on WhatsApp/Telegram.

3. Your friend uses your code in the robot

Your friend installs the robot and, on the EA's panel (bottom panel → the INFO tab → the CENTER), sub-tab), pastes your code in the “Got a referral code? Paste it and click OK” and clicks OK. That is it — they become your referral, even if they spend weeks testing on a demo account.

4. Track it and get paid

On the dashboard you can see how many referrals you have, how many are on demo, how many are already paid, how much you have to receive (current cycle) and how much you have already received (total) — plus a table of how much you earn per plan. You earn commission on the 1st activation AND on every renewal by the referral (renewals usually carry a smaller percentage than the 1st). Payments are made once a month via PIX by our team: when the month closes, your “to receive” resets and starts building up again the following month.

Monthly payment: the commissions approved in the month are paid together, once a month, via PIX. Each renewal by your referrals generates a new commission — whoever does not renew, generates none. Keep your name, WhatsApp and PIX key correctly registered so you are paid without delay.

5. The levels — the Mentor Programme

Your rate goes up with your active portfolio — how many of your referrals keep using the robot with their licence up to date — not with how many you sold. There are 3 levels:

LevelTo get there1st activationEach renewal
🥉 Afiliado (Affiliate)where everyone starts15%10%
🥈 Mentor Prata (Silver Mentor)15 active referrals and retention of 70% or more20%15%
🥇 Mentor Ouro (Gold Mentor)40 active referrals and retention of 80% or more25%20%
  • Active referral: has a paid plan, is not blocked and their robot showed up in the last 14 days.
  • Retention: of your referrals with their licence up to date, the percentage that is active. Anyone who cancelled does not count against you.
  • Each level asks for both numbers: a number of active referrals and a minimum retention.
  • It counts at the moment of each commission: the % of each payment is the one of your level at that moment. If referrals stop using it, the level — and the rate — can drop; when they come back, it goes up again.
  • Some plans have their own rate, always visible on your dashboard (the table of how much you earn per plan).
  • Do you use the robot? You can receive the commission as credit on your subscription, worth 30% more than the PIX payment.
  • Each level has its own privileges. Your Affiliate Portal shows your level, the active portfolio, the retention, how far you are from the next level and what you gain by moving up.

Example of one referral on the Monthly plan (R$ 149.99), at level 🥉: R$ 22.50 on activation and R$ 15.00 on each renewal. The amounts depend on how many people activate a plan through your referral — there is no promise of earnings.

Demo-proof tracking: the link is recorded on the referral's account (not in a browser cookie), so it survives any amount of demo testing. It is first-touch: whoever referred first wins, and nobody “steals” a referral that is already registered.
Got a code from a friend? When you install the robot, open the bottom panel → the INFO tab → the CENTERtab, paste the code into the referral field and click OK. That way your friend gets the credit when you activate your plan. (Access to the robot still comes from the licence; the code is only for the referral.)
How to activate or renew your plan: on the dashboard, click 💳 Subscribe/Renew (top bar or the ⚙ Optionsmenu) — it opens the /pagarpage. Choose the plan and pay by PIX or card: the system recognises the payment on its own and releases access there and then (no receipt to send). The robot unlocks within ~5 minutes. If you prefer a human, support can also activate it manually.

Copy Trade — Signal Platform (Dashboard)

The 🔁 Copy Trade is a signal platform inside the Center: one and the same person can be a Provider (publishing their own signals for others to copy), a Copier (following one or more providers) or both at the same time. Everything is configured on the dashboard; the robot (EA) only executes.

This is real money being replicated. Copying signals involves risk. This is educationalcontent, not investment advice. For the robot to execute the copies, the copier has to switch on the physical safety opt-in in MetaTrader itself (the “Allow CLOUD COPY” input, which comes off by default) — always test on a demo.
Free signal · the provider is not answerable for your result.
  • MQL PRO TRADER's Copy Trade is free. Whoever publishes signals charges nothing to the copier and receives no commission, subscription or share of profit. The PIX tip is 100% voluntary, made afterwards and at the sole decision of whoever is copying — it is not a price, it is not a subscription and it creates no obligation whatsoever for either side.
  • The provider is not your adviser, manager or portfolio administrator. They trade their own account; you chose to mirror it. They cannot be held liable for losses, orders that were not copied, delays, execution failures at your broker, price difference (slippage), or for any result in your account.
  • You are the one who decides. Volume, assets, risk locks, when to pause and when to stop are your own settings, on your own dashboard. Nobody trades in your account unless you have switched on the safety lock in your own MetaTrader.
  • The platform does not intermediate, does not hold custody and does not guarantee anything: it merely carries the signal. Past results, yours or the provider's, do not guarantee future results.

By following a provider you declare that you have understood and accepted these conditions. If you do not agree, follow nobody — and use the robot with your own strategies only.

1. Be a PROVIDER (supply your signals)

  • Click 📡 Publish my signals. You get a unique CPY-XXXXXX code to share.
  • Display name (optional): how you appear in the directory (e.g. “John's Desk”).
  • Appear in the public directory: switches your shop window on/off so anyone can find you.
  • Approve copiers automatically: if it is on, whoever pastes your code starts copying straight away; if it is off, each request waits for your approval.
  • My copiers: the list of those following you — you can approve, decline, revoke and chat (💬).

2. PIX tip (optional) — goes DIRECTLY to the provider

The provider can publish a PIX key for tips and a message (e.g. “help me keep the signals coming”). Anyone who likes the signals clicks ☕ Say thanks with PIX, copies the key and sends a PIX of gratitude straight to the provider.

A tip is not payment for the signal. It is voluntary, made afterwards and by whoever wants to: it buys no priority, grants no right to support, creates no relationship and transfers no liability whatsoever to the provider over your result. Someone who never tips receives exactly the same signals.

The platform receives NOTHING and does NOT intermediate: copying is free and the tip is 100% voluntary, going straight to the provider's PIX key. There is no subscription, no gateway and no cut.

3. Be a COPIER (copy a provider)

  • Paste the provider's CPY- code and click Follow — or pick someone from the Directory.
  • Provider directory: each card shows REAL statistics verified by the server (return, win rate, drawdown/risk, number of followers, scalp/day/swing/position profile, markets) plus the star average. The ranking puts the best return on top.
  • How your lot is worked out (you choose per provider):
    • Proportional (equity): your lot follows the provider's, adjusted to your account's size — fair across accounts of different sizes.
    • Risk per trade %: the most professional one — each trade risks a % of your capital, worked out from the signal's stop.
    • Multiplier ×: the provider's lot times a factor (e.g. 0.5× or 2×).
    • Fixed lot: you always trade a fixed volume, ignoring the provider's.
  • Simulator: before you activate it, the dashboard shows “a 1.0 lot trade from the provider ≈ X lot(s) for you”.
  • You can pause, resume or stop copying whenever you like.

3.1. Choosing WHICH assets to copy

In the field “Copy only these assets (blank = all)” you type the codes separated by commas:

How to type it: EURUSD, WIN, XAUUSD
  • You do not need to get your broker's suffix right. EURUSD catches EURUSD.pro, EURUSDm, EURUSD.a; WIN catches WIN$N and WINZ25. The comparison is made on the start of the code.
  • Upper/lower case does not matter — eurusd works just the same.
  • You can separate them with a comma, semicolon or space.
  • A blank field = copy EVERY asset the provider trades.
  • ⚠️ Beware of the opposite: writing WIN not catches WDO. Each family has to be on the list.

3.2. Choosing WHICH events to copy

At “Which events to copy” you switch each type on/off separately: Openings, Closings, Partials and SL/TP. A real-life example: switch Openings off and leave the rest on — you enter on your own and use the provider only to exit.

3.3. Risk locks (all optional)

FieldWhat it does
Max lotA volume ceiling per copy, come what may.
Stop if it drops (%)The capital brake. It measures the drop from your highest balance since you started copying. When it is breached, copying PAUSES and you are told (bell + Telegram) — no position is closed. Come back with ▶️ Resume (the peak is recalculated from there).
Stop if balance <The same brake, but by a fixed amount: it pauses if the balance falls below the number you typed.
Max tradesHow many copies may be open at the same time. 0 = no limit.
Max deviation (pts)If price has already run further than this since the signal, the copy is refused (it stops you entering “late”). 0 = no limit.
Delay (s)It waits N seconds before copying an opening. The a closing is never delayed — delaying the exit would mean holding on to your loss.
Only copy signals WITH a stopIt ignores entries the provider sent with no stop loss.
Copy trades already openWhen switched on, it replicates what the provider already has open at that instant. Switched off, you only get the next signals.
Invert (reverse copy)A buy becomes a sell and vice versa.

3.4. 📜 Copy history — the first place to look

The 📜 Copy history (inside the link) shows every signal and what happened to it, with the reason in plain language. It is where you find out why something did not copy without having to open MetaTrader's journal:

What you seeMeans
✅ copiedThe order went into your account.
⚠️ lot below the minimumThe calculation came out below the asset's minimum lot. Raise the risk %, use Multiplier or Fixed lot.
⚠️ “Allow CLOUD COPY” switched off in the robotThe parameter still has to be switched on in the robot, on the Inputs.
⚠️ the asset does not exist at your brokerThe provider traded something your broker does not have (not even under an alias). Add it in the Market Watch.
⚠️ trade limit reachedIt hit your “Max trades”.
⚠️ price ran too farIt hit your “Max deviation”.
⌛ the robot was offlineThe signal grew stale waiting for your MT5 to open and was discarded (it does not enter late).
⏱️ waiting out the delayIt is queued because of your “Delay (s)”.

3.5. Separating what is COPY from what is YOURS

Once you copy somebody, the Center's figures start mixing two things: your performance and the provider's performance. The 📊 Summary tab shows the 🔁 Source of the result band to unmix them:

  • [All] · [Mine only] · [Copy only] — the filter applies to the whole dashboard: summary, KPIs, charts, calendar, MQL PRO Index and the performance report.
  • A side-by-side comparison — profit, number of trades, win rate and Profit Factor for each source. It is the answer to “is copying helping me or hurting me?”.
  • A 🔁 badge on every open position and every closed trade that came from a copy, with the provider's name.
  • On a Telegram (/hoje, /semana, /relatorio) one extra line comes out: 🔁 From copy: … · 👤 Yours: ….
Two honest rules, written down and not hidden:
  • Balance, equity and margin CANNOT be split. They belong to the whole account — there is no such thing as “the copy's balance”. Only the result of the trades can be separated.
  • A mixed position (a netting account, like B3's): if you already had a position on the asset and the copy added to it, that position belongs to both. It appears with the 🔁 mixed XX% badge and the result is apportioned by volume — the copied slice goes to the copy, the rest to you. On a hedge account (forex) this does not happen: each copy is a separate position.

The band only appears if the account has some copy result — someone who copies nobody sees none of this. And it opens on [All], so no figure you already knew changes value on its own.

4. Chat and rate

Provider and copier talk through the chat of the link (💬). Whoever copies can leave a star rating (⭐) and a comment — only someone who genuinely has a link with the provider can rate them (a verified rating, no fraud). The star average appears on the directory card and helps the next people choose.

Transparency: the statistics are calculated by the server from the real trades (they are not self-declared). The provider can reset the public history, but the card warns “🔄 restarted on DD/MM”. Past results do not guarantee future ones.

Home Broker — Universal Portfolio (Dashboard)

The 🏦 Home Broker brings ALL of your investments together in one place — including the ones that live outside MetaTrader: shares at your broker, crypto, dollars. It is a tracker manual (you register what you own) that fetches the quotes on its own and shows your live profit/loss.

Step by step

  1. Tap ➕ Add.
  2. Type the asset's ticker . Examples: PETR4 (a B3 share), BTC (bitcoin), AAPL (a US share), USD (the dollar).
  3. Enter the quantity and the average price you paid.
  4. If you want to track dividends received (below), also fill in the purchase date — it is optional, but without it the dashboard cannot tell "what this asset has ever paid" from "what you actually received".
  5. If you like, pick the broker — the list holds the most used ones for each market (Brazil/B3, International and Crypto) plus the "Other…"option, which frees the field so you can type any name. It is optional, and it shows on the asset's row once registered.
  6. That is it: the dashboard fetches the quote and shows the live profit/loss (it refreshes on its own).

Got something wrong? Just edit it

Every asset has the ✏️button. It opens the same form as the one at the top already filled in, with a highlighted border and the notice "Editing …" — fix whatever you need (average price, quantity, date, broker) and click 💾 Save, or Cancel to back out.

Prefer editing to deleting and re-registering. Deleting loses the purchase date — and with it the dividend arithmetic for that lot — besides undoing the price alerts tied to it.

Bought the same asset more than once?

Register one lot per purchase — each with its own quantity, price and date (useful for dividends: each lot counts the payouts from YOUR purchase date, not an average of everything). The list groups the lots of the same ticker into a single row, adding the quantity and calculating the weighted average price — just as the individual chart already showed. Tap the row (it reads "N lots ▸") to open it and view, edit or delete each purchase separately.

View chart and analysis

  • 📈 (per asset): opens the candlestick chart. Choose the candle type — M5 · M15 · H1 · H4 · D (daily) · W (weekly) · M (monthly) — and the period (from 1 day to 5 years). Periods that do not exist for that candle type are disabled: the free data source does not keep, for instance, 5-minute candles for a whole year. The plain-language line below the title always states what you chose ("each candle = 1 hour · showing the last month").
  • Your position's lines on the chart — buttons on the top bar, and the dashboard remembers your choice:
    • AP — shows/hides the line of your average price (green if you are in profit, red if at a loss). It comes on.
    • Entries — shows/hides a dashed line for each purchase you registered for that asset. It only appears if there are 2 or more lots — with only one, the entry would be the same line as the average price. It comes off.
    • MA — 20 and 50 moving averages · log — a logarithmic scale (useful on an asset whose price has multiplied).
  • 📊 Analysis: it adds everything up in your currency (converting whatever is in dollars), shows the portfolio's split by class (shares, crypto, and so on), a base-100 comparison of your portfolio against the CDI (fixed income) and the Ibovespa (the exchange), the 🏦 TOTAL Equity card (it adds your MetaTrader account to your manual portfolio in a single figure) and the 💰 Dividends and payouts block (see below). If you have assets registered here, that TOTAL Equity also arrives on its own in the daily/weekly Telegram summary — you do not need to open the dashboard to follow it.

🔔 Price alert per asset

Every portfolio row has a 🔔 button — tap it and say by how many % the asset may rise or fall from the average price you paid (e.g. -10 alerts you if it falls 10%; 15 alerts you if it rises 15%). When price hits the target, you get the alert on Telegram (the same bot as the 🔔 Notificationstab). It is the same alert mechanism as the Coach's chat (/alerta [ativo] [preço]) — the difference is that here you speak in % about what is already yours, instead of typing an absolute price. When a ticker has more than one lot, the button lives only on the consolidated row — open the lots to create an alert for a specific one.

🤖 The AI analyses the asset (and the whole portfolio)

With an asset's chart open, the 🤖 AI tells the Coach to make a full reading of it. The answer appears on the 🤖 AI Coach tab (the dashboard switches tabs on its own). The analysis brings together three layers:

  • The chart, calculated here: trend, highs and lows, supports and resistances, RSI, 20/50/200 averages, volatility and the changes over 5/21/63/252 candles. Those figures come from the real candles on your screen — they are neither the AI's guesswork nor a lookup on someone else's website.
  • Price action — candle patterns and chart figures: the dashboard identifies on its own a doji, hammer, shooting star, engulfing and inside bar in the recent candles, plus the larger figures: double top, double bottom, head and shoulders (and the inverted one), triangles/wedge and the the structure of highs and lows (ascending, descending or sideways). The AI receives that list ready-made and comments on what each figure suggests — if there is no pattern, it says so rather than inventing one.
  • Fundamentals and context, fetched from the web: earnings, multiples, dividends, sector, and whatever is moving the asset right now (rates, FX, commodities, news).
  • YOUR position: quantity, average price, result and how much that asset weighs in your portfolio. That is what makes the difference — the AI does not analyse "PETR4 in general", it analyses your PETR4.
The criteria are the robot's own. An doji is a body ≤10% of the range, a pin bar is a wick ≥2× the body, and engulfing requires a body ≥60% of the range swallowing the previous candle — exactly the rulers the EA uses in MetaTrader. That way the robot and the Home Broker never contradict each other about the same candle. The larger figures require a minimum significance (the pivot has to stand out by ~1.5%) so a small wiggle does not become a "head and shoulders".

🎯 The verdict at the end — the part that matters

The analysis does not end on the fence. The last block is the analyst's verdict, and it is required to choose:

  • Stance — exactly one: buy now, buy only if (with the trigger price), wait, reduce, sell or hold. No "it depends".
  • Conviction (high, medium or low) and why, in one sentence.
  • An entry price that makes sense, two targets and the invalidation price — the level that, once lost, shows the reading was wrong.
  • Risk vs reward roughly (e.g. risking 3% to chase 9% = 1:3).
  • ⏳ The expectation's horizon — how long the idea needs to play out, with a minimum and a maximum, and what to do if the horizon runs out with price going nowhere.
The horizon comes from the chart you are looking at — and that is deliberate. Analysing a 15 minutes candle and being told "wait 6 to 12 months" is an answer detached from reality. So the horizon is calculated from the candle you chose and handed ready-made to the AI: 15m → minutes to hours · 1h → hours to a few days · 4h → days to weeks · Daily → 1 week to 3 months · Weekly → 1 month to 1 year · Monthly → 6 months to years. Changing the candle changes the verdict, and that is exactly how it should be: the same share can be "wait" intraday and "hold" on the monthly.

Inside 📊 Analysistab, the 🤖 AI analyses does the same for the whole portfolio: concentration, allocation by class, what is driving the result and the risks of the whole — and it closes with a per-asset verdict table (each one's stance, a short reason and a horizon), plus the single most important change to make to the portfolio today.

Two important things. The analysis uses your Gemini key (the same one as the 🤖 AI Coach tab) — if it is locked, the dashboard asks for the password first. And it works with MetaTrader closed: without MT5 it only loses the live price (below); the quote data and your portfolio data keep coming in normally. It is educational content — not personalised investment advice; the decision and the risk are yours.

📡 The live price from your MetaTrader — closing the 15-minute gap

The free quote arrives delayed (~15 min on exchanges). Instead of buying real-time data — which would be expensive and is licensed per user — the dashboard uses what you already have and already paid for: the your own broker's feed, inside MetaTrader.

When you click 🤖 AI analyses on an asset's chart, before asking the AI the dashboard sends a quick request to your robot: "read this asset now". If MT5 is open and your broker trades that asset, the answer comes back with no delay at all and goes into the analysis marked as more recent than the chart — it is the one that wins if they disagree. That way the AI can say what happened afterwards since the last candle drawn.

When it does not work — and what happens then. It only fails if MT5 is closed or if your broker does not trade that asset (on a forex account, PETR4 simply does not exist). In those cases the analysis neither freezes nor invents: it waits at most 9 seconds, moves on and declares the delay so the AI can compensate by fetching the most recent quote from the web. The dashboard also does not even try when the asset is an index (such as ^BVSP), because its name changes from broker to broker. And the name is mapped automatically: PETR4.SA → PETR4, BTC-USD → BTCUSD, EUR/USD → EURUSD.

🌐 And the AI fetches the price from the web too

It is the third front against the same gap — and it works with no MetaTrader at all. Before analysing, the AI is instructed to look up the asset's current quote and compare it with ours. But with safeguards, because a quote in a search result is treacherous: it usually comes from a snippet held in cache, sometimes from the previous day's close, and almost always without saying what time that price refers to.

  • It is required to state the price + source + time of every quote it cites.
  • If the source carries no timestamp, it must write that it could not confirm it — passing off a timeless price as "current" is forbidden.
  • It receives our quote with its timestamp for comparison: a large divergence is usually a sign of stale data at its source, not of a move in the market.
  • When the measurement shows our quote is already real-time (a US share, crypto), the instruction changes: instead of "correct the delay", it gets "confirm whether there was news" — swapping good data for a search snippet would make things worse.
What the AI will NEVER do: invent the path in between. With the current price it knows where the asset went and how much far it moved since the last candle — that is real data. What it does not have is the path: the high, the low and the volume within those minutes. Estimating those candles would be manufacturing a price that never existed, and no serious system does that — the instruction is explicit: if the information did not arrive, it did not arrive. We would rather say "I do not know" than draw a pretty, false chart.

💰 Dividends and payouts

Inside 📊 Analysis, the 💰 Dividends and payouts block shows each asset's payment history. With the purchase date filled in, the dashboard adds up the payouts made since then for the quantity of that lot — if you have 2 purchases of the same asset on different dates, each one counts correctly from ITS own date. It is an approximation (not an official statement: it does not track partial sales or quantity changes within the same lot). Without the date, the lot appears in the block showing the asset's history, useful for knowing whether it pays out and how often — but it is not "what you received". No asset paying a dividend at the source? The block does not appear — it is not an error, it is the portfolio having no asset with a payout history (crypto and most international ETFs, for instance).

Importing the portfolio by CSV (for those with many assets)

  1. Click 📄 Download the CSV template, fill it in with Excel/Sheets (columns: ticker, quantity, average price, currency, broker) and save it.
  2. Click 📥 CSV and pick the file. The dashboard understands a comma or a dot in numbers, a ; or ,, and separator, and it detects each asset's class on its own (BR/US share, REIT, crypto, currency).
  3. Check the preview and confirm — the assets go into the portfolio all at once.
About the quotes — and the delay: they come from a free source (Yahoo Finance). And here is the measuredfact, not the rumour: the delay is not the source's, it is the EXCHANGE's. Comparing, at the same instant, the timestamp each quote carries against the clock: PETR4 (B3) = 15 minutes · NVDA (Nasdaq) = real time · Bitcoin = real time. B3 licenses (sells) real-time data; Nasdaq and the crypto market do not. That is why the dashboard does not warn about a delay in general — it measures the asset you are looking at and writes it under the chart: "✅ real-time quote" or "🕐 quote delayed by ~15 min (licensed exchange)". Next to it, it also shows the age of the last candle — which is a different thing: a 15-minute candle only closes every 15 minutes, even with the quote arriving live. And it distinguishes a closed market (outside trading hours the last candle is the right one, there is no lag at all). The portfolio curve is a backwards projection of your current positions (it does not use the exact history of your contributions).

Telegram notifications (Dashboard)

🛎️ New — an Alerts Center inside the dashboard itself. Besides Telegram, everything that happens in automation (a protection triggered, an order blocked, an expression error…) now appears straight in the Center: a 🔔 bell at the top with an unread counter, and a list on the 🔔 Notificationstab. You no longer depend on Telegram alone — open the dashboard and see what the robot did. The same category switches (Protections, System, Trades, AI Analyses, Summaries) apply to both channels.

🩺 "My strategy does not trade" — the robot now tells you why

If you write an expression the robot does not understand (a wrong variable or indicator name, an incomplete format), it used to simply never fire, silently. Now the robot tells you straight away — in the chart's Alerts panel and in the Alerts Center — saying which slot (e.g. BUY3) and and what it did not recognise. Quick guide:

The warning says…MeansHow to fix it
"I did not understand …"The robot did not recognise the whole expression (probably a name/syntax error).Check the spelling in the Variable Reference; or paste it into AI Coach and ask it to fix it.
"Incomplete format"The action is missing (e.g. @MARKET) or an operand.Complete it: RSI[0]<30 @MARKET.
"Indicator … does not exist"The indicator's name is not one of the supported ones.See the indicator list in the manual; custom names must be attached to the chart.
Before switching a rule on, test it: in the Center's chat, the testar_expressao command validates the wording and shows the current value of every variable it uses — you see straight away whether it makes sense, without risking an order.

⬇️ Downloading the robot and updates

The published version of the robot is on the 🎫 My Plantab, in the "Download the robot" card — the same file works for demo and live accounts. When a new version comes out you get a 🆕 notice on the bell: just open My Plan and download it. Then copy the .ex5 to your MT5's MQL5\Experts folder and drag it onto the chart.

Telegram alerts (on your phone, even with the PC off)

The 🔔 Notifications also makes the robot alert you on Telegram when something important happens — including when the robot goes offline (stops responding), which is a warning the EA itself could not send if it froze.

⚡ The easy way — automatic connection (recommended). You do not need to create any bot: on the 🔔 Notificationstab, use the Connect Telegram — it opens our central bot @MQLProTraderCentralBot; just press Start and that is it, the connection happens on its own (the system captures your chat automatically). Then tick the categories (Protections, System, Trades, AI Analyses, Summaries) you want to receive.

From then on, every notice from the 🔔 bell also reaches your Telegram: trade opening and closing (with the direction and the reason — TP, SL, manual, robot), break-even applied, a protection triggered, an AI analysis made by your robot, a protection that blocked one of your locks, and robot offline.

It is a single bot, and it does everything: the @MQLProTraderCentralBot, which you connect in 1 tap. It informs you (trades, protections, summaries, reports) and, if you enable it, also trades: close, close part, cancel pendings, pause/resume, buy/sell and switch targets on/off. You do not need to create any bot or paste a token — see Trading through Telegram.
If you have used MQL PRO TRADER since the early versions: there used to be a ticket that required creating your own bot in BotFather and pasting the token. It has been retired — everything it did is in the Center on Telegram, with no configuration at all.

🎛️ Trading from Telegram (close, pause, buy and sell)

The same bot that sends you the alerts also accepts orders — with no bot to create and no token to paste. They are the same Trading Desk buttons from the dashboard, on your phone: close everything, close one asset, cancel pendings, pause/resume the robot and buy/sell on the asset and volume you have configured.

It comes off deliberately: giving order power to a Telegram chat is a real increase in risk, because the device stays permanently logged in. To enable it:

  1. Connect Telegram with the Connect Telegram button (above).
  2. Set the Desk password button on the 🎛️ Desk. Without a password, Telegram not trade the account.
  3. On the 🔔 Notifications, the 🎛️ Trade from Telegramcard, tick “Allow this Telegram to send orders from this account”.
  4. Fill in the Default asset, Volume and, if you wish, SL and TP in points — that is what the buy/sell buttons will use.

On Telegram, send /mesa SUA_SENHA (the same Desk password). The bot deletes the message containing the password and opens the desk. Use /operar to reopen the buttons and /travar to lock it immediately.

How the menu works

There are three ways to reach the same action — use whichever is quickest at the time:

WhereWhat it is for
Fixed keyboard
(below the text field)
The hot actions always to hand: Close all, Cancel pendings, Positions, Pause, Resume, Buy, Sell, Commands, Hide and Lock. It appears when you unlock and goes away when you lock.
Taking up too much room? Tap ⌨️ Hide — the buttons disappear and the desk stays unlocked; /operar brings them back. What locks it is 🔒 Lock.
☰ Menu
(Telegram's own button, next to where you type)
The full command list, drawn by Telegram itself — it never goes stale. Anyone who has not not opted in sees only the read-only ones.
Buttons in the messageWhatever suits the moment: close one asset, close only the buys or only the sells, and close one specific position.

Two details that save you taps: right after you open a position, the bot offers “✖️ Close this one” for that position — with no list to search. And the 🟩 buys only / 🟥 sells only buttons only appear when the asset has both sides open; with only one side, they would be the same as “Close the asset”.

At 📊 Positions (with the desk unlocked) each position becomes a row with asset, volume and result, and a pair of buttons ⚙️ beside it: the ✖️ closes just that one, and the ⚙️ opens the position's card — where the three protections live.

Protecting an open position — 🛡 Protect · 🔻 Stop loss · 🎯 Take profit

On the position's card (the ⚙️ log under 📊 Positions) the three sit side by side, with no configuration needed:

ButtonWhat it does
🛡 ProtectOpens three routes for the stop, and you choose before confirming — see below. If the position is in the red, it does not even open: there is no profit to protect, and a stop at the entry would sit on the wrong side of price (the broker would reject it).
🔻 Stop loss
🎯 Take profit
Opens three percentages of the entry price, and each button shows the distance in points alongside — 0.25% (≈161). One tap chooses. If you filled in the default SL/TP in points on the 🔔 Notifications tab, it appears as a fourth button, at the top.
The percentages change with the asset — deliberately. “1%” does not mean the same thing everywhere: 1% of BTC at 64,500 is 645 points; 1% of a share at R$ 38 is R$ 0.38, almost the spread. So the scale follows the market:
MarketThe three buttons
Crypto · indices and futures (WIN, WDO, US30…)0,1% · 0,25% · 0,5%
Metals and energy (XAUUSD, oil) · currencies0,25% · 0,5% · 1%
Shares0,5% · 1% · 2%
That is why the number of points is written on the button: what decides is not the percentage, it is the distance.

Want a value that is not on the buttons? Tap 🔻 or 🎯 on the position and then type it — without repeating the position number, because you already said which one it is:

You typeWhat happens
/tp 0.3%A target 0.3% from the entry, on the position you just opened in the card. It also works 0,3% with a comma.
/tp 0.3The same: with a decimal, it is a percentage — a point is never fractional.
/sl 300300 points of distance (a whole number is always points).
/sl 299258347 0.3%With the position number in front — use it when it has been more than 10 minutes since you opened the card, or when you want to act on another position. The number appears on the card.

The bot never guesses which position: if you have not picked one recently, it asks for the number instead of guessing among your open positions. And the percentage is converted into price at the moment of sending, so it works on any version of the robot — the points are the ones that need 5.7.98.

🛡 Protect — break-even or lock in part of the profit

When the trade has already moved in your favour, stopping at the entry price may not be enough: if price comes back, you give up all the profit you already had. That is why 🛡 Protect does not act straight away — it shows the options, with each one's price already calculated, and only acts after you confirm:

OptionWhere the stop will land
🛡 Break-evenOn a entry price. The trade can no longer turn into a loss — this is the classic breakeven.
🔒 Lock 25% · 50% · 75% of the profit
the safest one
At the point of the distance already travelled between the entry and the current price. Locking 50% puts the stop halfway: if it is hit, you keep ≈half of what you had gained. The button shows the value — 🔒 50% (+BRL 200,00).
📐 +0,25% · +0,5%…Above the entry (below, on a sell), as a percentage of price — the same per-market scale as the 🔻/🎯 buttons.
Why “% of the profit” is the safest: it does not ask you to get any price right. What reports the now is the your own robot, in the report it sends to the Center — so the arithmetic uses its number, not a guess of yours. What travels to MT5 is an absolute price: the value you saw on the button is exactly what gets applied.
The ≈ shows up only in the money: the close happens on the other side of the spread, and commission and swap do not follow the proportion. The price of the stop is exact.

The system refuses two things, both to protect money: an option that would sit beyond the current price (the broker would reject it, and at the limit it would close the position at market) and any option that would worsen the stop you already have — a stop that walks backwards is protection thrown away. Unworkable options simply do not appear; if none is left, the bot explains that your current stop already protects more.

By typing, on the position you already opened in the card:

You typeWhat happens
/beOpens the options above — the route that requires memorising nothing.
/be 50%Locks half the profit. Here the % is of the profit.
/be +0.3%Stop 0.3% of price above the entry. The + is what changes the meaning of the %.
/be 0Break-even.
/be 299258347 50%At another position (or after 10 min), with the number shown on the card.
The robot can also do this on its own, if you want. In the inputs, group ⚙ NORMAL Breakeven (BE) SETUP: ☑️ ENABLE Breakeven + ✏️ PROFIT points to TRIGGER BE + ✏️ Offset from entry price (points). With trigger 200 and offset 100, when profit reaches 200 points it moves the stop to entry + 100 — with you touching nothing. The 🛡 on your phone is for the one-off case, when you want to decide by hand; the inputs are for the permanent rule.
You can trade without typing anything. The only thing still typed is the password in the /mesa — and that is deliberate: a password on a button would be a password one tap away. Apart from it, everything has a button. Want a different asset or volume? Tap ⚙️ Other on the confirmation screen: a row per asset appears and, below it, the multiples of your default volume (½, 1×, 2×, 3×) — one tap picks both. And if you have more than one account unlocked, the bot shows one button per account instead of asking for the number. Typed commands still work for those who prefer them.

✂️ Closing part of the position — 25% · 50% · 75%

It is not only “close everything”. On each position's card (💼 Positions, or /positions) there is a row of partial closebuttons: you bank a slice of the lot and let the rest run.

Do not confuse this with 🔒 Lock 25% · 50% · 75% (just above). The numbers are the same, but they do different things:
• 🔒 Lock moves the stop — the position stays whole, just protected.
• ✂️ Close 25/50/75% moves the volume — a slice of the position disappears and its money is banked now.

The button already shows the exact lot that will be closed, not just the percentage — because the fraction almost never lands on a round number:

You seeWhat happens
✂️ 25% (0.01)Closes 0,01 of the position's lot. The rest stays open, with the same SL and TP.
✂️ 50% (0.02)Closes half. The classic way to take profit at the first target and let the rest chase the second one.
✂️ 75% (0.03)Closes three quarters and leaves a small runner going.

After closing part of it, the card redraws with the volume that is left — and you can slice again, if there is still enough lot. The same buttons exist on the dashboard, on each position of the Trading Desk.

Why sometimes fewer than three buttons appear — or none: the robot only offers what your broker actually accepts.
• The lot is adjusted to the asset's of the asset. Half of 0,03 would be 0.015, which the broker would refuse — so the button shows the nearest valid value.
• A slice smaller than the minimum lot does not become a button. On a 0.01 position (the minimum), no partial appears at all — there is no way to split it.
• If two fractions land on the same lot, only one appears (25% and 50% of a small lot can give the same value).
• A fraction that would round to the whole position is discarded: it would be a “close everything” disguised as a partial.

When the default will not do — /comprar and /vender

The buttons exist for the common case (1 tap). When you want a different volume or a different asset, type it — and the account's default SL/TP still applies:

You typeWhat happens
/comprarThe account's default asset and volume.
/comprar 22 lots on the default asset (a bare number is always volume — an asset has letters).
/comprar WDOQ26 1The asset and volume you specified.
/comprar 5162432 WDOQ26 1With the account number in front — required if you have more than one account unlocked. The bot does not guess which one to send it to.

It also accepts /vender . The confirmation is the same as the buttons', and the asset is checked against the robot's — if the name does not exist at your broker, it refuses and the reason comes back in the chat.

🎯 Your three targets on your phone — /alvos

The robot trades up to three assets at once (A1, A2 and A3). The /alvos command brings those three to Telegram: it shows which asset is in each slot and whether it is on or off — and lets you change that from your phone, without opening MetaTrader.

You seeWhat it means
🟢 A1 · WINQ26Target on — the robot may trade that asset. Tap to turn it off.
⚪ A2 · WDOQ26Target off — configured, but idle. Tap to turn it on.
Buy on all · Sell on allSends the order on every target that is 🟢 on, all at once. A ⚪ target that is off is ignored.

It is the quick way to take an asset off the air when it is doing badly, or to bring it back later — without touching your expressions and without needing the PC.

Only the slots that have an asset configured in the robot are shown. If you have not set any target yet, the command tells you there is nothing to show — configure A1/A2/A3 in the EA first. Turning them on and off here does not erase your configuration: the asset stays in its slot, simply idle.
“Buy on all” multiplies your exposure. With the three targets on, one tap opens three positions — each with the account's default volume. Check how many are 🟢 before you use it.
The safeguards: every order asks for confirmation (✅ Confirm / ✖️ Cancel), and the confirmation is valid for 1 minute and works only once. The unlock expires on its own after 30 minutes of inactivity. If the robot is offline, the order is refused — rather than being held and executed minutes later, at a price that is no longer the one you saw. (Pause and resume are the exception: they can wait for the robot to come back, because they do not depend on price.)
SL and TP in points: on your phone you store a distance, not a price — the price changes on every tick. The points are measured by the robot itself, in the same unit as the SetSL[] in the expressions, and they respect the minimum distance your broker requires. 0 = no stop. The buy/sell buttons appear from robot 5.7.96onwards; close, cancel and pause work on any version.
It depends on our server. The order leaves Telegram, goes through the Center and reaches the robot on the same channel as the dashboard's Desk (it takes a few seconds). If the Center is down, no order goes out via Telegram — the read-only queries keep working, because they are read from our database.

Rate MQL PRO TRADER (Dashboard)

The ⭐ Rate is where you say what you thought of MQL PRO TRADER: you give a star rating (from 1 to 5) and write a comment. Your opinion helps other traders discover the tool and guides us on what to improve.

How to rate

  1. Pick the stars (as many as you think fair).
  2. Write a comment (optional).
  3. Click Send. You can edit it later, whenever you like.
Tip: do not confuse it with the rating of a Copy Trade provider (⭐ inside the 🔁 Copy Tradetab) — that one is the score you give to another trader you copy. This tab ⭐ Rate is your opinion about the tool MQL PRO TRADER.

📚 EXPRESSION LIBRARY

Ready-made examples to copy and adapt. Every expression follows the structure: CONDIÇÃO @TIPO → AÇÃO

Validated in the EA's expression system: in entries, SetSL[X] and SetTP[X] take numeric distances in points, such as SetSL[500]. Dynamic levels such as SetSL[LOW[1]] or SetTP[BID+80] are accepted only in @MODIFYexpressions. For external indicators, the real order is IND1[buffer,candle].
Quick syntax — click to see every token
@MARKETExecutes the order immediately at the current price @HIGH[1]Places a pending order at the previous candle's high @LOW[1]Places a pending order at the previous candle's low @BCLOSECloses every open buy @SCLOSECloses every open sell @ALLCloses everything (buys + sells) @BCLOSE+Closes only buys in profit @BCLOSE-Closes only buys at a loss @BCLOSE:NIn an exit: closes only the buys opened by BUY expression number N (e.g. @BCLOSE:2 closes those of BUY expression [02]; @SCLOSE:N does the same for sells) &&Logical AND — EVERY condition must be true ||Logical OR — AT LEAST ONE condition must be true. You can mix it with && on the same line: && is applied first (like × before + in maths). E.g. BPROFIT>150 || DIR[0]==-1 && DIR[1]==-1 = "profit OR (two bearish candles)" ( )⛔ MATH only, never to group conditions. (HIGH[1]-LOW[1])*0.6 works; ((TIME>=10 && TIME<=11.5) || (TIME>=14 && TIME<=17)) does NOT — the robot rejects the line, warns in Safety Alerts ("condition not understood") and does not trade. For "(A or B) and C", use TWO slots: A && C in [01] and B && C in [02] — slots already work as OR between themselves // or #Disables the expression without deleting it (a comment) — Multi-symbol @A2MARKETExecutes the order on the A2 asset set in ✏️ Secondary asset A2 (e.g. EURUSD, XAUUSD) @A3MARKETExecutes the order on the A3 asset set in ✏️ Tertiary asset A3 (e.g. GBPUSD, BTCUSD) @A2HIGH[1]A pending order at A2's previous candle high @A2LOW[1]A pending order at A2's previous candle low @A2BCLOSECloses every open buy on A2 @A2SCLOSEIt closes every open sell on A2 @A2ALLCloses everything on A2 (buys + sells) @A2BCLOSE+Closes only profitable buys on A2 @A2BCLOSE-Closes only losing buys on A2 @A2MODIFYModifies the SL/TP of A2's positions — the ✏ (TP/SL/BE/TS) expression @A3MODIFYModifies the SL/TP of A3's positions, set in ✏️ Tertiary asset A3 (e.g. GBPUSD, BTCUSD) @MODIFYALLModifies the SL/TP of EVERY position on the line's side (buys or sells), whichever entry opened it A2CLOSE[0]A2's current candle close, on the parameter ✏️ A2 timeframe in EXPRESSIONS (A2HIGH, A2LOW, A2CLOSE, A2OPEN) A2TVOL[0] / A2RVOL[0]Tick volume / real volume of the current A2 candle, on the same timeframe as A2CLOSE (also inside math, since robot 5.7.215) A2DPROFITProfit accumulated during the day on A2 A2VOLBUY / A3VOLBUYVolume of open BUY positions on the secondary assets A3*The same tokens above with the A3 prefix, for the tertiary asset — BUY / SELL filters FBUY[N]Evaluates the condition of BUY Filter N (1–10) inside any expression — true if the filter passes FSELL[N]Evaluates the condition of SELL Filter N (1–10) inside any expression — true if the filter passes — Gemini AI ANALISA_IAThe AI's decision on A1: 1=BUY, -1=SELL, 0=WAIT, -99=invalid cache IA_VALIDA1 when the analysis is valid for use in an expression; always use it together with the decision IA_CONFIANCAThe signal's clarity/strength in % (≠ probability; see IA_PROB_ALTA/IA_PROB_BAIXA) IA_FECHAR_BUY1 when the AI suggests closing open buys on A1 IA_FECHAR_SELL1 when the AI suggests closing open sells on A1 A2ANALISA_IAThe AI's decision for asset A2; use it with @A2MARKET, @A2BCLOSE and @A2SCLOSE A3*The same tokens above with the A3 prefix, for the tertiary asset — Phase A/B NOVOBAR1 only on the new bar's first tick; ideal for trading once per candle. Pair it with the CLOSED candle [1] (e.g. NOVOBAR==1 && HIGH[1]>HIGH[2]) — combined with [0] the rule almost never fires, because at that instant the current candle has only just opened SPREADXThe current spread divided by the average spread; use SPREADX<1.3 to avoid an abnormal spread PFDIAThe Profit Factor of the trades closed in the day RMULTThe current profit in multiples of the initial risk; for example: RMULT>=1 POSMIN / POSMAXThe worst and best floating profit ever seen on the tracked A1 position SetRiscoPct[X]Calculates the volume from a risk of X% of the balance; use it with SetSL[X] @CancelPendingCancels ALL of A1's pending orders in exit slots — including the ones you placed by hand or another robot placed @CloseBest / @CloseWorstCloses A1's most profitable or most losing position in exit slots — it picks among ALL of A1's positions, including those opened by hand or by another robot — PHASE C — Internal indicatorsIt requires enabling the matching parameters in the EA, such as ☑️ Enable VWAP (volume weighted average price), ☑️ Enable POC — the price with the largest traded volume and the other advanced blocks. Numeric price variables calculated internally. VWAP / VWAPD / VWAPW / VWAPMSession, daily, weekly and monthly VWAP — the volume weighted average price; CLOSE[0]>VWAP POCPoint of Control — the day's highest-volume level; a dynamic support/resistance VAHIGH / VALOWUpper/lower limits of the Value Area (70% of traded volume) — requires ☑️ ⬜ Enable Value Area — uses VAHIGH and VALOW in conditions ORBHIGH / ORBLOWThe Opening Range Breakout high/low — the range of the session's first minutes — requires ☑️ ⬜ Enable Opening Range — uses ORBHIGH and ORBLOW in conditions TENKAN / KIJUNIchimoku: the conversion line (9 per.) and the base line (26 per.) — TENKAN>KIJUN = uptrend KUMOTOP / KUMOBOTThe top and bottom of the Ichimoku cloud — dynamic support/resistance; price above = bulls in control SENKOUA / SENKOUBThe lines that form the cloud: SENKOUA=(TENKAN+KIJUN)/2 (the fast span); SENKOUB=the long-period average (52 per., the slow span). SENKOUA>SENKOUB=a green cloud (bullish); <=a red cloud (bearish). Aliases: SPANA / SPANB. FIBO382 / FIBO500 / FIBO618Fibonacci retracement levels calculated on the recent pivots; use them as dynamic support/resistance BBUPPER / BBMIDDLE / BBLOWERBollinger: the upper band, the middle and the lower band — CLOSE[0]<BBLOWER = oversold BBSQZBollinger Squeeze: 1=squeeze (low vol → wait for the breakout), 0=normal, -1=expansion ATRREGThe ATR volatility regime: 0=normal, 1=volatile (expanded), 2=calm (compressed) — filter your entries by the market environment DOJI / PINBAR / ENGULFIntrabar patterns (the forming candle): DOJI=minimal body; PINBAR=long wick (±1); ENGULF=engulfing (±1) DOJI1 / PINBAR1 / ENGULF1Patterns confirmed (the closed candle [1]): use them with NOVOBAR==1 — entry at the start of the next bar — Daily and Previous-Day OHLC (independent of the chart's TF)Variables that return the Open/High/Low/Close of the whole day, even if the chart is on M1, M5 or H1. They accept [N] to reach past days (e.g. DHIGH[2] = the high from 2 days ago). DOPEN / DHIGH / DLOW / DCLOSEThe open, high, low and (partial) close of the current day. Aliases: OPENDAY, DAYHIGH, DAYLOW, CLOSEDAY. Example: BID>DHIGH = it broke the day's high. YOPEN / YHIGH / YLOW / YCLOSEOHLC of the previous day (fixed for the whole day). Aliases: PDH (Previous Day High), PDL (Previous Day Low), PREVOPEN, PREVCLOSE. Example: BID<YLOW = it lost yesterday's low. — Weekly OHLC (independent of the chart's TF)Variables for the current week. They accept [N] for past weeks (WCLOSE[1] = last week's close). WOPEN / WHIGH / WLOW / WCLOSEThe open, high, low and (partial) close of the current week. Example: BID>WHIGH[1] = it broke last week's high. — Percentage change and Gap (calculated on a daily basis)They measure the day's move in percent or in units of volatility (ATR). Essential for filters like "I only trade if the asset is already up more than 1%". DAYCHGChange % for the current day: (BID - DOPEN) / DOPEN × 100. Aliases: DCHG, DCHANGE. Example: DAYCHG>1.5 = the asset is up more than 1.5% on the day. YCHGChange % for the previous day. Aliases: YCHANGE, PREVCHG. Use it to spot continuation or reversal between sessions. GAPABSThe gap in absolute points between yesterday's close and today's open (positive = gap up). Alias: GAP. GAPPCTThe gap in percent of the previous close. Example: GAPPCT>1 = a gap up of more than 1%. GAPATRThe gap measured in multiples of the daily ATR(14) using an SMA — the same as MT5's native iATR (signed: positive = gap up, negative = gap down). Example: GAPATR>1.5 || GAPATR<-1.5 = a gap larger than 1.5× ATR in either direction. GAPATRWThe gap in multiples of the Wilder ATR (SMMA, 14 D1 periods) — it uses the progressive exponential smoothing of Wilder's original method, which reacts more slowly to volatility spikes and gives slightly different values from GAPATR on volatile assets (BTC, indices). Use it to compare which gap filter suits your asset better. ATRW[N]The Wilder ATR (SMMA) on the timeframe and period configured in the EA (default: the chart's timeframe, 14 periods — the same as the ATR SL/TP). It complements ATRREG which uses an SMA internally. Example: ATRW[0]>ATRW[1] = Wilder volatility expanding. DAYRNG / DAYRNGPCTThe day's range in points tab and in % of the open. Aliases: DRANGE, DRANGEPCT. Example: DAYRNGPCT>3 = a very volatile day. — Classic Pivot Points (Floor Pivots)Support and resistance levels calculated from the previous day's OHLC. Standard formulas: PP=(H+L+C)/3, R1=2PP-L, S1=2PP-H, and so on. They accept [N] for pivots from past days. PIVOTThe central Pivot Point. Alias: PP. Used as the day's psychological reference — price above = bullish bias. R1 / R2 / R3Projected resistances. R1 = the first; R3 = extremely stretched (classic overbought). S1 / S2 / S3Projected supports. S1 = the first; S3 = capitulation (extreme oversold). — Cross-asset Round Numbers (ROUND/DISTROUND/NEARROUND)They capture psychological levels (round figures). [N] is the step in the symbol's POINTS — choose it according to the asset (e.g. WIN [100], EURUSD [100]=10 pips, XAU [100]=$1, BTC [10000]). The parameter [N] is required. ROUND[N]Returns the rounded price of the BID to the nearest multiple of N points. Example on WIN: BID>ROUND[100] = it is above the nearest multiple of 100 pts. DISTROUND[N]The distance (in points, always positive) to the nearest round multiple. Alias: DROUND[N]. Example: DISTROUND[500]<50 = price within 50 pts of a half-hundred. NEARROUND[N]A flag 1/0: 1 if the BID is within N/4 points of a round multiple. Alias: NROUND[N]. Use it as a filter: NEARROUND[100]==1 = price glued to a hundred. — ROC, Fibo windows and VWAP bands (Wave F)Advanced indicators: the rate of change accumulated over N days, the high/low of N candles and the VWAP's statistical bands. ROC[N]The percentage Rate of Change on a daily basis over N days: (close - close[N])/close[N] × 100. Alias: PROC[N]. Example: ROC[5]>3 = a cumulative rise of more than 3% over the last 5 days. FIBHIGH[N] / FIBLOW[N]The high and low of the last N closed candles on the chart's timeframe. Aliases: WINHIGH[N], WINLOW[N]. Useful for a rolling-window breakout: BID>=FIBHIGH[50]. VWAPUP1 / VWAPDN1 / VWAPUP2 / VWAPDN2Rolling VWAP bands: ±1σ and ±2σ (volume weighted standard deviation). Use them as a statistical band: BID>VWAPUP2 = statistically overbought. Requires ☑️ Enable VWAP. — N-day % change, average range and exhaustionFor strategies like "fell X% from the N-day high", "how much this asset moves per day" and "the day has already moved too much". All on a daily basis, with the chart on any timeframe. DHIGHN[N] / DLOWN[N]High and low of the last N closed days (today is not included). The [N] is required. Example: BID<DHIGHN[20]*0.9 = 10% below the 20-day high. ADR[N] / ADRPCT[N]Average daily range of the last N closed days, in price (ADR) and in % of each day's open (ADRPCT): how much the asset usually moves per day. Without [N], 14 days. ADRUSED[N]How much of the N-day average range has been covered today, in %. ADRUSED[14]>=100 = the day has already used up a whole normal day, a classic exhaustion sign. CHGPCT[N]% change from close to close, the one your broker shows: the current price against yesterday's close (CHGPCT[1] = yesterday's). The DAYCHG measures from today's open. On B3 futures the broker measures against the settlement price, which may differ from the close. DPOS[N]Where the price sits within the day's range, in %: 0 = at the low, 100 = at the high. Example: DPOS<10 = right at the day's low. ZCHG[N]Today's change (CHGPCT) measured in standard deviations of the daily changes over the last N days. ZCHG[20]<-2 = an abnormal drop for this asset. Without [N], 20 days. DOWNDAYS / UPDAYSHow many closed days in a row down or up (close below or above the previous one), counting back from yesterday. Example: DOWNDAYS>=3. P1 / P2 / P3 / P4 / P5Free numbers from the F7 window, in the group 🔢 FREE NUMBERS P1..P5. Write P1 inside the expression instead of the number and the Strategy Tester can optimize that value. Example: DAYCHG<-P1.

🟢 GROUP 1 — BUY ENTRIES

✏ BUY expression [01–10]

Price Action

BUY Rising high (breakout)
HIGH[0]>HIGH[1] @MARKET
Enters when the current candle's high exceeds the previous one's — a sign of buying strength.
BUY Green candle (close above the open)
CLOSE[0]>OPEN[0] @MARKET
Buys when the current candle closes above its open — it confirms buying pressure.
BUY Two green candles in a row (DIR)
DIR[0]==1 && DIR[1]==1 @MARKET
DIR[N]==1 = a green candle, DIR[N]==-1 = a red candle. Two greens = confirmed momentum.
BUY Reversal — a red candle followed by a green one
DIR[1]==-1 && DIR[0]==1 @MARKET
Previous candle red + current one green = a possible start of a bullish reversal.
BUY Three ascending highs (strong trend)
HIGH[0]>HIGH[1] && HIGH[1]>HIGH[2] @MARKET
Three rising highs confirm an uptrend. More reliable than only two.
BUY Previous candle with a body 2× larger (strength)
BODY[1]>BODY[2]*2 && CLOSE[1]>OPEN[1] @MARKET -> SetVolume[0.01]
BODY[N] = |CLOSE[N]−OPEN[N]|. The previous candle's body is 2× larger than that of 2 candles ago AND is bullish — a sign of buying strength doubling.
BUY Breakout with expanding range
HIGH[0]>HIGH[1] && RANGE[1]>RANGE[2]*1.5 @MARKET -> SetVolume[0.01]
RANGE[N] = HIGH[N]−LOW[N]. It breaks the previous high and the previous candle is 50% more volatile — it confirms the breakout with conviction.
BUY A "clean" candle (body > 50% of the range)
CLOSE[1]>OPEN[1] && BODY[1]>RANGE[1]*0.5 && HIGH[0]>HIGH[1] @MARKET -> SetVolume[0.01]
It filters out dojis and indecisive candles by requiring the body to take up at least 50% of the range — no dominant wicks. Then it confirms the breakout. An excellent filter against false signals.
BUY A pending order at the previous low
DIR[0]==1 @LOW[1] -> SetVolume[0.01]
Current candle green → it places a BuyLimit at the previous candle's low (LOW[1]). The order waits for price to pull back to that support to execute. SetVolume is mandatory on pending orders.

Pending orders (a specific price)

Replacing @MARKET with a price token creates a a pending order at the level you want. The EA places the order and waits for price to arrive. SetVolume is required in every case.
BUY BuyStop on the break of the high
HIGH[0]>HIGH[1] @HIGH[0] -> SetVolume[0.01]
It places a BuyStop exactly at the current candle's high. The EA only executes if price rises and touches that level — it confirms the breakout before entering.
BUY BuyLimit at the previous candle's close
HIGH[0]>HIGH[1] @CLOSE[1] -> SetVolume[0.01]
It waits for price to come back to the previous candle's close before entering. The "pullback to the close" technique used in continuation strategies.
BUY BuyLimit at the low of two candles ago
DIR[0]==1 @LOW[2] -> SetVolume[0.01]
It places the order at the low of two candles ago, a price level the expressions accept for pending orders.
BUY A grid of pendings at two supports
COMPRA [01]: DIR[0]==1 @LOW[1] -> SetVolume[0.01]
COMPRA [02]: DIR[0]==1 @LOW[2] -> SetVolume[0.02]
Two pending orders at different supports: BUY1 waits at yesterday's low, BUY2 waits at the low of the day before with double the volume. Buying in layers.
BUY&& A pending only inside the trading window
DIR[0]==1 && TIME>=9.0 && TIME<=12.0
  @LOW[1] -> SetVolume[0.01]
The same pending logic, but it only places the order during the morning session. Outside those hours the condition is false and no order is created.

Hours, Day and Spread

BUY&& London session (08:00–12:00)
HIGH[0]>HIGH[1] && TIME>=8.0 && TIME<=12.0 @MARKET
TIME is decimal: 8.0=08:00, 8.5=08:30, 14.75=14:45. It only trades inside the chosen window.
BUY&& Weekdays + low spread
HIGH[0]>HIGH[1] && DAY>=1 && DAY<=5 && SPREAD<20 @MARKET
DAY: 0=Sun, 1=Mon…5=Fri, 6=Sat. SPREAD in points. It avoids weekends and low-liquidity hours.
BUY&& Close everything on Friday afternoon
# Entry: trades Mon-Thu only
HIGH[0]>HIGH[1] && DAY>=1 && DAY<=4 @MARKET
It opens no new buys on Friday. Combine it with EXIT to close everything at 16:00 on Friday (see the Exits group).
BUY&& Two time windows (morning/afternoon)
COMPRA [01]: HIGH[0]>HIGH[1] && TIME>=9.0 && TIME<=12.0 @MARKET
COMPRA [02]: HIGH[0]>HIGH[2] && TIME>=14.0 && TIME<=17.0 @MARKET
Two independent slots = two trading windows. Each BUY only opens inside its own window.

With News (NEWSIN)

BUY&& Avoid entering before news
HIGH[0]>HIGH[1] && NEWSIN[30]==0 @MARKET
NEWSIN[30]==0 = no news in the next 30 minutes. It protects you from volatility spikes caused by economic events.
BUY&& Hours + no news + spread
HIGH[0]>HIGH[1] && TIME>=9.0 && TIME<=17.0
  && NEWSIN[60]==0 && SPREAD<25 @MARKET
A triple quality filter: business hours + no news right now + an acceptable spread. A professional setup.

With Indicators (IND1–IND30)

How to use indicators: Set IND1 up (e.g. RSI, M5, period 14) in the "Initial settings". Then reach it with IND1[buffer, candle] — e.g. IND1[0,0] = the main buffer on the current candle.
BUY RSI oversold (IND1=RSI period 14)
IND1[0,0]<30 @MARKET
RSI below 30 = the oversold zone. Set: IND1 = RSI | NEW,SYMBOL,M5,14,0
BUY&& Stochastic + Price Action
IND1[0,0]<20 && HIGH[0]>HIGH[1] @MARKET
Stoch < 20 (oversold) AND a rising high. Set: IND1 = STOCH | NEW,SYMBOL,M5,14,3,3,1
BUY&& EMA crossover (IND4=EMA9, IND5=EMA21)
IND4[0,0]>IND5[0,0] && IND4[0,1]<=IND5[0,1] @MARKET
The fast EMA has crossed above the slow one now (it was below on the previous candle). A golden cross.
BUY&& MACD positive + rising (IND2=MACD)
IND2[0,0]>0 && IND2[0,0]>IND2[0,1] @MARKET
The MACD histogram positive AND rising. Set: IND2 = MACD | NEW,SYMBOL,M5,12,26,9,0,0 (buffer 0 = the histogram)
BUY&& RSI + MACD + Price Action (multiple confirmation)
IND1[0,0]<40 && IND2[0,0]>IND2[0,1]
  && HIGH[0]>HIGH[1] @MARKET
Three confirmations: RSI not overbought + MACD rising + a rising high. It reduces false signals.
BUY|| RSI OR Stochastic oversold
IND1[0,0]<30 || IND3[0,0]<20 @MARKET
With || (OR): it enters if ANY of the indicators fires — more entries, less restrictive.

With the Secondary Asset A2 / A3

BUY&& Correlation — A2 rising too
HIGH[0]>HIGH[1] && A2HIGH[0]>A2HIGH[1] @MARKET
It buys the main asset only if the secondary asset (A2) is rising too. E.g. enter XAUUSD only if EURUSD confirms.
BUY Send the order straight to A2
HIGH[0]>HIGH[1] @A2MARKET
When the condition is true, it opens the order on asset A2 (not on the main chart). It requires A2 to be configured.
BUY&& Enter A1 AND A2 at the same time
COMPRA [01]: HIGH[0]>HIGH[1] @MARKET
COMPRA [02]: HIGH[0]>HIGH[1] @A2MARKET
BUY1 opens on A1, BUY2 opens on A2 on the same condition. It trades two assets with a single signal.
BUY&& A2 closing above the previous candle
HIGH[0]>HIGH[1] && A2CLOSE[0]>A2CLOSE[1] @MARKET
It uses A2CLOSE[N] on the parameter ✏️ A2 timeframe in EXPRESSIONS (A2HIGH, A2LOW, A2CLOSE, A2OPEN) (default: D1). Ideal for daily confluence.

🔴 GROUP 2 — SELL ENTRIES

✏ SELL expression [01–10]

Price Action

SELL Falling low (bearish breakout)
LOW[0]<LOW[1] @MARKET
It sells when the current low breaks the previous low — selling pressure confirmed.
SELL Two consecutive red candles
DIR[0]==-1 && DIR[1]==-1 @MARKET
Two candles closing lower = confirmed downward momentum.
SELL Three descending lows (strong trend)
LOW[0]<LOW[1] && LOW[1]<LOW[2] @MARKET
Three falling lows confirm a downtrend. More reliable than only two candles.
SELL Previous red candle with a body 2× larger
BODY[1]>BODY[2]*2 && CLOSE[1]<OPEN[1] @MARKET -> SetVolume[0.01]
The previous candle's body is 2× larger than that of 2 candles ago AND is bearish — selling pressure doubling in strength.
SELL Break of the low with an expanding range
LOW[0]<LOW[1] && RANGE[1]>RANGE[2]*1.5 @MARKET -> SetVolume[0.01]
It breaks the previous low and the previous candle expanded 50% in volatility — it confirms the fall with conviction.
SELL Reversal — a green candle followed by a red one
DIR[1]==1 && DIR[0]==-1 @MARKET
Previous candle green + current one red = a possible start of a bearish reversal. DIR[N]==-1 = a red candle.
SELL Red candle (close below the open)
CLOSE[0]<OPEN[0] @MARKET
It sells when the current candle closes below its open — it confirms selling pressure in that period.
SELL A pending order at the previous high
DIR[0]==-1 @HIGH[1] -> SetVolume[0.01]
A red candle → it places a SellLimit at the previous candle's high. It waits for price to rise to that resistance to execute. SetVolume is mandatory on pending orders.

Pending orders (a specific price)

Replacing @MARKET with a price token creates a a pending order. The EA places the order and waits for the market to reach the level. SetVolume is required.
SELL SellStop below the current low
LOW[0]<LOW[1] @LOW[0] -> SetVolume[0.01]
It places a SellStop at the current candle's low. It only executes if price breaks below that level — it confirms the breakout before entering.
SELL SellLimit at the previous candle's close
LOW[0]<LOW[1] @CLOSE[1] -> SetVolume[0.01]
It waits for price to rise to the previous candle's close before going short. A pullback to the close in a downtrend.
SELL SellLimit at the high of two candles ago
DIR[0]==-1 @HIGH[2] -> SetVolume[0.01]
It places the sell at the high of two candles ago, a price level the expressions accept for pending orders.
SELL A grid of pendings at two resistances
VENDA [01]: DIR[0]==-1 @HIGH[1] -> SetVolume[0.01]
VENDA [02]: DIR[0]==-1 @HIGH[2] -> SetVolume[0.02]
Two SellLimits at different resistances: SELL1 at yesterday's high, SELL2 at the high of the day before with a larger volume. Selling in layers.
SELL&& A pending only inside the trading window
DIR[0]==-1 && TIME>=14.0 && TIME<=17.0
  @HIGH[1] -> SetVolume[0.01]
It only places the SellLimit in the afternoon (NY) session. Outside that window the condition is false and no pending order is created.

Hours, Day and Spread

SELL&& New York session (14:00–17:00)
LOW[0]<LOW[1] && TIME>=14.0 && TIME<=17.0 @MARKET
It only sells in the NY window — the most liquid session for assets like EURUSD and XAUUSD.
SELL&& Three descending lows + session
LOW[0]<LOW[1] && LOW[1]<LOW[2]
  && TIME>=9.0 && TIME<=17.0 @MARKET
A downtrend confirmed by 3 candles, valid only in the most liquid hours.
SELL&& Weekdays + low spread
LOW[0]<LOW[1] && DAY>=1 && DAY<=5 && SPREAD<20 @MARKET
DAY: 0=Sun, 1=Mon…5=Fri. It restricts sells to weekdays with an acceptable spread. It avoids weekends and low liquidity.
SELL&& Two time windows (morning/afternoon)
VENDA [01]: LOW[0]<LOW[1] && TIME>=9.0 && TIME<=12.0 @MARKET
VENDA [02]: LOW[0]<LOW[2] && TIME>=14.0 && TIME<=17.0 @MARKET
Two independent sell slots — morning and afternoon. Each SELL only opens inside its own window.

With News (NEWSIN)

SELL&& Avoid entering before news
LOW[0]<LOW[1] && NEWSIN[30]==0 @MARKET
NEWSIN[30]==0 = no news in the next 30 minutes. It protects sells from upward spikes caused by economic events.
SELL&& Hours + no news + spread
LOW[0]<LOW[1] && TIME>=9.0 && TIME<=17.0
  && NEWSIN[60]==0 && SPREAD<25 @MARKET
A triple quality filter: business hours + no news right now + an acceptable spread. A professional setup for sells.

With Indicators (IND1–IND30)

How to use indicators: Set IND1 up (e.g. RSI, M5, period 14) under INDICATORS FOR EXPRESSIONS SETUP in the EA parameters. Reach it with IND1[buffer, candle].
SELL RSI overbought (IND1=RSI)
IND1[0,0]>70 @MARKET
RSI above 70 = overbought. A reversal sell signal. Set: IND1 = RSI | NEW,SYMBOL,M5,14,0
SELL&& EMA crossing down
IND4[0,0]<IND5[0,0] && IND4[0,1]>=IND5[0,1] @MARKET
The fast EMA has just crossed below the slow one (it was above on the previous candle). A death cross. Set IND4=EMA9, IND5=EMA21.
SELL&& Stochastic overbought + Price Action
IND1[0,0]>80 && LOW[0]<LOW[1] @MARKET
Stoch > 80 (overbought) AND a falling low. Set: IND1 = STOCH | NEW,SYMBOL,M5,14,3,3,1
SELL&& MACD negative + falling
IND2[0,0]<0 && IND2[0,0]<IND2[0,1] @MARKET
The MACD histogram negative AND falling. Set: IND2 = MACD | NEW,SYMBOL,M5,12,26,9,0,0 (buffer 0 = the histogram)
SELL&& RSI + MACD + Price Action (multiple confirmation)
IND1[0,0]>60 && IND2[0,0]<IND2[0,1]
  && LOW[0]<LOW[1] @MARKET
Three confirmations: high RSI + MACD falling + a falling low. It reduces false sell signals.
SELL|| RSI OR Stochastic overbought
IND1[0,0]>70 || IND3[0,0]>80 @MARKET
With || (OR): it sells if ANY indicator flags overbought — more entries, less restrictive.

With the Secondary Asset A2 / A3

SELL&& A2 falling too (correlation)
LOW[0]<LOW[1] && A2LOW[0]<A2LOW[1] @MARKET
It sells the main asset only if A2 is falling too. Confirmation by correlation.
SELL Send the order straight to A2
LOW[0]<LOW[1] @A2MARKET
When the condition is true, it opens the sell on asset A2. It requires filling in ✏️ Secondary asset A2 (e.g. EURUSD, XAUUSD) and enabling ☑️ Allow order execution on A2 (@A2MARKET).
SELL&& Sell A1 AND A2 at the same time
VENDA [01]: LOW[0]<LOW[1] @MARKET
VENDA [02]: LOW[0]<LOW[1] @A2MARKET
SELL1 opens on A1, SELL2 opens on A2 on the same condition. It sells two assets with a single signal.
SELL&& A2 closing below the previous candle
LOW[0]<LOW[1] && A2CLOSE[0]<A2CLOSE[1] @MARKET
It uses A2CLOSE[N] on the parameter ✏️ A2 timeframe in EXPRESSIONS (A2HIGH, A2LOW, A2CLOSE, A2OPEN). Daily directional confluence between two correlated assets.

🟠 GROUP 3 — BUY EXITS

✏ BUY exit expression [01–10]
Important: The field BUY exit [01], [02] and so on. not closes only one specific position. It closes all the buys when the condition is true — unless you use CloseIndex[N] to point at a specific one.

By Profit and Loss

EXIT Close everything when total profit hits the target
BPROFIT>200 @BCLOSE
BPROFIT = the total profit of every open buy. It closes them all when the group reaches R$200.
EXIT Close only profitable buys
BPROFIT>100 @BCLOSE+
@BCLOSE+ closes only the buy positions that are in the black. The losing ones stay open.
EXIT Cut individual losing buys
BPROFIT < -30 @BCLOSE
With the individual filter: it closes each buy that on its own is losing more than -R$30.
EXIT Daily target reached → close everything
DPROFIT>500 @BCLOSE
DPROFIT = the day's accumulated profit (closed positions). It stops trading as soon as the target is reached.

By Technical Signal

EXIT Two red candles = exit
DIR[0]==-1 && DIR[1]==-1 @BCLOSE
It closes the buys when two red candles in a row point to a trend reversal.
EXIT RSI overbought → take profit
IND1[0,0]>75 @BCLOSE
It uses IND1 (RSI) to exit automatically when the market reaches the overbought zone.
EXIT Close before imminent news
NEWSIN[5]==1 @BCLOSE
NEWSIN[5]==1 = there is news in less than 5 minutes. It protects open positions from news spikes.
EXIT|| Exit on profit OR on reversal
BPROFIT>150 || DIR[0]==-1 && DIR[1]==-1 @BCLOSE
|| (OR): it closes if profit hit the target OR if two reds confirm a reversal. Whichever comes first.

Partial Close (ClosePercent)

EXIT Bank 50% of the profit
BPROFIT>100 @BCLOSE -> ClosePercent[50]
It closes only 50% of the volume when profit reaches R$100. The other 50% stays open for more gain.
EXIT Exit at 3 targets (scaled)
SAÍDA COMPRA [01]: IND1[0,0]>70 @BCLOSE -> ClosePercent[25]
SAÍDA COMPRA [02]: IND1[0,0]>75 @BCLOSE -> ClosePercent[33]
SAÍDA COMPRA [03]: IND1[0,0]>80 @BCLOSE -> ClosePercent[50]
SAÍDA COMPRA [04]: IND1[0,0]>85 @BCLOSE
Progressive banking: 25%, then 33%, then 50%, then the rest. It maximises profit without exiting all at once.
EXIT Weekend protection
DAY==5 && TIME>=16.0 @BCLOSE
It closes every buy on Friday after 16:00. It avoids holding a position through the weekend gap.
EXIT Close A2's buy
A2BPROFIT>80 @A2BCLOSE
It closes the buys open on asset A2 when their profit exceeds R$80.
EXIT Close only the buys of ONE entry
TIME>=17.0 @BCLOSE:2
The number after the trigger links the exit to a BUY expression: at 17:00 it closes only the buys that BUY expression [02] opened, and those of the other entries stay open. Works since robot 5.7.215 (before, it closed nothing). Positions you open by hand count as BUY [01].

🟠 GROUP 4 — SELL EXITS

✏ SELL exit expression [01–10]
Important: The field SELL exit [01], [02] and so on close all the sells when the condition is true — unless you use CloseIndex[N] to point at a specific position.

By Profit and Loss

EXIT Profit target on the sells
SPROFIT>200 @SCLOSE
SPROFIT = the total profit of every open sell. It closes them all when the group reaches R$200.
EXIT Close only profitable sells
SPROFIT>100 @SCLOSE+
@SCLOSE+ closes only the sell positions in the black. The losing ones stay open.
EXIT Cut individual losing sells
SPROFIT < -30 @SCLOSE
It closes individual sells losing more than -R$30. A controlled loss cut.
EXIT Daily target reached → close everything
DPROFIT>500 @SCLOSE
DPROFIT = the day's accumulated profit (closed positions). It stops the sells as soon as the daily target is hit.

By Technical Signal

EXIT Two green candles = reversal = exit the sell
DIR[0]==1 && DIR[1]==1 @SCLOSE
Two green candles = a possible reversal from down to up. It closes the sells before they turn into a loss.
EXIT RSI oversold = close the sell
IND1[0,0]<25 @SCLOSE
A very low RSI points to a possible upward reversal — time to close the sells before they turn.
EXIT Close before imminent news
NEWSIN[5]==1 @SCLOSE
NEWSIN[5]==1 = there is news in less than 5 minutes. It protects open sells from upward spikes caused by economic events.
EXIT|| Profit OR end of the day
SPROFIT>150 || TIME>=17.5 @SCLOSE
It closes the sells if the target was hit OR if it is past 17:30. A guaranteed exit before the day ends.
EXIT|| Exit on profit OR on reversal
SPROFIT>150 || DIR[0]==1 && DIR[1]==1 @SCLOSE
It closes if profit hit the target OR if two green candles confirm a reversal. Whichever comes first.

Partial Close (ClosePercent)

EXIT Bank 50% of the profit
SPROFIT>100 @SCLOSE -> ClosePercent[50]
It closes only 50% of the sells' volume when profit reaches R$100. The other 50% stays open for more gain.
EXIT Exit at 3 targets (scaled)
SAÍDA VENDA [01]: IND1[0,0]<30 @SCLOSE -> ClosePercent[25]
SAÍDA VENDA [02]: IND1[0,0]<25 @SCLOSE -> ClosePercent[33]
SAÍDA VENDA [03]: IND1[0,0]<20 @SCLOSE -> ClosePercent[50]
SAÍDA VENDA [04]: IND1[0,0]<15 @SCLOSE
Progressive banking using RSI: 25% on the first signal, then 33%, then 50%, then the rest. It maximises the profit from the downtrend.
EXIT Weekend protection
DAY==5 && TIME>=16.0 @SCLOSE
It closes every sell on Friday after 16:00. It avoids holding a short through the weekend gap.
EXIT Combined management: individual + global
SAÍDA VENDA [01]: SPROFIT > 5 @SCLOSE
SAÍDA VENDA [02]: SPROFITPOS > 50 @SCLOSE+
SAÍDA VENDA [03]: SPROFIT < -15 @SCLOSE
SAÍDA VENDA [04]: SPROFITALL < -100 @ALL
A complete system: it banks strong positions individually, closes the winners globally, cuts the bad ones, with a global emergency stop.
EXIT Volume balancing (incremental)
SAÍDA VENDA [01]: VOLSELL > VOLBUY @SCLOSE-
It closes sells one by one until the sell volume matches the buy volume. @SCLOSE- closes only the losing sells.
EXIT Close A2's sell
A2SPROFIT>80 @A2SCLOSE
It closes the sells open on asset A2 when their profit exceeds R$80. The same tokens exist for A3 with the A3.

🟣 GROUP 5 — MODIFYING SL, TP, BE and TS (MODIFY)

✏ (TP/SL/BE/TS) BUY/SELL expression [01–10]
In MT5 you see: "BUY PROTECTION SETUP (TP/SL/BE/TS)" and "SELL PROTECTION SETUP (TP/SL/BE/TS)" — fields ✏ Expressão de (TP/SL/BE/TS) COMPRA [01..10] and ✏ Expressão de (TP/SL/BE/TS) VENDA [01..10]

Available actions: SetSL[X] = sets the Stop Loss | SetBE[X] = Breakeven (entry ± X points) | SetTS[X] = Trailing Stop X points from price | SetTP[X] = redefines the Take Profit
@MODIFY = only on the positions of the entry with the same number, on A1 (the chart's asset) | @MODIFYALL = on every position of that side (buys or sells) | @A2MODIFY = applies only to A2's positions | @A3MODIFY = applies only to A3's positions
MODIFY Breakeven when profit hits the target
BPROFIT>50 @MODIFY -> SetBE
It moves the SL to the entry price (breakeven) when the buys reach R$50 of profit. It removes the risk of a loss.
MODIFY Breakeven with guaranteed profit (+10 pts)
BPROFIT>80 @MODIFY -> SetBE[10]
It moves the SL to the entry + 10 points. It guarantees a minimum profit even if price comes back.
MODIFY Automatic trailing stop
BPROFIT>100 @MODIFY -> SetTS[50]
It enables a trailing stop 50 points below the current price once profit reaches R$100. The SL follows price as it rises.
MODIFY SL at the previous candle's low
BPROFIT>30 @MODIFY -> SetSL[LOW[1]]
It moves the SL to a price-action reference — the previous candle's low is a natural support.
MODIFY Global protection for every position
BPROFIT>1 @MODIFYALL -> SetTS[50]
@MODIFYALL applies to EVERY open buy at once. It enables trailing on all of them as soon as any profit appears.
MODIFY Breakeven + dynamic TP together
BPROFIT>50 @MODIFY -> SetBE[10], SetTP[BID+200]
Two actions at once: it moves the SL to breakeven +10pts AND sets a dynamic TP 200 points above the current price.
MODIFY Progressive protection levels
PROTEÇÃO COMPRA [01]: BPROFIT>50  @MODIFY -> SetSL[BPRICE]
PROTEÇÃO COMPRA [02]: BPROFIT>100 @MODIFY -> SetSL[BPRICE+20]
PROTEÇÃO COMPRA [03]: BPROFIT>200 @MODIFY -> SetSL[BPRICE+50]
The SL rises progressively as profit grows. In the MODIFY, BPRICE = the entry price of each buy.
MODIFY Protect before news
NEWSIN[10]==1 && BPROFIT>0 @MODIFY -> SetSL[BPRICE+5]
If there is news in 10 minutes AND the position is profitable: it moves the SL to lock in at least 5 points of profit.

Sell protection — ✏ (TP/SL/BE/TS) SELL expression

Use SPROFIT (the sells' current profit), SPRICE (the sells' average entry price) and SLASTSELL (the price of the last sell opened). Those fields are under "SELL PROTECTION SETUP (TP/SL/BE/TS)" in MT5.
SELLMODIFY Breakeven on the sells
SPROFIT>50 @MODIFY -> SetBE
It moves the SL to the sell's entry price (breakeven) when the sells reach R$50 of profit. It removes the risk of turning into a loss.
SELLMODIFY Trailing stop on the sells
SPROFIT>80 @MODIFY -> SetTS[50]
It enables a trailing stop 50 points above the current price once the sells reach R$80. The SL follows price down as it falls.
SELLMODIFY SL at the previous candle's high
SPROFIT>30 @MODIFY -> SetSL[HIGH[1]]
It moves the SL to the previous candle's high — a natural price-action resistance. It protects the sell without an arbitrary fixed point.
SELLMODIFY Progressive sell protection
PROTEÇÃO VENDA [01]: SPROFIT>50  @MODIFY -> SetSL[SPRICE]
PROTEÇÃO VENDA [02]: SPROFIT>100 @MODIFY -> SetSL[SPRICE-20]
PROTEÇÃO VENDA [03]: SPROFIT>200 @MODIFY -> SetSL[SPRICE-50]
The SL moves progressively as profit grows. SPRICE = the sells' average entry price. SL-20 locks in 20pts of profit; SL-50 locks in 50pts.
SELLMODIFY BE + dynamic TP together
SPROFIT>60 @MODIFY -> SetBE[10], SetTP[ASK-300]
Two simultaneous actions: it moves the SL to breakeven +10pts AND redefines the TP 300 points below the current Ask. On sells, the TP sits below the current price.

Multi-symbol — @A2MODIFY and @A3MODIFY

@A2MODIFY and @A3MODIFY work exactly like @MODIFY, but they act on the secondary (A2) or tertiary (A3) asset's positions. They can go in any (TP/SL/BE/TS) BUY expression or SELL field — the action applies to the target asset's positions, not the current chart's.
MODIFYA2 Breakeven on A2's positions
A2BPROFIT>50 @A2MODIFY -> SetBE
It moves the SL to the entry price of A2's buys when those positions reach R$50 of profit. It does not touch A1's positions.
MODIFYA2 Trailing stop on A2's buys
A2BPROFIT>100 @A2MODIFY -> SetTS[60]
It enables a 60pt trailing stop on A2's buys once they reach R$100 of profit. A2BPROFIT specifically tracks the profit of the buys open on A2.
MODIFYA3 Breakeven on A3's positions
A3BPROFIT>40 @A3MODIFY -> SetBE[5]
It moves the SL to breakeven +5pts on A3's positions. It requires enabling ☑️ Allow order execution on A3 (@A3MARKET) and filling in ✏️ Tertiary asset A3 (e.g. GBPUSD, BTCUSD) in MT5.
MODIFYA2A3 Simultaneous protection on A1 + A2 + A3
PROTEÇÃO COMPRA [01]: BPROFIT>50   @MODIFY   -> SetBE
PROTEÇÃO COMPRA [02]: A2BPROFIT>50 @A2MODIFY -> SetBE
PROTEÇÃO COMPRA [03]: A3BPROFIT>40 @A3MODIFY -> SetBE[5]
Three independent slots protect each asset at the same time: A1 via @MODIFY, A2 via @A2MODIFY, A3 via @A3MODIFY. Each fires when its own profit hits the target.
MODIFYA2 Trailing on A2's sells
A2SPROFIT>80 @A2MODIFY -> SetTS[50]
Trailing on the sells open on A2. Use A2SPROFIT to track the profit of A2's sells and @A2MODIFY so the action applies to those positions.

🔵 GROUP 6 — DYNAMIC VOLUME (SetVolume)

used together with @MARKET
Careful: Martingale and grid amplify both profits and losses. Always set a maximum volume limit (BVOLO < 0.5) and a global stop (BPROFIT < -1000 @BCLOSE) to protect the account.
VOL A fixed volume on every entry
HIGH[0]>HIGH[1] @MARKET -> SetVolume[0.02]
It always enters with 0.02 lots, regardless of history. Simple and predictable.
VOL Classic martingale (doubles the volume)
COMPRA [01]: LOW[0]<LOW[1] @MARKET -> SetVolume[0.01]
COMPRA [02]: LOW[0]<LOW[2] @MARKET -> SetVolume[BVOLO*2]
COMPRA [03]: LOW[0]<LOW[3] @MARKET -> SetVolume[BVOLO*2]
COMPRA [04]: LOW[0]<LOW[4] @MARKET -> SetVolume[BVOLO*2]
BVOLO = the total volume of open buys. Sequence: 0.01 → 0.02 → 0.04 → 0.08. Each new BUY doubles the total.
VOL Moderate grid (+50% per level)
COMPRA [01]: LOW[0]<LOW[1] @MARKET -> SetVolume[0.02]
COMPRA [02]: LOW[0]<LOW[2] @MARKET -> SetVolume[BVOLO*1.5]
COMPRA [03]: LOW[0]<LOW[3] @MARKET -> SetVolume[BVOLO*1.5]
A gentler scale: 0.02 → 0.03 → 0.045. Less aggressive than doubling, safer for smaller accounts.
VOL Martingale with a maximum-volume guard
COMPRA [01]: LOW[0]<LOW[1] @MARKET -> SetVolume[0.01]
COMPRA [02]: LOW[0]<LOW[2] && BVOLO<0.5 @MARKET -> SetVolume[BVOLO*2]
COMPRA [03]: LOW[0]<LOW[3] && BVOLO<1.0 @MARKET -> SetVolume[BVOLO*2]
BUY2 only executes if the total open volume is under 0.5 lots. BUY3 only if under 1.0. A safety ceiling.
VOL Automatic position equalising
# If there are more buys than sells, sell the difference
VENDA [01]: VOLBUY>VOLSELL && DIR[0]==-1
  @MARKET -> SetVolume[VOLBUY-VOLSELL]
It uses arithmetic between volumes: it sells exactly the difference to even out buys and sells.
VOL Grid + scaled exit (complete)
COMPRA [01]: LOW[0]<LOW[1] @MARKET -> SetVolume[0.01]
COMPRA [02]: LOW[0]<LOW[2] @MARKET -> SetVolume[BVOLO*2]
COMPRA [03]: LOW[0]<LOW[3] @MARKET -> SetVolume[BVOLO*2]
SAÍDA COMPRA [01]: BPROFIT>30  @BCLOSE -> ClosePercent[40]
SAÍDA COMPRA [02]: BPROFIT>80  @BCLOSE -> ClosePercent[60]
SAÍDA COMPRA [03]: BPROFIT>150 @BCLOSE
A 3-level grid with progressive exits: it banks partially as profit grows and closes everything at the final target.

📊 GROUP 7 — HISTORICAL VARIABLES (D*, W*, L*)

daily and weekly performance analysis
HIST Stops the automation when the daily target is hit
# Em EXIT_BUY e EXIT_SELL
DPROFIT>500 @ALL
DPROFIT = the day's accumulated profit (closed positions). It closes everything when the target is hit.
HIST No more entries after 3 losses
HIGH[0]>HIGH[1] && DLOSSES<3 @MARKET
DLOSSES = the number of losing trades in the day. It stops entering automatically after 3 consecutive losses.
HIST A bigger volume when the day is positive
COMPRA [01]: LOW[0]<LOW[1] && DPROFIT<50
  @MARKET -> SetVolume[0.01]
COMPRA [02]: LOW[0]<LOW[1] && DPROFIT>=50
  @MARKET -> SetVolume[0.02]
It increases the volume once the day is already profitable. It rides the positive momentum with more size.
HIST Only trade if the week is positive
HIGH[0]>HIGH[1] && WPROFIT>0 @MARKET
WPROFIT = the week's accumulated profit. It opens no new positions while the week is still in the red.
HIST React to the last trade's result
COMPRA [01]: HIGH[0]>HIGH[1] && LPROFIT>=0
  @MARKET -> SetVolume[0.01]
COMPRA [02]: HIGH[0]>HIGH[1] && LPROFIT<0
  @MARKET -> SetVolume[0.02]
LPROFIT = the result of the last closed position. If it was a WIN, it keeps 0.01. If it was a LOSS, it doubles to recover.
HIST A cap on trades per day
HIGH[0]>HIGH[1] && DTRADES<15 @MARKET
DTRADES = the total trades closed in the day. It prevents overtrading by capping the number of trades.

⭐ GROUP 8 — COMPLETE STRATEGIES

in the Web Dashboard (licensed)
🔒 The full strategy arsenal — every setup from the great traders (Hall of Fame), the complete strategies and the advanced .set files live in the Web Dashboard, exclusive to those with an active licence (a live account). See plans →

🔀 GROUP 9 — MULTI-SYMBOL (A2 / A3)

secondary and tertiary assets — v5.8+
Set ✏️ Secondary asset A2 (e.g. EURUSD, XAUUSD) and/or ✏️ Tertiary asset A3 (e.g. GBPUSD, BTCUSD) in the EA parameters. The timeframe of the candle tokens (A2HIGH, A2CLOSE and so on) is set in ✏️ A2 timeframe in EXPRESSIONS (A2HIGH, A2LOW, A2CLOSE, A2OPEN) / ✏️ A3 timeframe in EXPRESSIONS (A3HIGH, A3LOW, A3CLOSE, A3OPEN) (default: D1). Current-price and performance tokens (e.g. A2DPROFIT) are independent of the TF. The EA also exposes aliases S2_* / S3_* for the historical families, current price and positions; for candle series, use the documented tokens A2HIGH[N], A2CLOSE[N], A3HIGH[N] and A3CLOSE[N].

A2/A3 confirmations supported in expressions

A2/A3 volume: A2TVOL[N] and A2RVOL[N] (and A3TVOL[N] / A3RVOL[N]) read the candle volume of the secondary/tertiary asset, on the same timeframe as its candles, also inside math, since robot 5.7.215. The candle direction (DIR[N]) is still only for the main asset.
BUYA2 A2's direction confirms the breakout
HIGH[0]>HIGH[1] && A2CLOSE[0]>A2CLOSE[1] @MARKET
It buys A1 only when A2's close is also advancing, on the parameter ✏️ A2 timeframe in EXPRESSIONS (A2HIGH, A2LOW, A2CLOSE, A2OPEN).
BUYA2 A2's daily history unlocks the entry
HIGH[0]>HIGH[1]
  && A2DPROFIT>0
  && A2DLOSSES<3 @MARKET
It trades A1 only when A2 is positive on the day and has not yet exceeded the defined loss limit.
SELLA2 A confirmed fall with A2's spread under control
LOW[0]<LOW[1]
  && A2CLOSE[0]<A2CLOSE[1]
  && A2SPREAD<30 @MARKET
It confirms weakness on A2 and avoids executing while the secondary asset's spread is above the limit.
EXITA2 Bank the open profit on A2
A2BPROFIT>80
  && A2BUYCOUNT>0 @A2BCLOSE
It closes the buys open on asset A2 when their combined profit reaches the target.
A2A3 Triple directional confirmation
TVOL[0]>TVOL[1]
  && HIGH[0]>HIGH[1]
  && A2CLOSE[0]>A2CLOSE[1]
  && A3CLOSE[0]>A3CLOSE[1] @MARKET
TVOL filters activity on A1 only; A2 and A3 confirm through their candles' closes.
EXITA3 Manage the third asset's result
A3SPROFIT>80
  && A3SELLCOUNT>0 @A3SCLOSE
It uses the A3 family that is actually implemented to close profitable sells on the tertiary asset.

Performance and management via A2

BUYA2 Trade A1 only if A2 was profitable today
HIGH[0]>HIGH[1] && A2DPROFIT>0 @MARKET
A2DPROFIT = A2's accumulated profit for the day. Useful when A2 is a reference index (e.g. WIN) and A1 is a correlated asset.
BUYA2 Pause A1 if A2 has too many open positions
HIGH[0]>HIGH[1] && A2BUYCOUNT<3 @MARKET
A2BUYCOUNT = the number of open buys on A2. It caps total exposure when A1 and A2 share margin.
A2 Hedge — sell A2 in proportion to the A1 buy
VENDA [03]: VOLBUY>0 @A2MARKET
  -> SetVolume[VOLBUY]
It opens a sell on A2 with the same volume held long on A1 (VOLBUY). An automatic directional hedge.
HISTA2 Stop A1 if A2's week is negative
HIGH[0]>HIGH[1] && A2WPROFIT>-100 @MARKET
A2WPROFIT = A2's accumulated weekly profit. It filters A1 entries based on the correlated asset's weekly performance.
EXITA2 Close A2 on profit — exit options
SAÍDA COMPRA [02]: A2BPROFIT>80  @A2BCLOSE
SAÍDA COMPRA [03]: A2BPROFIT>20  @A2BCLOSE+
SAÍDA VENDA [02]: A2SPROFIT>80 @A2SCLOSE
SAÍDA COMPRA [04]: TIME>=17.0    @A2ALL
@A2BCLOSE closes every A2 buy · @A2BCLOSE+ closes only the profitable ones · @A2ALL closes everything on A2. The same tokens exist for A3.
A2 Filter by how long A2's position has been open
COMPRA [05]: HIGH[0]>HIGH[1]
  && A2POSTIME>30 @MARKET
A2POSTIME = the age in minutes of A2's most recent position. It only enters A1 if A2 has had a position open for at least 30 min.
BUYA2 Confirmation by A2's candle strength
HIGH[0]>HIGH[1] && A2BODY[1]>A2BODY[2]*2 @MARKET -> SetVolume[0.01]
A2BODY[N] = the absolute body of A2's candle N, on the parameter ✏️ A2 timeframe in EXPRESSIONS (A2HIGH, A2LOW, A2CLOSE, A2OPEN). It breaks A1's high and A2's previous candle body doubled — it confirms strength in the reference asset (e.g. WIN with DOL backing it).
BUYA3 Volatility expanding on A3
CLOSE[1]>OPEN[1] && A3RANGE[0]>A3RANGE[1]*1.5 @MARKET -> SetVolume[0.01]
A3RANGE[N] = the range (high−low) of A3's candle N. It enters A1 only when A3 starts moving 50% more than the previous candle — useful for using a VIX/volatility index as a trigger.

Complete multi-asset strategies

BUYSELLA2 B3 — WIN/DOL: the index confirmed by the dollar
# A1=WIN, A2=DOL, Timeframe do A2 nas EXPRESSOES = M5
# Buy the index when the dollar pulls back
COMPRA [01]:  HIGH[0]>HIGH[1]
       && A2CLOSE[0]<A2CLOSE[1] @MARKET

# Sell the index when the dollar rises
VENDA [01]: LOW[0]<LOW[1]
       && A2CLOSE[0]>A2CLOSE[1] @MARKET

SAÍDA COMPRA [01]:  BPROFIT>200 @BCLOSE
SAÍDA VENDA [01]: SPROFIT>200 @SCLOSE
SAÍDA COMPRA [02]:  A2CLOSE[0]>A2CLOSE[1] @BCLOSE
SAÍDA VENDA [02]: A2CLOSE[0]<A2CLOSE[1] @SCLOSE
The inverse WIN×DOL correlation. The A1 entry is confirmed by A2's candle direction, a series genuinely available in expressions. A crossed technical exit: it closes A1's position when A2 reverses. Set A2=DOL in ✏️ Secondary asset A2 (e.g. EURUSD, XAUUSD) and M5 in ✏️ A2 timeframe in EXPRESSIONS (A2HIGH, A2LOW, A2CLOSE, A2OPEN).
BUYA2A3 A 3-asset portfolio with independent management
# A1=XAUUSD, A2=EURUSD, A3=BTCUSD
COMPRA [01]: HIGH[0]>HIGH[1] && A2DPROFIT>0 @MARKET
COMPRA [02]: A2CLOSE[0]>A2CLOSE[1] && A3BUYCOUNT<2 @A2MARKET -> SetVolume[0.01]
COMPRA [03]: DIR[0]==1 && A3CLOSE[0]>A3CLOSE[1] @A3MARKET -> SetVolume[0.001]

SAÍDA COMPRA [01]: BPROFIT>150   @BCLOSE
SAÍDA COMPRA [02]: A2BPROFIT>80  @A2BCLOSE
SAÍDA COMPRA [03]: A3BPROFIT>200 @A3BCLOSE
SAÍDA COMPRA [04]: DPROFIT>800   @ALL
It manages 3 assets with a single EA. A1 trades if A2 is positive on the day. A2 considers A3's positions before entering. A global daily target of R$800 closes everything. Each asset has its own independent exit. It requires enabling ☑️ Allow order execution on A2 (@A2MARKET) and ☑️ Allow order execution on A3 (@A3MARKET).

🧠 TIMING, RISK AND CAT 10

Buffers 430–448 · A1 confirmed in the EA
Confirmed in the EA's code: these variables were added to the expression system in MQL PRO TRADER [pt].mq5 and can be used in expressions. The risk/tracking variables are A1-only; @CancelPending, @CloseBest and @CloseWorst are special exit commands for the main asset.

⚠️ All three act on ANY order or position of A1, not just the robot's. The ones you opened by hand (in MT5, on your phone, through the ticket) and those of another robot on the same asset count too. This is on purpose: you can open a manual order and let the robot close it — or cancel the pending order — when an event happens (a news item, a time of day, a high spread). If you trade by hand on the same chart and don't want that, don't use these three commands there — or turn on ☑️ Only manage positions the robot opened (not manual ones).
GroupVariablesQuick use
TimingNOVOBAR, BARSEGTrade once per candle or wait for the bar to mature.
SessionsSESS_ASIA, SESS_LONDRES, SESS_NYFilter by session without writing times by hand.
SpreadSPREADMED, SPREADXAvoid trading when the spread is above normal for that asset.
NewsNEWSIMP, NEWSCTYTell a generic high-impact news item from one that affects the current pair.
A1 riskRISCO_AB, ALVO_AB, DIST_SL, DIST_TP, RMULTManage the position by risk, target and R multiples.
Streak/MAE/MFESEQWIN, SEQLOSS, POSMIN, POSMAXFilter win/loss streaks and protect against giving profit back.
ExecutionSetRiscoPct[X], @CancelPending, @CloseBest, @CloseWorstLot by risk % and special exit commands.
BUY New bar with confirmation
NOVOBAR==1 && CLOSE[1]>OPEN[1] @MARKET -> SetVolume[0.01]
It fires only on the new bar's first tick and uses the already closed previous candle to decide.
BUY&& Session + normal spread
SESS_LONDRES==1 && SPREADX<1.3 && CLOSE[0]>HIGH[1] @MARKET
It buys the breakout only in London and with the spread at most 30% above the recent norm.
EXIT Partial at 1R
RMULT>=1 @BCLOSE -> ClosePercent[50]
RMULT>=2 @BCLOSE
It closes half the buys at 1R and the rest at 2R. It requires a position with a tracked initial SL.
EXIT Protection against relevant news
NEWSIMP==3 && NEWSCTY==1 @CancelPending
It cancels A1's pending orders when the next news item is high impact and affects the current pair. It cancels all of A1's pending orders, including the ones you placed by hand.
RISK Volume by risk percentage
NOVOBAR==1 @MARKET -> SetSL[500] SetRiscoPct[1]
The EA calculates the lot to risk 1% of the balance, based on the SL given in the expression.
EXIT Bank the best or cut the worst
PFDIA>2 && BUYCOUNT>=2 @CloseBest
SEQLOSS>=2 && BUYCOUNT>=2 @CloseWorst
It closes A1's most profitable position on a strong day, or cuts the biggest loser after a bad streak. It picks among all of A1's positions, including the ones opened by hand.

📊 INTERNAL INDICATORS IN EXPRESSIONS

VWAP · POC · Ichimoku · Fibo · Bollinger · ORB · Value Area · Candle Patterns
PHASE C exposes internally calculated technical indicators directly in expressions, as numeric variables. Use them like any price value: CLOSE[0]>VWAP, TENKAN>KIJUN, ENGULF1==1. Requirement: enable the matching parameter in the EA: ☑️ Enable VWAP (volume weighted average price), ☑️ Enable POC — the price with the largest traded volume, ☑️ Enable Ichimoku — Japanese trend cloud, ☑️ Enable automatic Fibonacci (finds top and bottom), ☑️ Enable Bollinger, ☑️ AI receives market VOLATILITY reading, ☑️ AI detects COMPRESSION before explosive moves, ☑️ ⬜ Enable Opening Range — uses ORBHIGH and ORBLOW in conditions, ☑️ ⬜ Enable Value Area — uses VAHIGH and VALOW in conditions or ☑️ ⬜ EXPRESSIONS ONLY: numeric vars DOJI, PINBAR, ENGULF.

VWAP and Volume Profile

BUYSELLVWAP Directional filter by VWAP
# Buy only above VWAP — the institutional side
COMPRA [01]: HIGH[0]>HIGH[1] && CLOSE[0]>VWAP @MARKET
# Sell only below VWAP
VENDA [01]:  LOW[0]<LOW[1]  && CLOSE[0]<VWAP @MARKET
The VWAP splits the market between institutional buyers and sellers — being above it means the bulls are in control. Use it as a directional filter: never buy below the VWAP. It requires enabling ☑️ Enable VWAP (volume weighted average price).
BUYPOC Rejection at the POC support
NOVOBAR==1 && LOW[1]<=POC && CLOSE[1]>POC @MARKET
The POC (Point of Control) is the level with the largest traded volume — it acts as strong support. The previous candle touched the POC but closed above it = a support rejection plus bullish confirmation. It requires enabling ☑️ Enable POC — the price with the largest traded volume.
BUYVA Entry at the edge of the Value Area
NOVOBAR==1 && LOW[1]<=VALOW && CLOSE[1]>VALOW
  && BID>VWAP @MARKET
The Value Area holds 70% of the volume — its limits (VALOW/VAHIGH) are high-confidence supports/resistances. A touch + a rejection + VWAP confirmation = an entry with context. It requires enabling ☑️ ⬜ Enable Value Area — uses VAHIGH and VALOW in conditions and ☑️ Enable VWAP (volume weighted average price).

Opening Range Breakout (ORB)

BUYSELLORB Break of the opening range
# Bullish breakout — price clears the ORB high
COMPRA [01]: ASK>ORBHIGH && CLOSE[0]>ORBHIGH @MARKET
# Bearish breakout — price breaks the ORB low
VENDA [01]:  BID<ORBLOW  && CLOSE[0]<ORBLOW  @MARKET
The Opening Range is the range of the session's first minutes. Breaking it tends to produce directional moves. Set the duration in ✏️ 📐 Range duration in minutes after the open (default 15). It requires enabling ☑️ ⬜ Enable Opening Range — uses ORBHIGH and ORBLOW in conditions.
BUYORB Pullback to the ORB as support
NOVOBAR==1 && LOW[1]<=ORBHIGH
  && CLOSE[1]>ORBHIGH @MARKET
After the ORB breaks, price often comes back to test the level as support. A candle touches ORBHIGH but closes above it = a rejection plus a confirmed pullback.

Ichimoku and Fibonacci

BUYSELLICH Trend from the Tenkan × Kijun crossover
# Uptrend: Tenkan above Kijun + price above the cloud
COMPRA [01]: TENKAN>KIJUN && CLOSE[0]>KUMOTOP
  && HIGH[0]>HIGH[1] @MARKET
# Downtrend: Tenkan below Kijun + price below the cloud
VENDA [01]:  TENKAN<KIJUN && CLOSE[0]<KUMOBOT
  && LOW[0]<LOW[1] @MARKET
TENKAN=the conversion line (9 per.); KIJUN=the base line (26 per.); KUMOTOP/KUMOBOT=the cloud's limits. Triple confirmation: the crossover + the cloud position + a candle breakout. It requires enabling ☑️ Enable Ichimoku — Japanese trend cloud.
BUYSELLICH Filter by the cloud's colour (SENKOUA × SENKOUB)
# Green cloud (bullish) + price above + Tenkan > Kijun
COMPRA [01]: SENKOUA>SENKOUB && CLOSE[0]>KUMOTOP
  && TENKAN>KIJUN @MARKET
# Red cloud (bearish) + price below + Tenkan < Kijun
VENDA [01]:  SENKOUA<SENKOUB && CLOSE[0]<KUMOBOT
  && TENKAN<KIJUN @MARKET
SENKOUA > SENKOUB = a green cloud (bullish kumo, Span A above Span B); SENKOUA < SENKOUB = a red cloud (bearish). The classic triple confirmation: the cloud's colour + price position + the Tenkan/Kijun crossover. It requires enabling ☑️ Enable Ichimoku.
BUYFIBO Rejection at the 61.8% retracement
NOVOBAR==1 && LOW[1]<=FIBO618
  && CLOSE[1]>FIBO618 && DIR[1]==1 @MARKET
61.8% is the most respected Fibonacci retracement level. The previous candle touched the level and closed above it (green) = a rejection plus confirmation. Also use FIBO382 and FIBO500. It requires enabling ☑️ Enable automatic Fibonacci (finds top and bottom).

Bollinger Bands and the volatility regime

BUYSELLBB Reversal at the extreme bands
# Touch of the lower band + green candle = bullish reversal
COMPRA [01]: LOW[1]<=BBLOWER && DIR[0]==1 @MARKET
# Touch of the upper band + red candle = bearish reversal
VENDA [01]:  HIGH[1]>=BBUPPER && DIR[0]==-1 @MARKET
# Exit: price returns to the average (BBMIDDLE)
SAÍDA COMPRA [01]: CLOSE[0]>=BBMIDDLE @BCLOSE
SAÍDA VENDA [01]:  CLOSE[0]<=BBMIDDLE @SCLOSE
The bands mark price's statistical range. Touches at the extremes tend to revert to the mean (BBMIDDLE). Exiting at the mean maximises the move. It requires enabling ☑️ Enable Bollinger.
BUYBB Post-squeeze entry (BBSQZ + ATRREG)
# Waits for the squeeze to release + volatility expanded
COMPRA [01]: BBSQZ==-1 && ATRREG==1
  && HIGH[0]>HIGH[1] && CLOSE[0]>BBMIDDLE @MARKET
BBSQZ==1=squeeze (accumulation), BBSQZ==-1=expansion. ATRREG==1=expanded volatility, ATRREG==0=normal and ATRREG==2=calm/compressed. It requires enabling ☑️ AI detects COMPRESSION before explosive moves, ☑️ AI receives market VOLATILITY reading and ☑️ Enable Bollinger.

Candle patterns — intrabar and confirmed

Intrabar vs confirmed: DOJI, PINBAR, ENGULF read the candle still forming — faster, but the pattern can unwind before it closes. DOJI1, PINBAR1, ENGULF1 read the candle closed [1] — always use it with NOVOBAR==1. It requires enabling ☑️ ⬜ EXPRESSIONS ONLY: numeric vars DOJI, PINBAR, ENGULF.
BUYSELLCANDLE Pin Bar — a level rejection
# Intrabar (faster, with no guarantee it closes there)
COMPRA [01]: PINBAR==1 && CLOSE[0]>VWAP @MARKET
# Confirmed — entry on the next candle (safer)
COMPRA [02]: NOVOBAR==1 && PINBAR1==1 @MARKET
VENDA [01]:  NOVOBAR==1 && PINBAR1==-1 @MARKET
PINBAR1==1=a bullish pin bar (a long lower wick = a support rejection); PINBAR1==-1=a bearish pin bar (a resistance rejection). A strong reversal signal — widely taught by price action traders.
BUYSELLCANDLE Confirmed engulfing (ENGULF1)
# Bullish engulfing — the closed candle engulfed the previous one
COMPRA [01]: NOVOBAR==1 && ENGULF1==1 @MARKET
# Bearish engulfing — confirmed at the close
VENDA [01]:  NOVOBAR==1 && ENGULF1==-1 @MARKET
# Exit when an engulfing appears in the opposite direction
SAÍDA COMPRA [01]: ENGULF1==-1 @BCLOSE
SAÍDA VENDA [01]:  ENGULF1==1  @SCLOSE
Engulfing is one of the best known reversal patterns: the current candle completely swallows the previous one's body. ENGULF1==1=a confirmed bullish one; ENGULF1==-1=a confirmed bearish one. It matches the preset 18-engolfo-confirmado.set.
CANDLE Doji — indecision with context
# Confirmed doji + price above VWAP + higher high
COMPRA [01]: DOJI1==1
  && BID>VWAP && HIGH[0]>HIGH[1] @MARKET
The Doji signals balance — a minimal body. On its own it is not directional; it needs favourable context (VWAP, support, trend, a rising high) to become a reliable buy or sell signal.

📈 MULTI-TIMEFRAME PRICE ACTION — DAILY, WEEKLY, GAPS, PIVOTS AND PSYCHOLOGICAL LEVELS

DOPEN · DHIGH · WCLOSE · DAYCHG · GAPPCT · PIVOT · ROUND · ROC · FIBHIGH · VWAPUP
These variables return data for the whole day, the week or history, even with the chart on a small timeframe (M1, M5). They work on any asset: WIN, WDO, EURUSD, XAUUSD, BTCUSD. They all accept the [N] parameter where it makes sense: for OHLC it is a shift into past days/weeks; for ROUND/DISTROUND/NEARROUND it is the step in the symbol's points; for ROC/FIBHIGH it is the window size.

Breaking the day's high and low (DHIGH / DLOW)

BUYDAY Break of the day's high
COMPRA [01]: ASK>DHIGH && CLOSE[0]>DHIGH @MARKET
It enters when price exceeds the day's recorded high — the classic intraday breakout. It works on any TF because DHIGH is always the whole day's high.
SELLDAY Lost the day's low
VENDA [01]: BID<DLOW && CLOSE[0]<DLOW @MARKET
Breaking the day's low opens room for a bearish continuation. Combine it with DAYCHG<-0.5 to confirm weakness.
BUY&& Broke yesterday's high (PDH)
COMPRA [01]: NOVOBAR==1 && CLOSE[1]>YHIGH && CLOSE[0]>YHIGH @MARKET
It confirms a break of the previous day's high (YHIGH = PDH) with two closes above it. A strong setup on shares and indices.
SELL&& Lost yesterday's low (PDL)
VENDA [01]: NOVOBAR==1 && CLOSE[1]<YLOW && CLOSE[0]<YLOW @MARKET
The mirror of the above: two candles closed below YLOW (PDL) open a short. Use a TP at S1 or S2.
BUYDAY Pullback to the day's open
COMPRA [01]: NOVOBAR==1 && LOW[1]<=DOPEN && CLOSE[1]>DOPEN && DAYCHG>0 @MARKET
On an up day (DAYCHG>0), a pullback to the open (DOPEN) plus a rejection = a good entry with the daily trend.
EXIT Bank profit on the break of the day's high
SAÍDA COMPRA [01]: ASK>=DHIGH[1] @BCLOSE -> ClosePercent[50]
It closes half the position when price reaches yesterday's high (DHIGH[1]) — a natural resistance level. DHIGH[N] = the high from N days ago.

Weekly levels (WOPEN / WHIGH / WLOW / WCLOSE)

BUYWEEK Break of the week's high
COMPRA [01]: NOVOBAR==1 && CLOSE[1]>WHIGH[1] && CLOSE[0]>WHIGH[1] @MARKET
Breaking last week's high (WHIGH[1]) is a highly significant weekly level — used by swing and position traders.
SELLWEEK Break of the weekly low
VENDA [01]: NOVOBAR==1 && CLOSE[1]<WLOW[1] && CLOSE[0]<WLOW[1] @MARKET
Losing last week's low (WLOW[1]) signals the weekly bias turning bearish.
BUY&& This week's high + above the VWAP
COMPRA [01]: ASK>WHIGH && BID>VWAP @MARKET
It combines a break of the current weekly high (WHIGH) with an intraday trend filter (VWAP). It requires ☑️ Enable VWAP.
EXIT TP at the previous weekly close
SAÍDA COMPRA [01]: ASK>=WCLOSE[1] @BCLOSE
It uses last week's close as a natural target — a level the whole institutional market watches.

The day's percentage change (DAYCHG / YCHG)

BUY% Bullish trend day (already up >1%)
COMPRA [01]: DAYCHG>1 && HIGH[0]>HIGH[1] @MARKET
It only goes long on days when the asset is already up more than 1% — it follows the day's strong trend instead of trying to buy the bottom.
SELL% Bearish trend day (already down >1%)
VENDA [01]: DAYCHG<-1 && LOW[0]<LOW[1] @MARKET
The mirror — it only sells on days already down more than 1%. Combine it with CLOSE[0]<VWAP to reinforce it.
% Filter: avoid a flat day
COMPRA [01]: DAYCHG>0.3 && HIGH[0]>HIGH[1] @MARKET
It only buys on days up at least 0.3% with a break of the previous high — it avoids dead or falling sessions. For a two-sided filter, use DAYCHG>0.3 || DAYCHG<-0.3. Useful for WIN, EURUSD and so on.
BUY&& Continuation after a strong day (YCHG)
COMPRA [01]: YCHG>2 && DAYCHG>0 && CLOSE[0]>DOPEN @MARKET
Yesterday was up more than 2% (YCHG) and today is still positive — a momentum setup between sessions.
EXIT Bank at a % target for the day
SAÍDA COMPRA [01]: DAYCHG>=2 @BCLOSE
It closes everything when the asset reaches +2% on the day — a day-trading target independent of individual P&L.
% Post-exhaustion reversal (DAYRNGPCT)
COMPRA [01]: DAYCHG<-2 && DAYRNGPCT>3 && CLOSE[1]>OPEN[1] && NOVOBAR==1 @MARKET
A very stretched day (range >3%) and down more than 2%, with the previous candle green = the first buying reaction. A counter-trend setup for cyclical assets.

X% drop from the N-day high, average range and exhaustion (DHIGHN / ADRPCT / ADRUSED / ZCHG)

How much does your asset move per day? In the dashboard chat, the command /variaveis shows live the average range in % (ADRPCT[14]), how much the day has already moved (ADRUSED[14]), the day's change (CHGPCT), where the price sits within the day (DPOS) and the drop in deviations (ZCHG[20]). Use these numbers to pick the X% for the recipes below, or leave X in P1 and optimize it in the tester.
BUY% Fell 10% from the 20-day high and reacted
COMPRA [01]: NOVOBAR==1 && BID<DHIGHN[20]*0.9 && CLOSE[1]>OPEN[1] @MARKET
A 10% correction from the high of the last 20 closed days (DHIGHN[20]), with the previous candle green. For a 5% correction, change 0.9 to 0.95.
BUY% Drop since the open, optimizable (P1)
COMPRA [01]: DAYCHG<-P1 && NOVOBAR==1 && CLOSE[1]>OPEN[1] @MARKET
The P1 comes from the F7 window (e.g. 1.5 = a 1.5% drop since the open). In the Strategy Tester, optimize P1 from 0.5 to 3 in steps of 0.25 and see which drop worked best on this asset.
BUY% 2% below yesterday's high (the % formula)
COMPRA [01]: (BID-YHIGH)/YHIGH*100<-2 && NOVOBAR==1 @MARKET
The % formula written out also works. It is the same as BID<YHIGH*0.98.
SELL% Upside exhaustion: the day has used up its average range
VENDA [01]: ADRUSED[14]>=100 && DPOS>=90 && NOVOBAR==1 && CLOSE[1]<OPEN[1] @MARKET
The day has already moved a whole 14-day average range (ADRUSED[14]>=100), the price is in the top 10% of the day's range (DPOS>=90) and the previous candle closed red: the first selling reaction after a stretched day.
BUY% Abnormal drop (2 deviations)
COMPRA [01]: ZCHG[20]<-2 && NOVOBAR==1 && CLOSE[1]>OPEN[1] @MARKET
Today's change is 2 standard deviations below the norm of the last 20 days. It is more robust than a fixed %: 2% is a lot for a calm asset and little for a volatile one.
BUY&& 3 down days in a row, then a turn
COMPRA [01]: DOWNDAYS>=3 && CHGPCT>0 @MARKET
After 3 lower closes in a row, today the price is already above yesterday's close.
% Filter: only trade an asset that moves enough
COMPRA [01]: ADRPCT[14]>1.5 && HIGH[0]>HIGH[1] @MARKET
Only enters if the asset moved, on average, more than 1.5% per day over the last 14 days. Avoids assets too quiet for the strategy's target.
EXIT Take profit when the day exhausts its average range
SAÍDA COMPRA [01]: ADRUSED[14]>=120 @BCLOSE -> ClosePercent[50]
Closes half of the buy when the day has moved 120% of the 14-day average range: from there the move tends to lose steam.
BUYDAY Breakout of the 20-day high (daily channel)
COMPRA [01]: NOVOBAR==1 && CLOSE[1]>DHIGHN[20] @MARKET
The previous candle closed above the high of the last 20 closed days: a daily channel breakout, on any chart timeframe.

Gap & Go / Gap Fill (GAPABS / GAPPCT / GAPATR / GAPATRW)

BUYGAP Bullish Gap & Go
COMPRA [01]: GAPPCT>0.5 && ASK>DHIGH @MARKET
A gap up of >0.5% plus a break of the day's high = the classic Gap & Go continuation. Used on shares and indices in the first hour.
SELLGAP Gap Down & Go
VENDA [01]: GAPPCT<-0.5 && BID<DLOW @MARKET
The mirror: a strong gap down plus losing the day's low. The selling acceleration typical of stressed sessions.
BUYGAP Gap Fill — closing a down gap
COMPRA [01]: GAPPCT<-0.3 && CLOSE[1]>OPEN[1] && NOVOBAR==1 @MARKET
SAÍDA COMPRA [01]: ASK>=YCLOSE @BCLOSE
After a gap down, the first green candle signals a reaction. Target: fill the gap at YCLOSE (yesterday's close). A setup widely used on the mini index.
SELLGAP Gap Fill — closing an up gap
VENDA [01]: GAPPCT>0.3 && CLOSE[1]<OPEN[1] && NOVOBAR==1 @MARKET
SAÍDA VENDA [01]: BID<=YCLOSE @SCLOSE
After a weak gap up, the first red candle plus a target at YCLOSE = catching the gap fill.
GAP A significant gap measured by ATR (SMA)
COMPRA [01]: GAPATR>1.5 && HIGH[0]>HIGH[1] @MARKET
GAPATR measures the gap in multiples of ATR(SMA,14 D1) — identical to MT5's native iATR . It filters automatically for the asset's volatility. GAPATR>1.5 = a gap that matters on any symbol.
GAP A gap measured by the Wilder ATR (SMMA)
COMPRA [01]: GAPATRW>1.5 && HIGH[0]>HIGH[1] @MARKET
GAPATRW uses the Wilder ATR (SMMA, 14 D1 periods) — a slower smoothing than the SMA, behaving exactly like the ATR Wilder described in New Concepts in Technical Trading Systems. In very volatile markets (BTC, stressed indices), GAPATRW tends to come out slightly lower than GAPATR.
GAP Ignore days without a gap
COMPRA [01]: GAPPCT<0.1 && GAPPCT>-0.1 && ASK>DHIGH @MARKET
A filter for sessions with no gap (a gap between -0.1% and +0.1%) — the break of the day's high tends to be cleaner, with no distortion from the open.

Classic Pivot Points (PIVOT / R1-R3 / S1-S3)

BUYPIVOT Bias above the Pivot Point
COMPRA [01]: BID>PIVOT && HIGH[0]>HIGH[1] @MARKET
It only buys with price above the central Pivot Point (PP) — the day's bullish bias confirmed.
SELLPIVOT Bias below the Pivot
VENDA [01]: BID<PIVOT && LOW[0]<LOW[1] @MARKET
The mirror: a bearish bias when price sits below the Pivot. A simple, powerful filter floor traders have used for decades.
BUYPIVOT Rejection at S1
COMPRA [01]: NOVOBAR==1 && LOW[1]<=S1 && CLOSE[1]>S1 @MARKET
The previous candle touched S1 (support) and closed above it = a confirmed rejection. The natural target: PIVOT or R1.
SELLPIVOT Rejection at R1
VENDA [01]: NOVOBAR==1 && HIGH[1]>=R1 && CLOSE[1]<R1 @MARKET
A rejection at R1 with the candle closing below = a sell setup. For something more aggressive, use R2 or R3.
EXIT A scaled target at R1/R2/R3
SAÍDA COMPRA [01]: ASK>=R1 @BCLOSE -> ClosePercent[33]
SAÍDA COMPRA [02]: ASK>=R2 @BCLOSE -> ClosePercent[50]
SAÍDA COMPRA [03]: ASK>=R3 @BCLOSE
Scaled banking at the three resistance levels. It closes 33% at R1, 50% of the rest at R2 and whatever is left at R3.
PIVOT Capitulation at S3
COMPRA [01]: BID<=S3 && DAYCHG<-2 && CLOSE[1]>OPEN[1] && NOVOBAR==1 @MARKET
Price extremely stretched (S3 plus a fall of more than 2%) with the first green candle = capitulation plus an attempted reversal. A risky counter-trend setup.

Cross-asset Round Numbers (ROUND / DISTROUND / NEARROUND)

How to choose N: N is always in the symbol's points. See the table below for per-asset presets. To find your asset's point: in MT5, open "Symbols" → "Specification" → look at "Tick size" and "Digits".
⚠️ Careful: "point" here is NOT the same point used by SetSL[]. This family is the only one in the robot that works on the symbol's raw decimal place (the point in MT5), and that is deliberate: a round number is a figure on the chart — $2.000, $2.010 —, so the step has to follow the price's decimals, not the trader's distance ruler.
In practice, on gold: ROUND[100] = US$ 1 (here each unit is worth $0.01), while SetSL[100] = US$ 100 (there each point is worth $1). The same number, two features, a hundredfold difference — and both are correct. If the arithmetic does not add up in your head, this is almost always why.
It applies to ROUND, DISTROUND and NEARROUND. Everything else in the robot — SL, TP, breakeven, trailing, pendings, time stop — uses the trader's ruler described in What "1 point" means in each market.
AssetSmall stepMedium stepLarge step (a figure)Note
WIN (B3 mini index)ROUND[100] (100 pts)ROUND[500] (500 pts)ROUND[1000] (a thousand — a figure)Tick = 5 pts
WDO (B3 mini dollar)ROUND[500] (R$ 0.50)ROUND[5000] (R$ 5)ROUND[10000] (R$ 10)Tick = 0.5 = 500 points (the mini dollar has 3 decimal places)
EURUSD / GBPUSDROUND[100] (10 pips)ROUND[500] (50 pips)ROUND[1000] (100 pips = a figure)5 digits: 1 pip = 10 pts
USDJPYROUND[100] (0,10 ¥)ROUND[500] (0,50 ¥)ROUND[1000] (1 ¥ = a figure)3 digits
XAUUSD (gold)ROUND[100] ($1)ROUND[500] ($5)ROUND[1000] ($10)2 digits ⇒ each unit = $0.01 (≠ the SetSL[], see the warning above)
BTCUSD (Bitcoin)ROUND[10000] ($100)ROUND[50000] ($500)ROUND[100000] ($1000)2 digits: adjust it if your broker uses a different tick
PETR4 / VALE3 (shares)ROUND[10] (R$ 0.10)ROUND[50] (R$ 0.50)ROUND[100] (R$ 1)Tick = 0.01
BUYROUND Breaking a figure on WIN
# WIN — broke a round number (multiple of 1000 pts)
COMPRA [01]: NOVOBAR==1 && CLOSE[1]>ROUND[1000] && CLOSE[0]>ROUND[1000] @MARKET
Two closes above a round figure level — a clear break of the psychological resistance.
ROUND Filter: avoid entering glued to a round number
COMPRA [01]: HIGH[0]>HIGH[1] && DISTROUND[100]>25 @MARKET
It only buys if price is more than 25 pts from the nearest multiple of 100 — it avoids entering right on a psychological resistance.
SELLROUND Selling right at a round figure
VENDA [01]: NEARROUND[1000]==1 && DIR[1]==-1 @MARKET
Price glued to a figure (on WIN: within 250 pts of a multiple of 1000) plus a red previous candle = the figure rejected as resistance.
EXIT TP at the next round number
SAÍDA COMPRA [01]: ASK>=ROUND[500]+500 @BCLOSE -> ClosePercent[50]
It banks 50% at the next multiple of 500 above the current round level. Adjust the step to the asset (see the table).
ROUND EURUSD at the figure (round number)
# EURUSD — entry/exit on round numbers (100 pips)
VENDA [01]: NEARROUND[1000]==1 && DIR[1]==-1 && CLOSE[0]<VWAP @MARKET
EURUSD on 5 digits: ROUND[1000] = a figure (1.0900, 1.1000...). It combines the figure's rejection with the intraday VWAP.
ROUND XAUUSD at round numbers
# XAU — entry when it breaks $10
COMPRA [01]: NOVOBAR==1 && CLOSE[1]>ROUND[1000] && CLOSE[0]>ROUND[1000] @MARKET
Gold: on ROUND each unit = $0.01, so ROUND[1000] = multiples of $10 ($2000, $2010, $2020...). Levels highly respected on XAU. (Do not confuse it with SetSL[1000], which on gold would be US$ 1,000 — see the warning at the top of this group.)

Accumulated momentum (ROC[N])

BUYROC Positive 5-day momentum
COMPRA [01]: ROC[5]>3 && HIGH[0]>HIGH[1] @MARKET
It only goes long if the asset has gained more than 3% over the last 5 days — a cross-asset momentum filter (it works on any symbol, any TF).
SELLROC Negative 10-day momentum
VENDA [01]: ROC[10]<-5 && LOW[0]<LOW[1] @MARKET
A cumulative fall of more than 5% over 10 days points to a strong trend — it sells on the break of the low.
ROC Weekly trend filter
COMPRA [01]: ROC[5]>0 && DAYCHG>0 && CLOSE[0]>DOPEN @MARKET
The trend aligned across three horizons: the week (ROC[5]>0), the day (DAYCHG>0) and the current bar. A very low drawdown setup.
ROC Reversal at extreme overbought
VENDA [01]: ROC[20]>15 && CLOSE[1]<OPEN[1] && NOVOBAR==1 @MARKET
A gain of more than 15% over 20 days is statistical exhaustion — the first red candle after such a rally signals a likely correction.

Rolling windows (FIBHIGH / FIBLOW)

BUYWIN Break of the 50-candle high
COMPRA [01]: ASK>=FIBHIGH[50] @MARKET
Donchian style: the high of the last 50 closed candles on the condition's TF. The classic breakout setup (Turtle Traders).
SELLWIN Lost the 20-candle low
VENDA [01]: BID<=FIBLOW[20] @MARKET
Breaking the low of the previous 20 candles — an inverted Turtle Soup. Combine it with a daily trend filter to reduce false signals.
EXIT Trailing by the N-candle low
SAÍDA COMPRA [01]: BID<=FIBLOW[10] @BCLOSE
A trailing stop based on the last 10 candles' low — a technical exit that respects market structure.
WIN Window squeeze (a short range)
COMPRA [01]: (FIBHIGH[20]-FIBLOW[20])<DAYRNG*0.3 && HIGH[0]>FIBHIGH[20] @MARKET
When the 20-candle range is worth less than 30% of the daily range, there is accumulation — breaking that window's high tends to explode.

VWAP statistical bands (VWAPUP1 / VWAPDN1 / VWAPUP2 / VWAPDN2)

BUYVWAP Touch of the lower band (1σ)
COMPRA [01]: LOW[1]<=VWAPDN1 && CLOSE[1]>VWAPDN1 && NOVOBAR==1 @MARKET
A touch plus a rejection of the ±1σ lower band — a mean-reversion entry (VWAP). It requires ☑️ Enable VWAP.
SELLVWAP Statistical overbought (2σ)
VENDA [01]: HIGH[1]>=VWAPUP2 && CLOSE[1]<VWAPUP2 && NOVOBAR==1 @MARKET
The ±2σ upper band represents statistical overbought — a touch plus a close below = a reversal. The classic mean-reversion setup.
EXIT TP at the mean (VWAP)
SAÍDA COMPRA [01]: ASK>=VWAP @BCLOSE
SAÍDA VENDA [01]:  BID<=VWAP @SCLOSE
After entering at the outer bands, the natural target is the return to the central VWAP. A complete mean-reversion strategy.
BUYVWAP Upper band breakout (continuation)
COMPRA [01]: CLOSE[1]>VWAPUP1 && CLOSE[0]>VWAPUP1 && DAYCHG>0.5 @MARKET
Two closes above the +1σ band on an already bullish day = a strong continuation (a trend day). The opposite of mean reversion.
VWAP Range between the bands (a neutral zone)
COMPRA [01]: BID>VWAPDN1 && BID<VWAPUP1 && HIGH[0]>HIGH[1] && CLOSE[0]>VWAP @MARKET
Price between the ±1σ bands plus a breakout plus above the VWAP = a range day with a bullish bias. It avoids the extremes.

Anchored VWAP — Daily / Weekly / Monthly (VWAPD / VWAPW / VWAPM)

Unlike the VWAP (rolling, which uses a number of candles), the VWAPD/VWAPW/VWAPM are anchored: they reset on their own at the start of the day, the week and the month — an institutional reference. They do not depend on a period (the inputs AI_VWAP_Period/AI_VWAP_Timeframe only affect the rolling VWAP). The AI also receives the anchored VWAP (price ABOVE/BELOW/TOUCHING) when ☑️ Send ANCHORED VWAP is on.

BUYVWAP Price above the daily VWAP
COMPRA [01]: CLOSE[0]>VWAPD @MARKET
Price above the day's VWAP = a bullish bias for the session. It requires ☑️ Enable VWAP.
SELLVWAP Price below the daily VWAP
VENDA [01]: CLOSE[0]<VWAPD @MARKET
Price below the day's VWAP = a bearish bias for the session.
VWAP Touch of the daily VWAP (the candle brushes it)
COMPRA [01]: LOW[0]<=VWAPD && HIGH[0]>=VWAPD @MARKET
The low is below and the high above the line = the candle touched the day's VWAP (a test/decision point).
BUYVWAP Daily + weekly alignment
COMPRA [01]: CLOSE[0]>VWAPD && VWAPD>VWAPW @MARKET
Price above the daily one and the daily one above the weekly = an uptrend aligned across two horizons.

⏳ PENDING ORDERS IN EXPRESSIONS — @LIMIT and @STOP

Breakout · Pullback · Straddle · Grid · $ notation (money)
How direction works: the type (limit/stop) comes from the command @ and the the direction (buy/sell) comes from the field (BUY or SELL). On a BUY: @LIMIT sits below price (a pullback) and @STOP sits above (a breakout). On a SELL it is the mirror: @LIMIT above, @STOP below.
The unit of [N]: log under points — the same ruler as SetSL[N], the trader's point. On XAUUSD 1 point = US$ 1.00, so @STOP[20] = US$ 20 of distance. You can also write it directly as a price value with $: on gold @STOP[$20] and @STOP[20] are the same thing (there 1 point is already worth 1 dollar); on assets where 1 point ≠ 1 unit of price — WIN$, EURUSD, shares — the two numbers differ, and $ is the one that speaks in price.
💡 If you built expressions before robot 5.7.95/5.7.109, re-read the numbers. In those versions the pendings measured in broker ticks and the same @STOP[2000] was worth US$ 20 on gold — today it is worth US$ 2,000. The ruler is now a single one across the whole robot.
📌 The examples in this group are calibrated for XAUUSD (1 point = US$ 1). On another asset, re-read the number using its own ruler before pasting.
BUYSELLPENDING Breakout with a Stop order
# XAUUSD: buy 5 pts (= US$ 5) ABOVE, when the high breaks
COMPRA [01]: HIGH[0]>HIGH[1] @STOP[5] -> SetVolume[0.01]
# Sell 5 pts (= US$ 5) BELOW, when the low breaks
VENDA [01]:  LOW[0]<LOW[1]   @STOP[5] -> SetVolume[0.01]
Instead of entering at market, the robot leaves an order pending at the breakout: it only executes if price moves in your favour and touches the level. @STOP on a BUY it sits above the current price (it confirms strength before entering); on a SELL it sits below. Useful to avoid entering on a false move — the market has to "prove" the direction first. The number [5] is the distance in points: on gold that is US$ 5, on WIN$ it would be 5 index points. Adjust it to your asset's volatility — too large a distance never fires.
BUYSELLPENDING Pullback with a Limit order
# XAUUSD: buy LIMIT 3 pts (= US$ 3) BELOW (waits for the pullback to enter cheaper)
COMPRA [01]: CLOSE[0]>CLOSE[1] @LIMIT[3] -> SetVolume[0.01]
# Sell LIMIT 3 pts ABOVE (waits for the bounce to sell higher)
VENDA [01]:  CLOSE[0]<CLOSE[1] @LIMIT[3] -> SetVolume[0.01]
The opposite strategy to the breakout: it bets that price will pull back before continuing. @LIMIT on a BUY it sits below price (it buys the discount); on a SELL it sits above (it sells the bounce). Ideal for markets that respect supports/resistances and pull back. If price never retraces to the level, the order simply does not execute.
BUYSELLPENDING Breakout straddle (it fences both sides)
# XAUUSD: buy STOP 8 pts (= US$ 8) ABOVE and sell STOP 8 pts BELOW
COMPRA [01]: NOVOBAR==1 @STOP[8] -> SetVolume[0.01]
VENDA [01]:  NOVOBAR==1 @STOP[8] -> SetVolume[0.01]
# Cancela as pendentes restantes ao fim do dia
SAÍDA COMPRA [01]: TIME>17 @CANCELPENDING
The classic for news and volatile opens: it fences price on both sides. Since both use @STOP, the buy sits above and the sell below — any breakout fires one side. Use ✏️ Max PENDING ORDERS per direction (in the robot's parameters) to control how many pile up. ⚠️ Always put the cancellation (@CANCELPENDING) in an EXIT field, never in a BUY/SELL field.
BUYSELLPENDING Reversal straddle (limits at the extremes)
# XAUUSD: buy LIMIT 12 pts (= US$ 12) BELOW + sell LIMIT 12 pts ABOVE
COMPRA [01]: NOVOBAR==1 @LIMIT[12] -> SetVolume[0.01]
VENDA [01]:  NOVOBAR==1 @LIMIT[12] -> SetVolume[0.01]
The mirror of the breakout straddle: since both use @LIMIT, the buy sits below and the sell above. It bets price will stretch to an extreme and reverse — it enters against the exaggeration. It works well in sideways/range markets. Combine it with an hours filter to trade only in the least liquid window.
BUYPENDINGXAUUSD Money notation ($) — gold
# EURUSD: 30 pips above, written straight as a price
COMPRA [01]: HIGH[0]>HIGH[1] @STOP[$0.0030] -> SetVolume[0.01]
# PETR4: 50 cents above, written straight in reais
COMPRA [02]: HIGH[0]>HIGH[1] @STOP[$0.50] -> SetVolume[100]
For those who think in price value instead of points: the $ prefix tells the robot the number is in the asset's price units, and it converts to points on its own. Where it really helps is where 1 point is not worth 1 unit of price — forex (1 point = 1 pip) and shares (1 point = 1 cent): @STOP[$0.50] on PETR4 is more direct than @STOP[50]. On gold, Bitcoin, WIN$ and WDO$ it is redundant — there 1 point is already 1 unit of price, so @STOP[$20] and @STOP[20] land in exactly the same place (verified in the Strategy Tester).
BUYPENDINGGRID A grid of stacked pendings
# Stacks 1 buy-stop per candle, up to several pending at once
# (requires "Maximum PENDING ORDERS per direction" = 0 and Max entries per candle = 1)
COMPRA [01]: CLOSE[0]>CLOSE[1] @STOP[1000] -> SetVolume[0.01]
By default the robot keeps 1 pending per direction (it does not stack). To build a grid of several staggered pendings, set ✏️ Max PENDING ORDERS per direction = 0 (unlimited) or a number (e.g. 5 = up to 5 pendings in the same direction). The per-candle limit (Máx Entradas no Candle) still applies and prevents uncontrolled stacking within the same candle. That is the dedicated control under CONFIG → ROBOT → "Max Pending Orders/dir".
EXITPENDING Cancelling pendings (the correct way)
# @CANCELPENDING ALWAYS goes in SAÍDA (EXIT), never in buy/sell
SAÍDA COMPRA [01]: SPREAD>500 @CANCELPENDING
SAÍDA COMPRA [02]: TIME>17    @CANCELPENDING
⚠️ Important: @CANCELPENDING is a an exit command. If you put it in a BUY/SELL (entry) field, the robot blocks it and warns in the log (it opens no position). The right place is BUY EXIT or SELL EXIT. It cancels every pending order on the asset — useful for clearing the grid when the spread spikes, at the close, or after a news item. Every one of them: including the ones you placed by hand or another robot placed.

📊 PHASE D — AVERAGE PRICE, MARGIN, EXPOSURE AND SIGNAL MEMORY

AVGPRICE · MARGINLEVEL · TIMELEFT · SIG* · position counts · ternary · modulo
The Phase D variables read the state of the account, the open positions and the signal memory — they depend on no indicator. They all refer to the chart's asset (A1) and the robot's own positions. They are ideal for grids, recovery, risk control and exposure management.
EXITAVERAGE PRICE Exit at the group's break-even (AVGPRICE)
# Closes EVERY buy when price returns to their average price
SAÍDA COMPRA [01]: BID>=BUYAVGPRICE @BCLOSE
# Same idea for sells (buy back at the average)
SAÍDA VENDA [01]:  ASK<=SELLAVGPRICE @SCLOSE
BUYAVGPRICE is the weighted average price of every open buy (it weights each one's volume). When you have several entries at different prices, it is impossible to know the "group's break-even" without this variable. Here the robot closes everything as soon as price returns to the average — the break-even exit, a classic in grid/recovery. Use AVGPRICE for the average of buys and and sells together.
BUYGRIDAVERAGE PRICE Adding on a pullback (martingale by average price)
# Adds by doubling the lot whenever price drops 500 pts
# below the average price of the buys already open
COMPRA [01]: VOLBUY<0.01 @MARKET -> SetVolume[0.01]
COMPRA [02]: BID<BUYAVGPRICE-500 @MARKET -> SetVolume[VOLBUY*2]
A smart grid anchored to the average price, not to the last entry's price. BUYAVGPRICE-500 = 500 points below the current average; each addition recalculates the average and pushes the next trigger. SetVolume[VOLBUY*2] doubles the total lot already bought (martingale). ⚠️ Always combine it with a daily loss limit and a volume ceiling — martingale without a lock wipes out an account. The robot warns you in the Safety Panel if it detects doubling without protection.
BUYSELLMARGIN Only enter with comfortable margin (MARGINLEVEL)
# Opens a buy only if the margin level is above 300%
COMPRA [01]: MARGINLEVEL>300 && HIGH[0]>HIGH[1] @MARKET -> SetVolume[0.01]
# Closes everything if margin gets dangerously low
SAÍDA COMPRA [01]: MARGINLEVEL<150 @BCLOSE
SAÍDA VENDA [01]:  MARGINLEVEL<150 @SCLOSE
MARGINLEVEL is the the margin level in % (Equity ÷ Used margin × 100). Above 300% = a comfortable account; below 150% = margin-call risk. Here the robot only enters with room to spare and flattens everything if things get tight — essential protection on high-margin assets such as gold. When there are no open positions, MARGINLEVEL returns a very large value (no margin in use).
BUYEXPOSURE A cap on positions and free margin
# Pyramids up to 3 positions, and only with enough free margin
COMPRA [01]: ALLPOSOPEN<3 && MARGINFREE>500
  && CLOSE[0]>CLOSE[1] @MARKET -> SetVolume[0.01]
ALLPOSOPEN counts the total open positions (use BUYPOSOPEN/SELLPOSOPEN to count one side only). MARGINFREE is the free margin in money. Together they cap how many pyramided entries the robot makes and guarantee there is still cash for the next one — it avoids the "not enough money" error and over-exposure. A simple, robust limit for any multi-entry strategy.
EXITTIME Close in the candle's final seconds (TIMELEFT)
# If the buy is in profit, secures the exit before the candle closes
SAÍDA COMPRA [01]: TIMELEFT<5 && BPROFIT>0 @BCLOSE
# Scalp: enters only early in the candle (more than 50s left)
COMPRA [01]: TIMELEFT>50 && HIGH[0]>HIGH[1] @MARKET -> SetVolume[0.01]
TIMELEFT = the seconds left until the current candle closes. It enables strategies sensitive to candle time: banking profit just before the close (avoiding holding into the next candle), or entering only at the start of the bar when there is still time for the move to develop. On M1, TIMELEFT runs from 60 to 0; on M5, from 300 to 0.
BUYSELLSIGNAL Do not repeat a signal straight away (SIG*)
# Buys only if more than 300s passed since the last buy signal
COMPRA [01]: TIMELEFT>=0 && SIGTIMEBUY==0 && HIGH[0]>HIGH[1] @MARKET -> SetVolume[0.01]
# Reverses only if the last signal was a sell (avoids a false bounce)
COMPRA [02]: SIGLAST==1 && CLOSE[0]>CLOSE[1] @MARKET -> SetVolume[0.01]
The SIG* are the robot's signal memory . SIGLAST = the direction of the last signal fired (0=buy, 1=sell, -1=none); SIGTIMEBUY/SIGTIMESELL = the time of the last signal on each side; SIGPRICE = the price of the last signal. They exist so you do not repeat the same entry back to back, so you can require alternating directions, or so you only re-enter once price has moved away from the last signal. They reset every day.
BUYSIGNAL A daily signal cap (SIGTOTAL)
# At most 5 entries per day (overtrading discipline)
COMPRA [01]: SIGTOTAL<5 && HIGH[0]>HIGH[1] @MARKET -> SetVolume[0.01]
VENDA [01]:  SIGTOTAL<5 && LOW[0]<LOW[1]   @MARKET -> SetVolume[0.01]
SIGTOTAL counts how many entry signals the robot fired in the day (buys + sells). SIGBUY and SIGSELL count each side separately. An excellent anti-overtrading lock: it caps the number of daily trades regardless of what the conditions say. Automated discipline — one of the most common causes of loss is trading too much on a bad day.
BUYTERNARY Adaptive volume with ? :
# Risks more (0.02) with loose margin, less (0.01) if tight
COMPRA [01]: HIGH[0]>HIGH[1] @MARKET
  -> SetVolume[MARGINLEVEL>500 ? 0.02 : 0.01]
# Doubles the lot only when price is already below the average (recovery)
COMPRA [02]: CLOSE[0]>CLOSE[1] @MARKET
  -> SetVolume[BID<AVGPRICE ? 0.02 : 0.01]
The ternary CONDIÇÃO ? A : B operator picks the value A if the condition is true, otherwise B. Here it sets the volume adaptively inside SetVolume[]. The evaluator understands prices (ASK/BID), Phase C and Phase D variables, and numbers. It pairs perfectly with AVGPRICE and MARGINLEVEL to size risk according to context.
BUYMODULO Every N of price with %
# Buys only when the closed price is a multiple of 10 (round numbers)
COMPRA [01]: CLOSE[0]%10==0 && HIGH[0]>HIGH[1] @MARKET -> SetVolume[0.01]
The modulo % returns the remainder of a division — CLOSE[0]%10==0 is true when price is an exact multiple of 10. Useful for cyclical logic and round levels (where liquidity tends to sit). It has the same precedence as multiplication/division and works with price action and values. For more robust cross-asset round numbers, see also ROUND/NEARROUND in Phase C.
EXITDAY P&L Stop after a target or a limit (GAINPROFIT/LOSSPROFIT)
# Closes everything and does not re-enter after -$100 of losses on the day
SAÍDA COMPRA [01]: LOSSPROFIT<=-100 @BCLOSE
SAÍDA VENDA [01]:  LOSSPROFIT<=-100 @SCLOSE
# Blocks new buys after already making $200 on the day
COMPRA [01]: GAINPROFIT<200 && HIGH[0]>HIGH[1] @MARKET -> SetVolume[0.01]
GAINPROFIT adds up only the winning trades of the day; LOSSPROFIT adds up only the losers (a negative value). Separating gains from losses allows finer locks than net profit does: stopping after a certain amount of losses has piled up (even if the net is still positive), or easing off once a decent target has already been captured. It complements the percentage Daily Lock in the settings.

📊 MARKET STRUCTURE & FLOW — Dow + Wyckoff (Phase F)

Impulse vs Correction · Legs · Volume · Effort/Result · Smart Money
Every expression in this section requires ☑️ AI + EXPRESSIONS: Structure & Flow to be ticked. Also set the structure TF — H1 or H4 is recommended for reading the structure while executing on M5/M1. Waves F2 (STRUCT/BOS/SWHIGH/SWLOW) and F3 (VOLAVG/VOLX/EFFRES/ABSORP/CLIMAX) arrive in coming versions and will complete this group.
BUYDOW The impulse larger than the correction (5th Principle)
# BUY when the up impulse is larger and carries more volume than the previous pullback
COMPRA [01]: LEGDIR==1 && LEGRATIO>1.2 && LEGVOLRATIO>1
  @MARKET -> SetVolume[0.01]
LEGRATIO = the current leg ÷ the previous leg. Above 1 = the impulse is larger than the correction — the market still has directional strength. LEGVOLRATIO>1 confirms volume followed the move: there is no hidden exhaustion. It is Dow's 5th Principle measured numerically: impulses larger than corrections in a healthy trend. LEGDIR==1 filters so you only enter on the up leg.
BUYWYCKOFF A shallow correction = a strong trend
# A small down leg (pullback) in ATR = the market is not willing to correct
# Enters only at the start of the next up leg (LEGDIR has just flipped)
COMPRA [01]: LEGDIR==1 && PLEGATR<0.6 && PLEGVOL SetVolume[0.01]
PLEGATR = the previous correction's range in multiples of ATR. Below 0.6 = a shallow correction (less than 60% of the ATR) — smart money did not let price fall. PLEGVOL<LEGVOL confirms the correction had less volume than the impulse before it. Together they signal a weak pullback: an uptrend with little selling pressure — a classic in Wyckoff continuation setups.
SELLDOW The bullish impulse weakening
# The current pullback is larger than the previous impulse — buying strength is fading
VENDA [01]: LEGDIR==-1 && LEGRATIO>1.3 && LEGVOLRATIO>1.2
  @MARKET -> SetVolume[0.01]
# Exit if the impulse renews
SAÍDA VENDA [01]: LEGRATIO<0.8 @SCLOSE
Here LEGDIR==-1 = a down leg in progress; LEGRATIO>1.3 = that down leg is 30% larger than the previous up impulse. When the correction exceeds the impulse in range and volume, the uptrend's structure has broken — distribution is under way. Do not wait for the break of the low: the structural deterioration is already visible in the legs.
EXITDOW Exit when the impulse loses strength
# Leaves the buy if the current up leg is smaller than the previous one (contraction)
SAÍDA COMPRA [01]: LEGDIR==1 && LEGRATIO<0.7 @BCLOSE
# Saída parcial mais cedo (perna ainda pequena em ATR)
SAÍDA COMPRA [02]: LEGATR<0.5 && BPROFIT>30 @BCLOSE -> ClosePercent[50]
Exits based on structural deterioration: the market is still rising, but the impulses are getting smaller (LEGRATIO<0.7) — an early sign of exhaustion, before price reverses. The second exit banks 50% of the profit when the current leg is very small in volatility (LEGATR<0.5) — not enough momentum to continue. It pairs well with an SL at SWLOW (available in Wave F2).
BUYSELLFLOW Volume validates the leg
# Buys only if the current up leg has more volume than the previous down leg
# And if the move is fast — tune the threshold per asset and TF
# XAUUSD M1: LEGSPEED tipico 1-3 | XAUUSD M5: tipico 5-20 | BTC M5: tipico 50-200
COMPRA [01]: LEGDIR==1 && LEGVOL>PLEGVOL*1.3 && LEGSPEED>10
  @MARKET -> SetVolume[0.01]
LEGVOL>PLEGVOL*1.3 = the current impulse has 30% more volume than the previous correction — aggressive buyers in control. LEGSPEED = price displacement per candle (in the asset's own price unit): on XAUUSD M5 a typical value is 5–20 (=$5–$20/candle), on BTC M5 it is 50–200, on EURUSD M5 it is 0.0002–0.001. Calibrate the threshold with a few Shift+F to see the real values on your asset/TF. Adjust it to the TF configured in Phase F.
BUYWYCKOFF Re-entry after a confirmed correction
# After a down leg SMALLER than the previous impulse (a healthy pullback),
# enters when the new up leg begins
COMPRA [01]: LEGDIR==1 && PLEGATR<0.8 && LEGRATIO>0.9
  && LEGATR>0.3 @MARKET -> SetVolume[MARGINLEVEL>300 ? 0.02 : 0.01]
The classic Wyckoff continuation setup: a shallow correction (PLEGATR<0.8) followed by a new impulse that has already gained traction (LEGATR>0.3 and LEGRATIO>0.9 = almost as large as the correction). It uses ternary to double the lot when margin is comfortable (MARGINLEVEL>300) — Phase D + Phase F integration. Combine it with BID>VWAP (Phase C) to filter the intraday bias.
BUYSELLSTRUCT An entry aligned with the structure (STRUCT + BOS)
# Buys only when market structure confirms an uptrend
# And price has just broken the last swing high (bullish BOS)
COMPRA [01]: STRUCT==1 && BOS==1 && LEGDIR==1
  @MARKET -> SetVolume[0.01]

# Exit when structure turns bearish
SAÍDA COMPRA [01]: STRUCT==-1 @BCLOSE
STRUCT==1 = the market making HH + HL (a confirmed Dow uptrend); BOS==1 = the current close above the last confirmed swing high. Combined, they make sure you enter on a genuinely strong move, not on the noise of a consolidation. It works best on H1+ (set FaseF_Timeframe=PERIOD_H1). It exits when the structure flips.
BUYWYCKOFFSTRUCT Spring — a false break plus recovery (SOS)
# Wyckoff pattern: price broke below SWLOW (bearish BOS)
# but macro structure is still bullish (STRUCT==1) — it is a spring
# When price recovers (LEGDIR flips to +1), it enters
COMPRA [01]: BOS==-1 && STRUCT==1 && LEGDIR==1 && LEGATR>0.5
  @MARKET -> SetVolume[0.01]
The Wyckoff "spring" is one of the most powerful patterns: price dips below support (the swing low) to hunt stops — BOS==-1 records that bearish break. But the macro context is still an uptrend (STRUCT==1). When price recovers and the current leg turns bullish (LEGDIR==1), that is the SOS (Sign of Strength). The break was false; the stops were hunted; the buyers came back.
BUYSELLWYCKOFF
Absorption at support — quiet accumulation
# Absorption candle near support (SWLOW): smart money buying
# High volume + small body + close to the swing low
COMPRA [01]: ABSORP==1 && ASK < SWLOW*1.002 && STRUCT==1
  @MARKET -> SetVolume[0.01]
ABSORP==1 = volume ≥ 1.8× the average and the candle's body ≤ 35% of the range (price tried to fall but was absorbed). ASK < SWLOW*1.002 = we are touching or slightly above the swing support. STRUCT==1 = a bullish macro structure. Together: absorption at support inside an uptrend = quiet institutional accumulation. Adjust FaseF_AbsorpVolX and FaseF_AbsorpBodyPct to calibrate the sensitivity.
BUYSELLWYCKOFF Selling climax — an exhaustion bottom
# Selling climax: extreme volume + close at the low + bearish structure
# Depois de um climax, o mercado costuma reverter (selling exhaustion)
COMPRA [01]: CLIMAX==-1 && LEGDIR==-1 && EFFRES<0.5
  @MARKET -> SetVolume[0.01]

# Confirms: enters only if EFFRES is low (price does not move despite the volume)
# EFFRES<0.5 = a very inefficient leg = volume absorbed with no result
CLIMAX==-1 = volume ≥ 2.5× the average with the close at the bottom of the range (maximum selling pressure). EFFRES<0.5 = the down leg is being inefficient — a lot of volume for little displacement (selling absorption). The two combined are a classic Wyckoff Selling Climax signal: the market has "run out of sellers". Use STRUCT and confirmation from LEGDIR on the next bar to filter false signals.
BUYSELLFLOW Normalised volume as an entry filter
# Trades only when the leg's volume is above average (VOLX > 1.3)
# And the move is efficient (EFFRES > 1): price travelled more than the volume justifies
COMPRA [01]: LEGDIR==1 && VOLX>1.3 && EFFRES>1.0 && STRUCT==1
  @MARKET -> SetVolume[0.01]

VENDA [01]: LEGDIR==-1 && VOLX>1.3 && EFFRES>1.0 && STRUCT==-1
  @MARKET -> SetVolume[0.01]
VOLX>1.3 = a leg with 30% more volume than the historical average (above-normal participation). EFFRES>1.0 = the result (displacement/ATR) exceeds the effort (normalised volume) — an efficient move, a strong trend. When both are high, you are trading real momentum, not low-volume noise. Combine it with STRUCT to guarantee macro alignment.
BUYSELLPENDWYCKOFF A pending at the breakout's retest
# After a breakout (long impulse), places a BUY LIMIT to catch the retest
# The shallow pullback confirms the breakout was real
COMPRA [01]: LEGDIR==-1 && PLEGATR>1.5 && PLEGATR<4 && LEGVOLRATIO<0.8
  @LIMIT[$15] -> SetVolume[0.01]
The logic: the previous impulse (PLEGATR>1.5) was strong enough to be a breakout; now we are in the correction (LEGDIR==-1) on low volume (LEGVOLRATIO<0.8) — this is the retest. The LIMIT order sits $15 below price, waiting for it to pull back there. PLEGATR<4 filters out excessively fast (parabolic) breakouts that tend to retrace too far. On XAUUSD @LIMIT[$15] = a $15 pullback.

🏆 CLASSIC SETUPS — READY-MADE STRATEGIES IN EXPRESSIONS

Setup 9.1 · MME Cross · Inside Bar · 3 Soldiers · Storme's 1-2-3
Setups used by Brazil's best-known traders — L&S/Stormer, Nelogica, Rodrigo Cohen — implemented as direct expressions. Each example is a complete working strategy: copy it, adjust the SL/TP and switch it on. For setups using indicators such as the EMA, configure the IND1–IND30 slots in the robot's panel.

Setup 9.1 — a candle closing on the 9-period average (MME9)

Set IND1 as an EMA with period 9, buffer 0. Then IND1[0,0]=the EMA9's value on the current candle; IND1[0,1]=the previous candle.
BUYSELL Setup 9.1 — Conservative (a closed candle)
# IND1 = EMA(9), buffer=0
# Buy: the previous candle closed above EMA9 (cross from below)
COMPRA [01]: NOVOBAR==1
  && CLOSE[1]>IND1[0,1] && CLOSE[2]<IND1[0,2] @MARKET
# Sell: the previous candle closed below EMA9
VENDA [01]:  NOVOBAR==1
  && CLOSE[1]<IND1[0,1] && CLOSE[2]>IND1[0,2] @MARKET
It waits for the candle to close turning the MME9, with the previous one closing on the opposite side (a confirmed crossover). Entry on the next candle's first tick. Set IND1 as an EMA with period 9 in the robot's panel.
BUYSELL Setup 9.1 — Aggressive (intrabar)
# IND1 = EMA(9), buffer=0
# Buy: the current candle closing above EMA9
COMPRA [01]: CLOSE[0]>IND1[0,0]
  && CLOSE[1]<IND1[0,1] @MARKET
# Sell: the current candle closing below EMA9
VENDA [01]:  CLOSE[0]<IND1[0,0]
  && CLOSE[1]>IND1[0,1] @MARKET
The aggressive version: it fires while the candle is still closing on the MME9 — a better price, but the candle can reverse before it closes. Combine it with SPREADX<1.5 and high-volume hours.

Moving average crossover — MME9 × MME21

BUYSELL Golden / death cross — entry and exit
# IND1 = EMA(9) buffer=0  |  IND2 = EMA(21) buffer=0
# Golden cross: EMA9 crossed ABOVE EMA21
COMPRA [01]: NOVOBAR==1
  && IND1[0,1]>IND2[0,1] && IND1[0,2]<=IND2[0,2] @MARKET
# Death cross: EMA9 crossed BELOW EMA21
VENDA [01]:  NOVOBAR==1
  && IND1[0,1]<IND2[0,1] && IND1[0,2]>=IND2[0,2] @MARKET
# Exit: the reverse cross
SAÍDA COMPRA [01]: IND1[0,0]<IND2[0,0] @BCLOSE
SAÍDA VENDA [01]:  IND1[0,0]>IND2[0,0] @SCLOSE
One of the most widely taught trend setups in Brazil. A "golden cross" (MME9 above MME21) = bullish; a "death cross" = bearish. Set IND1=EMA 9 and IND2=EMA 21 in the robot's panel.

Inside Bar — breaking a contraction

BUYSELL Inside Bar — intrabar breakout
# Detects an Inside Bar (candle [1] inside the range of [2])
# Buys when the current candle breaks the IB high
COMPRA [01]: HIGH[1]<HIGH[2] && LOW[1]>LOW[2]
  && HIGH[0]>HIGH[1] @MARKET
# Sells when the current candle breaks the IB low
VENDA [01]:  HIGH[1]<HIGH[2] && LOW[1]>LOW[2]
  && LOW[0]<LOW[1] @MARKET
An Inside Bar is a candle that sits entirely within the previous one's range — a compression signal. Breaking its high or low signals the next direction. Very effective on H1/H4 at decision zones (support, resistance, pre-news).
BUY Conservative Inside Bar — a pending at the high
# Detects the IB and places a BuyStop at the high — automatic entry on the breakout
COMPRA [01]: NOVOBAR==1
  && HIGH[1]<HIGH[2] && LOW[1]>LOW[2]
  @HIGH[1] -> SetVolume[0.01]
It detects the IB at the previous candle's close and places a BuyStop at that candle's high. The order waits for price to touch the level — a precise, unemotional entry. SetVolume is mandatory on pending orders.

Three Soldiers / Three Crows and Storme's 1-2-3

BUYSELL Three White Soldiers / Three Black Crows
# Three consecutive up candles with higher highs
COMPRA [01]: NOVOBAR==1
  && DIR[1]==1 && DIR[2]==1 && DIR[3]==1
  && HIGH[1]>HIGH[2] && HIGH[2]>HIGH[3] @MARKET
# Three consecutive down candles with lower lows
VENDA [01]:  NOVOBAR==1
  && DIR[1]==-1 && DIR[2]==-1 && DIR[3]==-1
  && LOW[1]<LOW[2] && LOW[2]<LOW[3] @MARKET
Three consecutive candles on the same side with rising highs/lows point to a strong trend. Use it with the larger trend — it is a continuation signal, not a reversal one. Avoid entering after three very long candles with no pullback.
BUYSELL The 1-2-3 reversal (L&S Stormer)
# 1-2-3 BUY: two lows where the second is higher (P3 > P1)
# Trigger: a break of the point 2 high (P2)
COMPRA [01]: LOW[1]>LOW[3]      && DIR[3]==-1 && DIR[1]==-1
  && HIGH[0]>HIGH[2] @MARKET

# 1-2-3 SELL: two highs where the second is lower (P3 < P1)
VENDA [01]:  HIGH[1]<HIGH[3]    && DIR[3]==1  && DIR[1]==1
  && LOW[0]<LOW[2]  @MARKET
Storme's 1-2-3 pattern (L&S Análise) identifies structural reversals: two lows where the second is higher (P3>P1) signals a reversal from down to up; the trigger is the break of point 2 (the top of the bounce). It works best on H1 and above.

🎯 GROUP 10 — BUY AND SELL FILTERS (FBUY / FSELL)

✏ Any expression field
What it is: FBUY[N] and FSELL[N] let you use the condition of a BUY/SELL Filter N inside any expression using &&. It returns true if the filter passes, false if it blocks.

Why use it: When the filter is ticked in the panel (☑️), it blocks all the entries on that side at once. With FBUY[N] you apply the condition only to the expression you want — each BUY can have its own independent filter.

A different filter per entry

BUY An hours filter for BUY1 only
# BUY Filter 1: TIME>=9.0 && TIME<=12.0
COMPRA [01]: HIGH[0]>HIGH[1] && FBUY[1] @MARKET
COMPRA [02]: HIGH[0]>HIGH[2] @MARKET
BUY1 only enters in the morning window (filter 1 = hours). BUY2 trades all day, unfiltered. Each entry with its own rule.
SELL A spread filter for SELL1 only
# SELL Filter 1: SPREAD<20 && NEWSIN[30]==0
VENDA [01]: LOW[0]<LOW[1] && FSELL[1] @MARKET
VENDA [02]: DIR[0]==-1 && DIR[1]==-1 @MARKET
SELL1 requires a low spread plus no news (filter 1). SELL2 uses price action alone, with no extra restriction.
BUY Different filters per BUY
# BUY Filter 1: TIME>=9.0 && TIME<=12.0
# BUY Filter 2: TIME>=14.0 && TIME<=17.0 && SPREAD<15
COMPRA [01]: IND1[0,0]<30 && FBUY[1] @MARKET
COMPRA [02]: IND1[0,0]<25 && FBUY[2] @MARKET
BUY1 trades the morning session, BUY2 trades the afternoon with an even tighter spread. Each slot uses its own session filter.
BUYSELL A shared filter, and one per side
# BUY Filter 1:  DAY>=1 && DAY<=4 && SPREAD<20
# SELL Filter 1: DAY>=1 && DAY<=5 && SPREAD<25
COMPRA [01]: HIGH[0]>HIGH[1] && FBUY[1]  @MARKET
VENDA [01]:  LOW[0]<LOW[1]  && FSELL[1] @MARKET
Buys only Mon to Thu. Sells through Friday with a slightly wider spread. Asymmetric filters by direction.

Comparing: the panel filter vs FBUY[N] in the expression

Global The panel filter — it blocks EVERYTHING
# BUY Filter 1 ENABLED on the panel (☑️):
# TIME>=9.0 && TIME<=12.0
# → BUY1, BUY2, BUY3... ALL blocked outside 9am–12pm
When the ☑️ Enable Filter 1 of the BUY group is ticked in the panel, the condition applies to EVERY BUY indiscriminately.
BUY FBUY[N] in the expression — selective per entry
# BUY Filter 1: TIME>=9.0 && TIME<=12.0
# BUY Filter 2: TIME>=14.0 && TIME<=18.0
COMPRA [01]: HIGH[0]>HIGH[1] && FBUY[1] @MARKET
COMPRA [02]: HIGH[0]>HIGH[2] && FBUY[2] @MARKET
COMPRA [03]: DIR[0]==1 @MARKET  ← sem filtro de horário
BUY1 only enters in the morning, BUY2 only in the afternoon, BUY3 at any time. Granular control, with no global filter getting in another slot's way.
The ☑️ Enable Filter 1 (…up to 5) — the same name exists in both groups, 🤖 BUY FILTER SETUP (01 to 05) and the SELL one does not have to be ticked in the panel for you to use FBUY[N]/FSELL[N] in an expression — the token evaluates the filter field's condition directly. You only need to write the condition in the matching ✏️ BUY/SELL Filter expression [N] field.

🤖 GROUP 11 — AI EXPRESSIONS

entry and exit after a Gemini analysis
The AI never sends an order on its own. It fills the cache with a decision, confidence, probabilities and closing suggestions; the order only happens when a BUY/SELL/EXIT expression evaluates true. Always use IA_VALIDA==1 to avoid an expired or already consumed cache.

A1 entries using the AI's decision

BUYAI Buy when Gemini confirms an uptrend
ANALISA_IA==1 && IA_VALIDA==1
  && IA_CONFIANCA>=70
  && IA_PROB_ALTA>=60 @MARKET -> SetVolume[0.01]
It goes long only when the current analysis is valid, the decision is BUY and the confidence/probability clear the filter you defined.
SELLAI Sell when Gemini confirms a downtrend
ANALISA_IA==-1 && IA_VALIDA==1
  && IA_CONFIANCA>=70
  && IA_PROB_BAIXA>=60 @MARKET -> SetVolume[0.01]
The mirror of the buy: it only sells when the AI returns SELL, the cache is valid and the downside probability is high enough.
BUY&&AI AI + price action
HIGH[0]>HIGH[1]
  && ANALISA_IA==1
  && IA_VALIDA==1
  && IA_CONFIANCA>=75
  && IA_FORCA_TENDENCIA>=60 @MARKET
It requires a technical breakout on the current candle plus AI confirmation with a strong trend. Good for using the AI as a quality filter rather than a standalone trigger.

A1 exits on the AI's suggestion

EXITAI Close the buys when the AI says so
SAÍDA COMPRA [01]: IA_VALIDA==1 && IA_FECHAR_BUY==1 @BCLOSE
SAÍDA COMPRA [02]: IA_VALIDA==1 && IA_REVERSAO==1
  && ANALISA_IA==-1 @BCLOSE
It closes the buys when Gemini flags a direct close or when it detects a reversal with the opposite decision.
EXITAI Close the sells when the AI says so
SAÍDA VENDA [01]: IA_VALIDA==1 && IA_FECHAR_SELL==1 @SCLOSE
SAÍDA VENDA [02]: IA_VALIDA==1 && IA_REVERSAO==1
  && ANALISA_IA==1 @SCLOSE
It closes the sells when the AI suggests ending the short or when the reversal favours buying.

Multi-asset A2/A3 with the AI

BUYSELLA2/A3 Independent entries per asset
COMPRA [01]: A2ANALISA_IA==1 && A2IA_VALIDA==1
  && A2IA_CONFIANCA>=70 @A2MARKET -> SetVolume[0.01]

VENDA [01]: A3ANALISA_IA==-1 && A3IA_VALIDA==1
  && A3IA_CONFIANCA>=70 @A3MARKET -> SetVolume[0.01]
Each asset's analysis feeds its own cache. A2 uses @A2MARKET; A3 uses @A3MARKET. It requires A2/A3 configured and allowed.
EXITA2/A3 Exits on the suggested close
SAÍDA COMPRA [01]: A2IA_VALIDA==1
  && A2IA_FECHAR_BUY==1 @A2BCLOSE

SAÍDA VENDA [01]: A3IA_VALIDA==1
  && A3IA_FECHAR_SELL==1 @A3SCLOSE
It closes the right asset's positions using the right target. Do not mix A2IA_* with @BCLOSE if what you mean is to close A2.

📖 QUICK REFERENCE — MAIN VARIABLES

VariableWhat it isExample of use
HIGH[N], LOW[N]The high and low of candle N (0=current, 1=previous)HIGH[0]>HIGH[1]
CLOSE[N], OPEN[N]The close and open of candle NCLOSE[0]>OPEN[0] (a green candle)
DIR[N]The candle's direction: 1=green, -1=redDIR[0]==1
ASK, BIDThe current buy and sell priceASK>LASTBUY+100
SPREADThe difference between ASK and BID in pointsSPREAD<20
TIMEDecimal time (8.5 = 08:30, 14.75 = 14:45)TIME>=9.0 && TIME<=17.0
DAYDay of the week: 0=Sun, 1=Mon… 5=Fri, 6=SatDAY>=1 && DAY<=5
NEWSIN[X]1 if there is news in the next X minutes, 0 if notNEWSIN[30]==0
ANALISA_IAThe AI's decision on A1: 1=buy, -1=sell, 0=wait, -99=invalidANALISA_IA==1 && IA_VALIDA==1
IA_CONFIANCAThe signal's clarity/strength (%) — ≠ the probability of the move (that is IA_PROB_ALTA/IA_PROB_BAIXA)IA_CONFIANCA>=70
IA_FECHAR_BUY, IA_FECHAR_SELLThe AI's suggestion to close open buys or sellsIA_FECHAR_BUY==1 @BCLOSE
A2ANALISA_IA, A3ANALISA_IAThe AI's decision on the secondary and tertiary assetsA2ANALISA_IA==1 @A2MARKET
BPROFITThe current total profit of every open buy (R$)BPROFIT>100
SPROFITThe current total profit of every open sell (R$)SPROFIT>100
VOLBUY (or BVOLO)The total volume of open buys, in lotsBVOLO<0.5
VOLSELL (or SVOLO)The total volume of open sells, in lotsVOLSELL>VOLBUY
BUYCOUNTThe number of open buy positionsBUYCOUNT<3
SELLCOUNTThe number of open sell positionsSELLCOUNT==0
LASTBUYThe opening price of the last buyASK>LASTBUY+50
BPRICEThe average entry price of every buy (in the MODIFY: the price of each buy)SetSL[BPRICE]
DPROFITThe day's profit (closed positions, accumulated)DPROFIT>500
DLOSSESThe number of losing trades todayDLOSSES<3
DTRADESThe total trades closed todayDTRADES<20
LPROFITThe profit/loss of the last closed tradeLPROFIT>=0 (the last one was a WIN)
WPROFITThe week's accumulated profitWPROFIT>0
TVOL[N]Ticks of candle N (0=current, 1=previous). Always available on any asset/broker — use it as an activity and pressure indicator. It supports arithmetic: TVOL[0]>TVOL[1]*1.3 = volume 30% above the previous oneTVOL[0]>TVOL[1]
RVOL[N]The real volume (contracts) of candle N. It depends on the broker: available at B3 brokers with a full feed (XP, Clear, BTG, Rico and so on); it returns 0 on OTC Forex. Check before using it: add RVOL[0]>0 as a helper condition — if it never fires, the feed is not available. Prefer TVOL if in doubtRVOL[0]>RVOL[1]
BODY[N]The absolute body of candle N: |CLOSE[N] − OPEN[N]|. It measures directional strength (a big body = strong pressure). It supports arithmetic: BODY[1]>BODY[2]*2 = the previous candle's body is 2× that of 2 candles agoBODY[1]>BODY[2]*1.5
RANGE[N]The total range of candle N: HIGH[N] − LOW[N]. It measures volatility (wicks included). Use it to spot expansive candles. It supports arithmetic: RANGE[1]>RANGE[2]*1.5 = the previous candle is 50% more volatile than the one before itRANGE[0]>RANGE[1]*1.3
A2DVOLUME, A3DVOLUMEThe day's accumulated closed volume on assets A2/A3; it is not per-candle volumeA2DVOLUME>0
IND1[B,N]Indicator 1's value on buffer B, candle NIND1[0,0]<30
A2HIGH[N], A2LOW[N]Asset A2's high/low on candle NA2CLOSE[0]>A2CLOSE[1]
A2OPEN[N], A2CLOSE[N]Asset A2's open/close on candle N — the TF is set in ✏️ A2 timeframe in EXPRESSIONS (A2HIGH, A2LOW, A2CLOSE, A2OPEN) (default D1)A2CLOSE[0]>A2OPEN[0]
A2BODY[N], A3BODY[N]The absolute body of candle N on asset A2/A3, using ✏️ A2 timeframe in EXPRESSIONS (A2HIGH, A2LOW, A2CLOSE, A2OPEN) and ✏️ A3 timeframe in EXPRESSIONS (A3HIGH, A3LOW, A3CLOSE, A3OPEN). The same logic as BODY[N], but on the secondary/tertiary asset. It supports arithmeticA2BODY[1]>A2BODY[2]*2
A2RANGE[N], A3RANGE[N]The total range of candle N on asset A2/A3. The same logic as RANGE[N]. Useful for confirming volatility on a reference asset (e.g. VIX, a sector index)A2RANGE[0]>A2RANGE[1]*1.5
A2ASK, A2BIDAsset A2's current Ask/Bid pricesA2ASK>A2CLOSE[1]
A2SPREADAsset A2's current spread in pointsA2SPREAD<30
A2BPROFITThe profit of the buys open on A2A2BPROFIT>50 @A2BCLOSE
A2SPROFITThe profit of the sells open on A2A2SPROFIT>50 @A2SCLOSE
A2PROFITALLThe total open profit on A2 (buys + sells)A2PROFITALL>100
A2VOLBUY, A2VOLSELLThe total volume of buys / sells open on A2 (lots)A2VOLBUY>0
A2BUYCOUNT, A2SELLCOUNTThe number of buy / sell positions open on A2A2BUYCOUNT<3
A2LASTBUY, A2LASTSELLThe opening price of the last buy / sell on A2A2ASK>A2LASTBUY+50
A2POSTIMEThe age in minutes of the most recent position opened on A2A2POSTIME>60
A2DPROFIT, A2DLOSSThe day's accumulated profit and loss on A2A2DPROFIT>0
A2DTRADES, A2DWINS, A2DLOSSESTotal, winning and losing trades on the day on A2A2DLOSSES<3
A2DWINRATEThe day's win rate on A2 (%)A2DWINRATE>50
A2WPROFIT, A2WLOSSThe week's accumulated profit and loss on A2A2WPROFIT>-100
A2LPROFITThe profit/loss of the last trade closed on A2A2LPROFIT>=0
A3*The multi-asset families documented above are also exposed for the tertiary asset set in ✏️ Tertiary asset A3 (e.g. GBPUSD, BTCUSD). E.g.: A3DPROFIT, A3BUYCOUNT, A3VOLBUYA3BUYCOUNT<2
CloseIndex[N]It closes only the position at index N in the terminal's CURRENT list (the Trade tab). ⚠️ The index is NOT fixed by age: when any position closes, the list reindexes — today's "index 1" may be a different position on the next tick. Use it with 1-2 positions, or prefer ClosePercent/profit filters.BPROFIT>50 @BCLOSE -> CloseIndex[0]
POSTIMEHow long the position has been open, in minutesPOSTIME>60 @BCLOSE
FBUY[N]Evaluates the condition of BUY Filter N (1–10) inside any expression. True when the filter passes.HIGH[0]>HIGH[1] && FBUY[1] @MARKET
FSELL[N]Evaluates the condition of SELL Filter N (1–10) inside any expression. True when the filter passes.LOW[0]<LOW[1] && FSELL[2] @MARKET
When testing a new expression, temporarily enable Errors in expressions (the Log/Debug group). The robot will show exactly where the typo is, with the precise location of the problem.

⭐ HALL OF FAME — SETUPS FROM GREAT TRADERS

Classic strategies adapted to the EA's expressions
Each setup below is based on the trader's real methodology and was adapted only where the EA supports the necessary tokens. Adapt the parameters to your asset and timeframe. In entries, SetSL[500] represents a distance in points; candle or indicator levels in the SL can only be used in @MODIFY. With NOVOBAR==1, prefer [1] for conditions that require an already closed candle. Expressions marked with 📊 require the matching advanced EA parameters to be enabled, such as VWAP, ORB, Bollinger, ATR or candle patterns.
How to read each card's badges:
✅ Copyable the expression captures almost all of the setup — you can copy it and trade.
⚠️ Adapted the EA runs an objective version, but the original method has parts (fundamentals, visual reading, context) that depend on you or on the AI.
📚 Management it is a risk/exit concept, not an entry trigger — use it alongside any setup.
LR
Linda Bradford Raschke
🇺🇸 USA — Short-term swing
✅ Copyable
Known for the "3-Bar Play" and the 80% rule. She trades momentum on short-term candles with directional confirmation.
3 consecutive up candles + a BuyStop at the high · a 500-point SL
NOVOBAR==1 && HIGH[1]>HIGH[2]
  && HIGH[2]>HIGH[3] && DIR[1]==1
  @HIGH[1] -> SetVolume[0.01] SetSL[500]
LW
Larry Williams
🇺🇸 USA — Williams %R, seasonality
✅ Copyable
He popularised Williams %R. He trades oversold reversals within a trend. The classic: buy on the week's weakest day (Tuesday) in a rising market.
Reversal — a red followed by a green on Tuesday (DAY==2) · a 500-point SL
NOVOBAR==1 && DIR[2]==-1 && DIR[1]==1
  && DAY==2 @MARKET -> SetSL[500]
RD
Richard Dennis
🇺🇸 USA — the Turtle system
⚠️ Adapted
The inventor of "Turtle Trading". The system live buys the break of the 20-day channel (System 1) or the 55-day one (System 2), sizes by volatility (units of N = ATR), adds every +½N, uses a 2N stop and exits on the opposite 10/20-day channel. The version below is the channel breakout — for fidelity, set IND1 = the upper channel (Donchian / Highest High) and enable the EA's ATR-based SL (it approximates the 2N stop).
A break of the upper channel + a filtered spread · IND1 = Donchian/Highest (buffer 0) · use the ATR-based SL for the 2N stop
NOVOBAR==1 && BID>IND1[0,1]
  && SPREADX<1.5 @MARKET -> SetSL[500]
🔒 The full strategy arsenal — every setup from the great traders (Hall of Fame), the complete strategies and the advanced .set files live in the Web Dashboard, exclusive to those with an active licence (a live account). See plans →
Created an interesting expression? Share it in the Group →

🔧 TECHNICAL GUIDE TO EXPRESSIONS

Anatomy of an expression

Every expression follows the structure:

CONDIÇÃO @AÇÃO -> COMANDO
PartWhat it definesExample
CONDIÇÃOWhen the rule may fire — tokens compared with ==, >, &&, ||HIGH[0]>HIGH[1] && DIR[1]==1
@AÇÃOThe order type: @MARKET, @LIMIT, @STOP, @BCLOSE, @MODIFY, and so on.@MARKET
-> COMANDOOptional actions after the order: volume, SL, TP, filtersSetVolume[0.01], SetSL[50]
The -> COMANDO part is always optional. A minimal valid expression is CONDIÇÃO @AÇÃO.

Candle [0] forming vs [1] closed — how NOVOBAR behaves

The EA runs expressions on every tick. NOVOBAR==1 is true only on the first tick of each new bar.

TokenWhat it returns on the bar's first tickRecommendation
CLOSE[0]The opening price (≈ BID at the moment of the tick)Use BID to compare against dynamic levels (VWAP, BB, IND)
DIR[0]Typically 0 — close[0]≈open[0], with no defined directionUse DIR[1] to confirm the direction of the previous closed candle
HIGH[0] / LOW[0]The same as open[0] — the candle's high/low are not formed yetUse it as a gap reference only when compared against HIGH[1] and so on.
HIGH[1], DIR[1], and so on.The previous candle, fully closed — stable valuesPreferred for filters and confirmations with NOVOBAR==1
The recommended pattern with NOVOBAR:
NOVOBAR==1 && DIR[1]==1 && BID>VWAP @MARKET -> SetVolume[0.01]
Instead of: NOVOBAR==1 && DIR[0]==1 && CLOSE[0]>VWAP (DIR[0] almost never fires, and CLOSE[0] is redundant with BID)

Math in expressions — any variable, with parentheses

Since robot 5.7.213, both sides of a comparison accept math with any variable in this manual: price, position, account, indicator, the daily and weekly variables and the free numbers. You can use parentheses and the normal order of operations: multiplication and division before addition and subtraction. A single evaluator does all the math, always with the exact value, never rounding along the way.

You wantWrite this
Down 2% from yesterday's close(BID-YCLOSE)/YCLOSE*100<-2 or BID<YCLOSE*0.98
3% below the day's highBID<DHIGH*(1-3/100)
Price in the bottom third of the day's rangeBID<DLOW+(DHIGH-DLOW)/3
Price 1% above the IND5 moving averageCLOSE[0]>IND5[0,0]*1.01
IND1 RSI more than 10 points above its value 5 candles agoIND1[0,0]-IND1[0,5]>10
Buy profit above 1% of equityBPROFIT>EQUITY*0.01
Volume 30% above the previous candleTVOL[0]>TVOL[1]*1.3
Body takes up more than half of the candleBODY[1]>RANGE[1]*0.5
Math on the A2 assetA2CLOSE[0]-A2OPEN[0]>0 or A2DAYCHG>1
The threshold comes from the F7 window, to optimize itDAYCHG<-P1
A term with no value refuses the line. If a term in the math does not exist (misspelled name) or has no value yet (indicator switched off, empty A2, short history), the whole line is refused and the robot warns in the alerts panel. Before robot 5.7.213, that term counted as zero with no warning, and the comparison could be always true. Division by zero still counts as zero. A % or $ at the end of a number is ignored: DAYCHG>1.5% is the same as DAYCHG>1.5.
A space between two numbers (or two names) refuses the line. Spaces are free around an operator, after a comma and before a bracket — CLOSE[0] + 2 > 0 and IND1[0, 0] are fine. But two terms separated only by a space, with no operator between them, are not a calculation: CLOSE[0]>185 000 is refused and the alerts panel shows the fragment ('185 000'). Write the number together: 185000. Before robot 5.7.219, the robot joined the numbers (2 2 became 22) or read only the first one (185 000 became 185), without warning.
TVOL vs RVOL — which one to use?
TVOL (tick volume) is always available on any asset and any broker — it is the count of price changes within the candle.
RVOL (real volume in contracts) depends on the broker transmitting the full feed: B3 brokers usually do; OTC Forex brokers usually do not (it returns 0).
Rule of thumb: use TVOL by default. Only use RVOL if you confirm that RVOL[1]>0 is returning real values on your asset.
BODY vs RANGE — when to use each
BODY[N] = |CLOSE[N] − OPEN[N]| — measures the body (directional conviction). A big body = strong pressure from one side.
RANGE[N] = HIGH[N] − LOW[N] — measures the total range (volatility, wicks included). A big range can be stop-hunting with a small body.
Combine the two to filter out dojis: BODY[1] > RANGE[1] * 0.5 = the body takes up at least 50% of the range (a "clean" candle, with no dominant wicks).

Operators % (modulo) and ? : (ternary) ⭐

Besides + − × ÷, the evaluator accepts two new operators:

OperatorWhat it doesExample
% (modulo)The remainder of a division. Same precedence as ×/÷. Useful for round levels and cyclical logic.CLOSE[0]%10==0 = a price that is a multiple of 10
COND ? A : B (ternary)It picks the value A if the condition is true, otherwise B. Use it inside SetVolume[] for an adaptive volume.SetVolume[BID>AVGPRICE ? 0.02 : 0.01]
The ternary uses the evaluator that recognises prices (ASK/BID/LASTBUY), Phase C and Phase D variables and numbers — it does not recognise BVOLO/DWINRATE inside the ? :. Since the : is also a time separator, the ternary is only activated when there is a ? in the expression (it does not clash with 9:30).

Pending orders in expressions — @LIMIT / @STOP ⭐

Instead of entering at market, the expression can leave a pendingorder. The type comes from the @; the direction comes from the field (BUY or SELL).

CommandOn a BUYOn a SELL
@LIMIT[N]Limit N pts below the price (a pullback)Limit N pts above (a bounce)
@STOP[N]Stop N pts above the price (a breakout)Stop N pts below
@A2LIMIT[N] / @A2STOP[N]
@A3LIMIT[N] / @A3STOP[N]
The same logic, but the order is placed on the A2 / A3 asset (secondary/tertiary)
Unit of [N]MeaningExample (XAUUSD)
Points (without $)The same ruler as SetSL[N] — the trader's point. On XAUUSD 1 point = US$ 1.00@STOP[20] = $20 above
Monetary ($)A distance in price value, converted into points on the right symbol (A1/A2/A3). Useful where 1 point ≠ 1 price unit (WIN$, forex, shares)@STOP[$20] = $20 above
How many pending orders in the same direction may stack up is controlled by ✏️ Max PENDING ORDERS/dir (1=default, 0=unlimited), also editable in CONFIG → ROBOT. To cancel pending orders use @CANCELPENDING always in EXIT (EXIT), never in an entry field — exit commands in a BUY/SELL field are blocked and reported in the journal.

Phase F — Market Structure (LEG*, STRUCT, BOS, EFFRES... variables) 🔒

Variables that measure trend legs, structure and flow — the quantitative core of Dow and Wyckoff. They work in any BUY/SELL/EXIT expression, independently of the AI. The Gemini AI uses those same figures to classify the Wyckoff phase in plain language (accumulation A-E, spring, SOS, and so on) — but that is optional and separate.

PrerequisiteWhat it sets
FaseF_UseMarketStructure = trueSwitches the engine on. With false (the default) every variable returns 0 at no cost.
FaseF_TimeframeThe structure's TF (it may differ from the execution TF — H1 or H4 is recommended for the structure).
FaseF_SwingWindow = 3Candles on each side to confirm a pivot. Smaller = more sensitive (more legs, shorter); larger = more robust (fewer legs, longer).
FaseF_VolMode = 0 (AUTO)Real volume when the broker transmits it (B3, futures), tick volume as the fallback (Forex CFD). Leave it at 0 to work on any asset.
Repainting by design: the leg being formed (LEGDIR, LEGLEN, and so on) runs from the last confirmed pivot to the current candle — it changes on every tick as price moves. That is expected (the same as any live structure analysis). Use LEGATR and LEGRATIO for robust conditions that do not depend on the leg's exact value.
Structure TF ≠ execution TF — how to combine them:
Put ✏️ ⏰ Chart to read the structure log under H1 to read the structure from H1 and execute on M5/M1. The expression STRUCT==1 && LEGRATIO>1 will evaluate H1's structure but the order goes in on the chart's TF. It is the classic Wyckoff "top-down": confirm the phase on the higher TF, execute on the lower one.

SetSL / SetTP — points on entries, absolute price on @MODIFY

ContextUnit of SetSL / SetTPExample
An entry expression (BUY1, SELL1, and so on)Points — the distance from the entry priceSetSL[50] = SL 50 points below the entry
A modification expression (@MODIFY)An absolute price — a fixed level on the chart or a dynamic expressionSetSL[LOW[1]] = SL at the previous candle's low
SL/TP in MONEY — SetSL[$100] / SetTP[$200]: instead of points, you set how much you want to risk or make in the account's currency. The robot converts it into points at the moment it sends the order, using the asset and the volume of that entry.

Real examples (mini index: R$ 0.20 per point · mini dollar: R$ 10.00 per point):
  • SetVolume[1] -> SetSL[$10] in the WIN = SL at 50 points
  • SetVolume[2] -> SetSL[$20] in the WIN = SL at 50 points (2 contracts cost twice as much per point)
  • SetVolume[1] -> SetSL[$50] in the WDO = SL at 5 points
It works on any market (B3, forex, gold, shares) because the calculation uses the tick value reported by the broker. If the broker does not report that value, the robot warns you in the alerts panel and ignores the money SL — it never guesses.
What "1 point" means on each market: the robot uses the unit that market's traders use — not the broker's tick.
  • Futures (WIN, WDO, indices, e-minis): 1 point = 1 full contract point. SetSL[200] on the mini index = 200 index points (WIN moves in steps of 5, so that is 40 ticks).
  • Forex (5 or 3 decimals): 1 point = 1 pip. SetSL[50] on EURUSD = 50 pips.
  • Gold / Bitcoin: 1 point = 1 dollar. SetSL[300] on XAUUSD = US$ 300 of distance.
  • Shares: 1 point = 1 cent. SetSL[100] on PETR4 = R$ 1.00.
It applies to SetSL, SetTP, SetBE, SetTS, for the risk-by-% calculation, for the pending orders @LIMIT[N]/@STOP[N], for the fields of Breakeven, Trailing, profit giveback and time stop, to the entry distance filter and for the SL/TP in points of the Trading Desk and the Telegram bot. It is one single ruler, across the whole robot.

Two exceptions, both deliberate:
  • ROUND[N] / DISTROUND[N] / NEARROUND[N] use the symbol's raw decimal place , because a round number is a price figure on the chart. On gold, ROUND[100] = US$ 1 and SetSL[100] = US$ 100.
  • The prefix $ (@STOP[$20], SetSL[$100]) is not a point at all: in @LIMIT/@STOP it speaks in price units and in SetSL/SetTP it speaks in your account's money.
🔍 How to check it at your broker: on startup the robot writes to the Experts a row [UNIDADES] with the asset, what 1 trader's point is worth, the broker's tick and the minimum distance required. It is the proof of the ruler in your own environment — ask for it before arguing about any distance figure.
ClosePercent[N] closes N% of that side's total, not of each position. If you have 3 long positions and use ClosePercent[50], the robot closes half of the summed volume of the three — spreading it across them — and not half of each one. With a single position both readings come to the same thing.

The volume closed is always rounded down to the asset's step: 50% of 3 contracts = 1.5 → it closes 1. If the fraction falls below the tradable minimum (e.g. 50% of 1 contract), the robot does not execute and warns in the panel SAFETY ALERTS (Partial exit not possible) — it never closes more than you asked for.

Each partial exit line acts once per position. The robot checks the condition every second. Up to version 5.7.220, while it stayed true, the same line closed N% again of what was left and emptied the position bit by bit. Now a line with ClosePercent[50] takes the partial once from that position and does not act on it again. For a second partial, use another line, as in the 3-target exit. The conditions of the lines can stack up (RSI above 70, 75, 80): the line that has already acted passes the turn to the next one that is true. If the position grows (a new entry added to it, on a netting account), the line applies again.
SetSL[LOW[1]] in an entry expression does not work as expected — LOW[1] would be read as a plain number through StringToDouble, ending up as 0. Use SetSL[LOW[1]] only in @MODIFY.
📖 The list of every variable, the table of required parameters for each advanced indicator and the glossary of concepts (VWAP, POC, pivots, gap, ROC...) are gathered in 📖 Complete Variable Reference.

📖 COMPLETE VARIABLE REFERENCE

This is the complete list of every variable (token) the robot recognises in BUY, SELL, EXIT, MODIFICATION and FILTERSexpressions. Combine them freely to build your rules.

How to read it:
• [N] = how many candles back ([0] = the current forming candle, [1] = the last closed one).
• Names in brackets are aliases — they work exactly like the main one.
• A2 / A3 = the secondary / tertiary assets configured in the parameters.
• 🔒 = it requires a parameter to be enabled in the EA (named on the same line).
• Operators: == != > < >= <= · connectors && (E) and || (OR).

1. Candle of the main asset

VariableMeaning
HIGH[N] / LOW[N]The high / low of candle N
CLOSE[N] / OPEN[N]The close / open of candle N
TVOL[N]Tick volume (the number of price changes) of candle N — always available
RVOL[N]The real volume in contracts of candle N (0 if the broker does not send it, e.g. OTC Forex)
BODY[N]The body's size: |fechamento − abertura| of candle N
RANGE[N]The total range: high − low of candle N
DIR[N]The direction of candle N: 1 up, -1 down, 0 doji

2. Market price, spread and account

VariableMeaning
ASK / BIDThe current buy / sell price
SPREADThe current spread in points
EQUITYEquity (balance + floating profit)
BALANCEThe account balance (closed positions only)
MARGIN / FREE_MARGINUsed margin / available free margin
DRAWDOWNThe current drawdown (balance − equity)
MARGINLEVEL ⭐The margin level in % (Equity ÷ Used margin × 100). Above 300% = comfortable; below 150% = risky. It returns 999999 when there are no positions. E.g. MARGINLEVEL>200
MARGINFREE ⭐Free margin in money (equivalent to FREE_MARGIN)

3. Time

VariableMeaning
TIMEThe current time in decimal (e.g. 9.5 = 09:30). It accepts the format 9:30
DAYOFWEEK (DAY, WEEKDAY)Day of the week: 0=Sunday, 1=Monday ... 6=Saturday
TIMELEFT ⭐The seconds left until the current candle closes (on M1 it runs from 60 to 0). E.g. TIMELEFT<10 @BCLOSE = exit just before the close

4. Open positions — totals for the main asset (A1)

VariableMeaning
VOLBUY (BVOLO) / VOLSELL (SVOLO)The total volume of open buys / sells
VOL (VOLUME)The total open volume (buys + sells)
VOLBUYPOS / VOLBUYNEGThe volume of profitable / losing buys
VOLSELLPOS / VOLSELLNEGThe volume of profitable / losing sells
BPROFIT (CPROFIT) / SPROFIT (VPROFIT)The profit/loss of the open buys / sells (R$)
BPROFITO / SPROFITOThe total profit of EVERY open buy / sell
BPROFITALL / SPROFITALLThe total buy / sell profit (excluding swap and commission)
CPROFITALL / VPROFITALLThe total buy / sell profit (including swap and commission)
PROFITALL / CLOSEALLThe account's total profit (open buys + sells)
BPROFITPOS / BPROFITNEGThe summed profit of the profitable / losing buys only
SPROFITPOS / SPROFITNEGThe same for sells
BPROFITPCT (BPROFIT%) / SPROFITPCTThe buy / sell profit as a % of the balance
BUYCOUNT / SELLCOUNTThe number of open buy / sell positions
POSTIMEThe age (min) of the oldest open position
LASTBUY / LASTSELLThe price of the last buy / sell opened — the most recently opened one (aliases: BLPRICE/SLPRICE). On a netting account or on the exchange: the price of the last execution added to the position. BPRICE/SPRICE are no longer aliases: they are the AVERAGE price (since 5.7.222)
AVGPRICE (ALLAVGPRICE) ⭐The volume-weighted average price of EVERY open position (buys+sells). Essential for grids and for the group's break-even exit. E.g. BID>AVGPRICE @BCLOSE
BUYAVGPRICE (BAVGPRICE) / SELLAVGPRICE (SAVGPRICE) ⭐Average price of the buys only / sells only opened BY THE ROBOT — the orders carrying its magic number (those from the rules and from its panel). The BPRICE/SPRICE, like VOLBUY and the BPROFIT, count ALL the positions of the asset, including those opened outside the robot (MT5 window, phone, another robot). With a manual order open, the two averages give different numbers.
ALLPOSOPEN / BUYPOSOPEN / SELLPOSOPEN ⭐The number of open positions: total / buys only / sells only (equivalent to BUYCOUNT/SELLCOUNT)

5. Open positions — individual (pick by index [N])

[0] = the first position opened, [1] = the second, and so on.

VariableMeaning
BPRICE[N] (POSBUY[N]) / SPRICE[N] (POSSELL[N])The entry price of buy / sell N
BSL[N] (BUYSL, BUYSTOPLOSS) / SSL[N] (SELLSL, SELLSTOPLOSS)The Stop Loss of buy / sell N
BTP[N] (BUYTP, BUYTAKEPROFIT) / STP[N] (SELLTP, SELLTAKEPROFIT)The Take Profit of buy / sell N
BPROFIT[N] / SPROFIT[N]The profit/loss of that specific buy / sell N

6. Closed positions (last finished trade)

VariableMeaning
ENTRYBUY / EXITBUYThe entry / exit price of the last closed BUY
ENTRYSELL / EXITSELLThe entry / exit price of the last closed SELL
SLBUY / TPBUYThe SL / TP the last closed BUY had (0 if it had none)
SLSELL / TPSELLThe same for the last closed SELL
TEXITBUY / TEXITSELLThe duration (min) of the last closed BUY / SELL
LASTBUYTIME / LASTSELLTIMEMinutes since the last buy / sell CLOSED (the robot reads today's closes; 0 until it has seen one)
LASTTRADETIMEMinutes since the last trade (either side)
LASTTRADE / LASTPROFITThe last trade's result: 1=a win, -1=a loss / the profit in R$
LPROFIT / LTRADEThe last position's profit / 1=WIN, -1=LOSS
LBUYPROFIT (RESULTBUY) / LSELLPROFIT (RESULTSELL)The profit of the last closed BUY / SELL
LVOLUME / LBUYVOLUME (EXITVOLBUY) / LSELLVOLUME (EXITVOLSELL)The volume of the last position / the last buy / the last sell
RESULTB[N] / RESULTS[N]The profit of buys / sells closed in the last N minutes

7. Result of the DAY (main asset)

VariableMeaning
DPROFIT (DAILYPROFIT) / DLOSS (DAILYLOSS)The day's total profit / loss
DBUYPROFIT / DSELLPROFITThe day's buy / sell profit
DVOLUME / DBUYVOLUME / DSELLVOLUMEThe day's total / buy / sell volume
DTRADES / DWINS / DLOSSESThe day's total trades / wins / losses
DWINRATEThe day's win rate (%)
DBUYTRADES / DBUYWINCOUNT / DBUYLOSSCOUNT / DBUYWINRATEThe day's BUY trades / wins / losses / win rate
DSELLTRADES / DSELLWINCOUNT / DSELLLOSSCOUNT / DSELLWINRATEThe same for the day's SELLS
GAINPROFIT ⭐ / LOSSPROFIT ⭐The sum of the day's WINNING trades only / LOSING trades only (kept apart). It allows fine-grained locks: LOSSPROFIT<=-100 @BCLOSE

7.1 Signal memory (SIG_*) ⭐

Recorded the moment the robot opens an entry. They reset every day. Useful to avoid repeating a signal, to require alternating directions or to cap the number of trades.

VariableMeaning
SIGLASTThe last signal's direction: 0=buy, 1=sell, -1=none
SIGTOTAL / SIGBUY / SIGSELLThe number of signals in the day: total / buys only / sells only. E.g. SIGTOTAL<5 = at most 5 entries a day
SIGPRICEThe price when the last signal fired
SIGTIME / SIGTIMEBUY / SIGTIMESELLThe time (epoch) of the last signal / the last buy one / the last sell one

8. Result of the WEEK (main asset)

The same variables as the day's, swapping the D prefix for W.

VariableMeaning
WPROFIT / WLOSSThe week's total profit / loss
WBUYPROFIT / WSELLPROFITThe week's buy / sell profit
WVOLUME / WBUYVOLUME / WSELLVOLUMEThe week's total / buy / sell volume
WTRADES / WWINS / WLOSSES / WWINRATEThe week's trades / wins / losses / win rate
WBUYTRADES / WBUYWINCOUNT / WBUYLOSSCOUNT / WBUYWINRATEThe week's BUY statistics
WSELLTRADES / WSELLWINCOUNT / WSELLLOSSCOUNT / WSELLWINRATEThe week's SELL statistics

9. Phase A — Timing, Session, Spread and News

VariableMeaning
NOVOBAR1 only on the first tick of each new bar
BARSEGSeconds since the current candle opened
SESS_ASIA / SESS_LONDRES / SESS_NY1 when the matching session is active
SPREADMEDThe spread's average (EMA) in points
SPREADXThe current spread ÷ the average (1.0=normal, 2.0=double)
PFDIAThe Profit Factor of the trades closed in the day
NEWSIMPThe next news item's impact: 1=low, 2=medium, 3=high
NEWSCTY1 if the next news item affects the asset's currency/pair
NEWSIN[X]1 if there is high-impact news in the next X minutes

10. Phase B — Risk and tracking (A1)

VariableMeaning
RISCO_AB / ALVO_ABThe total risk / target in R$ if every SL / TP were hit
DIST_SL / DIST_TPThe distance in points to the most recent position's SL / TP
RMULTThe current profit ÷ the initial risk (R multiples)
SEQWIN / SEQLOSSThe streak of wins / losses closed today
POSMIN / POSMAXThe worst / best floating profit ever seen on the A1 position

11. Multi-asset (A2 / A3)

They require configuring ✏️ Secondary asset A2 and/or ✏️ Tertiary asset A3. The candle series use the ✏️ A2/A3 timeframe in EXPRESSIONS. Alternative syntax: the prefix S2_ / S3_.

Variable (A2 prefix; swap it for A3)Meaning
A2HIGH[N] / A2LOW[N] / A2CLOSE[N] / A2OPEN[N]Candle N of asset A2 (HIGH/LOW accept N=0,1,2; CLOSE/OPEN N=0,1)
A2BODY[N] / A2RANGE[N]The body / range of A2's candle N
A2ASK / A2BID / A2SPREADA2's current buy / sell price / spread
A2BPROFIT / A2SPROFIT / A2PROFITALLThe profit of buys / sells / total open on A2
A2VOLBUY / A2VOLSELL / A2BUYCOUNT / A2SELLCOUNTVolume and count of positions open on A2
A2LASTBUY / A2LASTSELL / A2POSTIMEThe price of the last buy / sell / the position's age on A2
A2AVGPRICE ⭐ / A2BUYAVGPRICE / A2SELLAVGPRICEThe weighted average price of the positions open on A2: all / buys only / sells only (A2's version of AVGPRICE). It enables a grid on the secondary asset
A2DPROFIT, A2DWINRATE, A2DTRADES...The history of the day on A2 (the same D* family as A1's, with the prefix)
A2WPROFIT, A2WWINRATE...The history of the week on A2 (the W* family with the prefix)
A2LPROFIT / A2LTRADEThe result of the last position closed on A2
General rule: almost every A1 position/history variable exists for A2 and A3 by adding the prefix A2 or A3. ✅ A2TVOL[N] / A2RVOL[N] (and the A3 equivalents) exist since robot 5.7.215: candle volume of A2/A3. ❌ Does not exist: A2DIR (nor A3DIR) — DIR is only for the main asset.

12. Gemini AI

VariableMeaning
ANALISA_IA (IA_DECISAO)The AI's decision: 1=buy, -1=sell, 0=wait, -99=invalid cache
IA_CONFIANCAThe signal's clarity/strength (%) — ≠ probability (see IA_PROB_ALTA/IA_PROB_BAIXA)
IA_PROB_ALTA (IA_PROBUP) / IA_PROB_BAIXA (IA_PROBDOWN)The probability of up / down (%)
IA_VALIDA1 if the cached analysis is still valid (always use it alongside)
IA_FECHAR_BUY / IA_FECHAR_SELL1 when the AI suggests closing buys / sells
IA_REVERSAO / IA_FORCA_TENDENCIAThe reversal signal / trend strength according to the AI
IA_IDADE_SEGThe cached analysis's age (seconds)
IA_RR, IA_SL_PTS, IA_TP1_PTS, IA_TP2_PTS, IA_NOVO_SL_BUY/SELL, IA_NOVO_TP_BUY/SELLSuggested R:R, SL and TP values. ⚠️ In SIGNAL-ONLY mode they return zero — do not use them for operational decisions
For A2/A3 use the prefix: A2ANALISA_IA, A2IA_CONFIANCA, A2IA_VALIDA, A3ANALISA_IA... It requires ☑️ Enable AI Assistant (Gemini).

13. Configurable indicators (IND)

VariableMeaning
IND1[buffer,candle] ... IND30[buffer,candle]The value of an attached indicator. buffer = the indicator's line, candle = how many candles back. E.g. IND1[0,0] = buffer 0 on the current candle. Declare each one in the 🤖️ INDICATORS FOR EXPRESSIONS SETUP (how to declare it)

14. Phase C — Internal indicators (Waves 1-4) 🔒

Each family requires the matching parameter to be enabled (see the full table in section 16 below).

Variable (aliases)Meaning
VWAP, VWAPD, VWAPW, VWAPMRolling VWAP / anchored to the day / week / month 🔒 VWAP
VWAPUP1 / VWAPDN1 / VWAPUP2 / VWAPDN2The VWAP's ±1σ / ±2σ bands 🔒 VWAP
POCThe price with the largest traded volume 🔒 POC
TENKAN, KIJUN, SENKOUA (SPANA), SENKOUB (SPANB), KUMOTOP (CLOUDTOP), KUMOBOT (CLOUDBOT)The Ichimoku's lines 🔒 Ichimoku
FIBO382, FIBO500, FIBO618Automatic Fibonacci levels 🔒 Fibonacci
BBUPPER, BBMIDDLE (BBMID), BBLOWERBollinger Bands 🔒 Bollinger
ATRREGThe volatility regime: 0=Normal, 1=Volatile, 2=Calm 🔒 ATR
BBSQZSqueeze: +1=compressed, 0=normal, -1=expansion 🔒 BB Squeeze
ORBHIGH (ORBH) / ORBLOW (ORBL)The opening range's high / low 🔒 Opening Range
VAHIGH (VAH) / VALOW (VAL)The Value Area's top / bottom 🔒 Value Area
DOJI, PINBAR, ENGULF (and DOJI1, PINBAR1, ENGULF1)Candle patterns: 0/1 or -1/0/+1 depending on the pattern 🔒 Candle Patterns

15. Phase C — Multi-timeframe Price Action (Waves A-F)

Always available (no parameter to enable). In the [N] of the OHLC ones, N = days/weeks back.

Variable (aliases)Meaning
DOPEN / DHIGH / DLOW / DCLOSEThe current day's open / high / low / close
YHIGH (PDH) / YLOW (PDL) / YOPEN / YCLOSEThe previous day's OHLC (PDH/PDL = yesterday's high/low)
WOPEN / WHIGH / WLOW / WCLOSEThe current week's OHLC
DAYCHG (DCHG) / YCHGThe % change of the day / of the previous day (signed)
GAPABS (GAP) / GAPPCT / GAPATRThe opening gap in points / % / multiples of ATR SMA-14 D1 (signed; the ATR matches MT5's native iATR)
GAPATRW / ATRW[N]The gap in multiples of the Wilder ATR SMMA-14 D1 / the Wilder ATR on the timeframe+period configured in the EA — Wilder's original method (it reacts more slowly to spikes)
DAYRNG (DRANGE) / DAYRNGPCTThe day's range in points / in %
PIVOT (PP) / R1 / R2 / R3 / S1 / S2 / S3Classic pivots calculated from yesterday's OHLC
ROUND[N] / DISTROUND[N] / NEARROUND[N]A round number (N = the step in points) / the distance to it / 1 if price is glued to it
ROC[N] (PROC)The % change against N periods ago (momentum)
FIBHIGH[N] (WINHIGH) / FIBLOW[N] (WINLOW)The high / low of the window of the last N candles
DHIGHN[N] / DLOWN[N]High / low of the last N closed days (today not included)
ADR[N] / ADRPCT[N]Average daily range over N days, in price / in % (no [N] = 14 days)
ADRUSED[N]How much of the average range has been covered today, in % (100 = a whole normal day)
CHGPCT[N]% change close to close (today: current price against yesterday's close)
DPOS[N]Price position within the day's range, in % (0 = low, 100 = high)
ZCHG[N]Today's change in standard deviations of the N-day changes (no [N] = 20 days)
DOWNDAYS / UPDAYSClosed days in a row down / up, counting back from yesterday
P1 … P5Free numbers from the F7 window, optimizable in the Strategy Tester

16. EA parameters required by each advanced variable

The Phase C variables (sections 14 and 15) only return a value if the matching parameter is on. The rest (sections 1-13) are always available. ⚠️ With the parameter unticked, the line that uses the variable is refused: it does not trade, and the robot warns in the alerts panel that the value could not be calculated. This applies to direct comparisons and also inside math. Check this table before unticking any of these parameters.

VariablesThe parameter that must be enabled in the EA
VWAP, VWAPD, VWAPW, VWAPM, VWAPUP1, VWAPDN1, VWAPUP2, VWAPDN2☑️ Enable VWAP (volume weighted average price) — the ±1σ/±2σ bands use the same parameter
TENKAN, KIJUN, SENKOUA (SPANA), SENKOUB (SPANB), KUMOTOP, KUMOBOT☑️ Enable Ichimoku — Japanese trend cloud
POC☑️ Enable POC — the price with the largest traded volume
FIBO382, FIBO500, FIBO618☑️ Enable automatic Fibonacci (finds top and bottom)
BBMIDDLE, BBUPPER, BBLOWER☑️ Enable Bollinger
ATRREG (0=Normal, 1=Volatile, 2=Calm)☑️ AI receives market VOLATILITY reading
BBSQZ (+1=Squeeze, 0=Normal, −1=Expansion)☑️ AI detects COMPRESSION before explosive moves
ORBHIGH, ORBLOW☑️ ⬜ Enable Opening Range — uses ORBHIGH and ORBLOW in conditions
VAHIGH, VALOW☑️ ⬜ Enable Value Area — uses VAHIGH and VALOW in conditions
DOJI, PINBAR, ENGULF, DOJI1, PINBAR1, ENGULF1☑️ ⬜ EXPRESSIONS ONLY: numeric vars DOJI, PINBAR, ENGULF
Waves A-F: day/week/previous-day OHLC, change/gap, pivots, round numbers, ROC, Fibo windows, GAPATRW, ATRW (section 15)None — always available (nothing to enable)

16.5. Phase F — Market Structure & Flow (Dow + Wyckoff) 🔒

It requires enabling ☑️ AI + EXPRESSIONS: Structure & Flow to be ticked. Every variable uses the TF configured in ✏️ Chart to read the structure (FaseF_Timeframe). They are read-only variables — they depend on no order book and no DLL. AUTO volume: it uses real volume when the broker sends it (B3), otherwise tick volume. It works in BUY/SELL/EXIT/FILTER expressions and feeds the Gemini AI's Wyckoff analysis (phases A-E, spring, SOS, and so on).

F1 — The leg engine (impulse vs correction)

A "pivot" is a high or low confirmed by FaseF_SwingWindow candles on each side. The LEG leg runs from the last confirmed pivot to the current (forming) candle; the previous leg PLEG is the move that finished before it. ⚠️ The forming leg is provisional — the pivot is only confirmed after N candles have closed to its right (the same behaviour as any live structure reading).

VariableMeaningTypical use
LEGDIR+1 = the current leg is up · -1 = downLEGDIR==1 && STRUCT==1
LEGLENThe current leg's range in pointsLEGLEN>200
LEGATRThe current leg's range in multiples of ATR. LEGATR>1 = a leg larger than average volatilityLEGATR>1.5 && LEGDIR==1
LEGBARSThe current leg's duration in candlesLEGBARS<5 (a fast leg)
LEGVOLThe current leg's accumulated volume (tick or real)LEGVOL>PLEGVOL
LEGSPEEDThe leg's speed: LEGLEN ÷ LEGBARS (points per candle)LEGSPEED>50
PLEGLENThe range of the previous leg in pointsLEGLEN>PLEGLEN
PLEGATRThe previous leg in multiples of ATRPLEGATR<0.6 (a shallow correction)
PLEGVOLThe previous leg's volumeLEGVOLRATIO>1
LEGRATIOLEGLEN ÷ PLEGLEN. Above 1 = the current leg is larger than the previous one (expansion); below 1 = contractionLEGRATIO>1.2 (a healthy impulse)
LEGVOLRATIOLEGVOL ÷ PLEGVOL. Above 1 = the current leg carries more volumeLEGVOLRATIO>1 && LEGDIR==1
Dow's 5th Principle measured numerically: in a healthy uptrend the impulse (the up leg) should be larger and carry more volume than the correction (the down leg) — that is, LEGRATIO>1 && LEGVOLRATIO>1 when LEGDIR==1. When the correction starts to match the impulse in range/volume, the trend is weakening.

F2 — Formal Dow structure (confirmed pivots)

It uses only confirmed pivots (never the forming close). SWHIGH and SWLOW are always the most recent high/low that passed the window filter. It needs at least 2 confirmed legs to return non-zero values.

VariableMeaningTypical use
STRUCT+1 = an uptrend (HH+HL) · -1 = a downtrend (LH+LL) · 0 = sideways/transition. It compares the last 2 confirmed highs and lows.STRUCT==1 && LEGDIR==1
SWHIGHThe price of the last confirmed swing highBID < SWHIGH-50
SWLOWThe price of the last confirmed swing lowASK > SWLOW+50
SWHIGH1The price of the second-to-last confirmed swing high (to compare HH vs LH)SWHIGH > SWHIGH1 (HH)
SWLOW1The price of the second-to-last confirmed swing low (to compare HL vs LL)SWLOW > SWLOW1 (HL)
BOSBreak of Structure: +1 = the current close above SWHIGH (a bullish BOS) · -1 = below SWLOW (a bearish BOS) · 0 = no breakBOS==1 && STRUCT==-1 (spring/SOS)
Use a TF ≥ H1 for stable structure signals. On M1/M5 the pivots are only confirmed N candles after they form — the structure changes fast. BOS on M1 is very noisy; use it as a secondary filter, or on larger TFs.

F3 — The Wyckoff core: analytical volume (effort × result)

It measures the relationship between effort (volume) and result (price displacement). A divergence between the two is Wyckoff's most powerful signal: a lot of volume with price going nowhere = absorption; a lot of price on little volume = a fragile move.

VariableMeaningTypical use
VOLAVGThe average volume per candle over the last FaseF_VolAvgPeriod (default 20) candles. The reference used to normalise the other volume indicators.LEGVOL > VOLAVG*20
VOLXThe current leg's volume (vol/candle) divided by VOLAVG. 1.0 = volume at the average; 2.0 = double the average; 0.5 = half (a dry-up).VOLX > 1.5 && LEGDIR==1
EFFRESResult ÷ Effort: (LEGLEN/ATR) ÷ VOLX. High = an efficient leg (a lot of price for relatively little volume) = a strong trend. Low = an inefficient leg (little price for a lot of volume) = possible absorption or exhaustion.EFFRES > 1.5 (a healthy impulse)
ABSORP1 if the last candle has volume ≥ FaseF_AbsorpVolX× the average and a body ≤ FaseF_AbsorpBodyPct (default 35%) of the range. It indicates smart money absorbed the pressure without letting price move.ABSORP==1 && ASK>SWLOW
CLIMAXVolume climax: +1 = a buying climax (volume ≥ FaseF_ClimaxVolX× the average plus a close at the top of the range) · -1 = a selling climax (a close at the bottom) · 0 = normal. An exhaustion signal at extremes.CLIMAX==-1 && STRUCT==-1 (bottom)

17. Glossary — the concepts behind the variables

TermWhat it means in practice
VWAPThe day's volume weighted average price. It serves as a "fair value" reference: above = a bullish trend, below = a bearish one.
POC (Point of Control)The price level where the largest volume traded. It acts as a magnetic support/resistance.
ORB (Opening Range Breakout)The high and low formed in the session's first minutes. Breaking above ORBHIGH = a sign of strength; below ORBLOW = weakness.
ATR (Average True Range)The period's average volatility. ATRREG==1 means a more agitated market; ATRREG==2 means a calm one. The EA offers two methods: SMA (a simple average of the True Ranges — the same as MT5's native iATR , used in GAPATR and ATRREG) and Wilder SMMA (a progressive exponential average — the original method Wilder described in 1978, used in GAPATRW and ATRW). On stable assets the values are close; on very volatile ones the SMMA reacts more slowly.
Bollinger BandsBands around the mean. BBUPPER/BBLOWER are the extremes; BBMIDDLE is the mean. BBSQZ==1 = compressed bands (an imminent expansion).
FibonacciPercentage levels (38.2%, 50%, 61.8%) calculated on recent swings. FIBO618 = the 61.8% level, a classic support/resistance.
IchimokuA set of lines that summarise trend, momentum and support/resistance. Price above KUMOTOP means an uptrend; below KUMOBOT means a downtrend.
Classic Pivots (PIVOT/PP, R1–R3, S1–S3)Supports and resistances calculated from the previous day's OHLC. PIVOT is the central point; R1/R2/R3 are resistances; S1/S2/S3 are supports. Widely used in WIN/WDO day trading.
Previous day's high/low (PDH/PDL)YHIGH (alias PDH) and YLOW (alias PDL) = yesterday's high and low. DOPEN/DHIGH/DLOW/DCLOSE = the current day's OHLC; WOPEN/WHIGH/WLOW/WCLOSE = the week's OHLC. Breaking these references is a classic trigger.
Opening gap (GAPABS/GAPPCT/GAPATR/GAPATRW)The difference between today's open and yesterday's close — in points (GAPABS), in % (GAPPCT), in multiples of ATR SMA-14 (GAPATR) or in multiples of the Wilder ATR SMMA-14 (GAPATRW). It is signed: positive = a gap up, negative = a gap down. Use GAPATR for behaviour identical to native MT5; use GAPATRW for Wilder's original method.
Round numbers (ROUND/DISTROUND/NEARROUND)"Psychological" levels (e.g. 130000 on WIN). In ROUND[N], the N is the the step in points (not candles back). DISTROUND = the distance to the nearest round level; NEARROUND = 1 when price is glued to it.
ROC (Rate of Change)The percentage change in price against N periods ago — it measures momentum. A positive value means upward acceleration; a negative one, downward.
VWAP bands (VWAPUP1/DN1/UP2/DN2)±1σ and ±2σ deviations around the VWAP. Price touching VWAPUP2 = very stretched to the upside (possible profit-taking/reversal); VWAPDN2 = stretched to the downside. It requires ☑️ Enable VWAP.
Leg (LEGLEN, LEGRATIO)The price move between two consecutive pivots (high→low or low→high). The current leg (LEG*) runs from the last confirmed pivot to now; the previous one (PLEG*) is the move that finished before it. Comparing the two reveals whether the market's strength is expanding or contracting.
Impulse vs Correction (Dow's 5th Principle)In a healthy trend the move in the main direction (the impulse) should be larger and carry more volume than the move against it (the correction). When the correction starts to match the impulse in range or volume, the trend is weakening — a possible reversal. Measured by LEGRATIO and LEGVOLRATIO.
Effort vs Result (Wyckoff)Effort = volume; Result = price displacement. High volume plus price going nowhere = absorption (smart money soaking up the sellers' supply, or vice versa). High volume plus price exploding = confirmation of strength. Measured by the variable EFFRES: high = an efficient trend; low = possible absorption or exhaustion.
Absorption (ABSORP)A candle with above-average volume and a small body relative to its range: price tried to move but was "absorbed" by the other side. At support = smart money buying; at resistance = smart money selling. A sign of quiet accumulation/distribution. The variable ABSORP==1.
Volume climax (CLIMAX)Extremely high volume at a leg's extreme — an exhaustion signal. Buyers/sellers "gave it everything" at once; who is left to buy/sell next? It often marks tops and bottoms. CLIMAX==1 = a buying climax (a possible top); CLIMAX==-1 = a selling climax (a possible bottom).
Break of Structure (BOS)When price breaks the last confirmed swing high (BOS==1, bullish) or swing low (BOS==-1, bearish). In Wyckoff the BOS after a spring (a false break of support plus recovery) is the SOS (Sign of Strength) — use BOS==1 && STRUCT==-1 to detect that pattern.
Not sure whether a variable is working? Enable Errors in expressions in the LOG/DEBUG group — the robot reports in MT5's Journal which token it did not recognise.

📦 READY-MADE STRATEGIES — DOWNLOAD AND USE

Complete robot configurations, ready to use. Each .set Strategy is a file that loads every parameter at once — with no need to set them field by field.

The .set Strategies will be available shortly. The examples below already show each one's expressions — you can build them by hand in the Library in the meantime.
How to load a .set Strategy into the robot — step by step:
  1. Download the file .set and save it in any folder on your computer.
  2. In MT5, right-click on the chart where MQL PRO TRADER is running and choose Expert Advisors → Properties — or press F7.
  3. In the window that opens, click the Inputs.
  4. In the window's bottom left corner, click the [Load].
  5. Browse to the folder where you saved the file, select it and click Open.
  6. The parameters will be filled in automatically. Check that they match what you want.
  7. Click [OK]. That is it — the robot is already trading with the new strategy.

⚠️ Always test the strategy on a Demo account before using it on a live one. Adapt the volume (SetVolume), targets and limits to the size of your account.

Could not load the strategies. Check that downloads/sets-manifest.json is reachable.
Failed to fetch
Got a strategy that worked well? Share it in the Group →

Support and Contact

Need help with the setup or run into a problem? Use the channels below to get in touch with support.

📎 Send your .set for the team to look at. On the 🆘 Support of the Center, when you open a ticket you can attach your robot's configuration file .set (and screenshots). Our team opens that same file, reviews your expressions and protections and suggests improvements — with no need for you to retype anything.
Before getting in touch, check whether your question is already answered in this documentation — use the search box at the top of the sidebar (🔍 Buscar...) to search for keywords.
Do you have access to the Performance Center? Use the 🆘 Support tab inside the dashboard itself: open a ticket by subject (installation, licence, billing, a bug…), attach screenshots and files and follow the answer right there — when the team replies, an unread notice appears. It is the channel that tracks your case best.
📊 Send a Performance Report (1 click). Still on the 🆘 Supporttab, the buttons "📊 Last 30 days" and "📊 Last month" automatically assemble a summary of your result — net profit, win rate, profit factor, payoff, costs (swap+commission), maximum drawdown, best/worst trade, buys vs sells, days traded, volume and the MQL PRO Index — and send it as a ticket, with you typing nothing. It helps the team understand your case quickly. And the "📓 Save to the Notebook" button keeps the same report as a personal note of your own, so you can follow your progress over time.
🤖
AI Support Chat — Telegram Bot
A smart chat for questions about the EA, 24 hours a day.
👉 @mqlprotraderchatbot
💬
Personal Support — Telegram
Support straight from the developer, Ronaldo Casttor.
👉 @RonaldoCasttor
📱
WhatsApp — Ronaldo Casttor
Support over WhatsApp.
👉 +55 94 98138-6880
👥
WhatsApp Group — Community
A user group for swapping strategies and questions.
👉 mqlprotrader.com.br/grupo
📧
E-mail
For formal requests or sending files.
👉 mqlprotrader@gmail.com
🌐
Official Site
Information, news and downloads.
👉 www.mqlprotrader.com.br
🛒
Subscription, renewal and refund
Subscribe or renew at mqlprotrader.com.br/pagar (PIX or card) — the licence is released automatically, there and then. For a refund within the 7-day guarantee, or any access question, talk to support on WhatsApp or Telegram quoting your MT5 account number.
When reporting a problem, include: the EA's version (visible in MT5's log at startup), the MT5 version, asset and timeframe you are using, and a capture of the error log from the terminal (the Journal tab in MT5).
Telegram Group