Authoring guide & settings reference

Write the prompt. Tune the inputs. Both in one place.

The complete Quant AI Agents v1.0 manual. Part 0 gets you from "I just bought the EA" to "live on a chart" — MT5 install, WebRequest whitelist, dashboard walkthrough, and the MQL5 Market → website activation flow. Part 1 walks you through writing your own eatrading_prompts.txt in seven steps. Part 2 documents every one of the 32 EA inputs across 8 groups plus the full alert / log reference. Defaults are tuned for XAUUSD on H4.

~15 min guide Getting started + 7 steps 32 inputs · 8 groups Encoding: ANSI Custom prompts: file-driven
Part 0 · A

Install the EA in MT5

From "I just downloaded Quant AI Agents MT5.ex5" to "EA running on a chart" in seven small moves. Same procedure for a fresh install or a version upgrade.

  1. Open the MT5 Data Folder

    In MetaTrader 5: File → Open Data Folder. A Windows Explorer window opens at %APPDATA%\MetaQuotes\Terminal\<hash>\. Keep this window open — you'll drop files into two subfolders.

  2. Drop the .ex5 into MQL5\Experts

    From the Data Folder, go into MQL5\Experts. Copy Quant AI Agents MT5.ex5 here. Upgrading from an older version? Just overwrite the old file — MT5 will use the new binary on the next chart attach.

  3. (Optional) Drop the prompt library into MQL5\Files

    If you want the EA to read your own strategy presets, copy eatrading_prompts.txt into MQL5\Files. Skip this for the first run — the EA ships with built-in defaults so the first chart attach works out of the box. You can come back here after Part 1.

  4. Restart MT5 (or refresh the Navigator)

    Close and reopen MT5, OR right-click the Navigator → Expert Advisors node and pick Refresh. Quant AI Agents MT5 should now appear in the list.

  5. Drag the EA onto a chart

    Open the chart you want to trade (e.g. XAUUSD H4). Drag Quant AI Agents MT5 from the Navigator onto the chart. The Inputs dialog opens — this is where you'll paste the License key (Group L), the AI provider API keys (Group 1B), and any non-default tweaks. See Part 2 for every field.

    • Tick Allow Algo Trading on the Common tab.
    • Leave WebRequest URLs empty for now — we'll add them in the next step.
  6. Turn on AutoTrading

    Click the AutoTrading button in the MT5 toolbar (it turns green). The smiley face on the chart's top-right corner should also be green. A red square or a sad face means AutoTrading is OFF and the EA can't place orders.

  7. Check the Experts tab

    Open Toolbox → Experts (Ctrl+T). On a healthy first run you should see lines like License verified · Quant AI Agents v1.0 · 5 agents online · PromptLibrary loaded N presets. Anything starting with SETUP INCOMPLETE, ERROR or LICENSE — jump to Common Errors or the full Group 7 log reference.

i

License key & MT5 account binding. The EA prints your account number on first run and binds the license to it. If you swap broker accounts, sign in at eatrading.ai/dashboardMy EAs and add the new MT5 number (each license covers up to 20 accounts). The next chart attach picks up the new binding automatically.

Part 0 · B

Allow these websites in MT5 (WebRequest)

MT5 blocks every outbound HTTP request by default. The EA talks to AI providers and to the license server, so MT5 needs an explicit allowlist before any of that works. One-time setup, takes 60 seconds.

  • Where MT5 → Tools → Options → Expert Advisors tab.
  • Tick Allow WebRequest for listed URL.
  • Paste each URL below into the list (one per line, leave the https:// in).
  • Click OK and re-attach the EA to the chart.

Add every URL — even if you only plan to use one AI provider. Missing a URL = silent failure on that agent and an ERROR 4060 in the Experts tab.

!

The Experts tab will tell you exactly what's missing. If you forget a URL, the EA logs WebRequest: URL is not allowed: https://<host> on first call. Copy that URL back into the Options dialog and re-attach the EA — no restart required.

i

Using a custom endpoint? If you've routed an OpenAI-compatible proxy through Apps Script (Input 1B.6), make sure the deployed Web App URL's host (typically script.google.com) is in the list. The full URL goes in the EA input, but MT5 whitelists by host.

Part 0 · C

Your dashboard, section by section

After sign-in at eatrading.ai/dashboard you land on one long page. Here's what every block does, top to bottom — and which ones light up only after you've activated your EA license.

// Top of page · Everyone

Header — greeting + shortcuts

Your name and a one-line state. Two buttons: Browse prompts jumps to the prompt library; Telegram channel opens the live signal feed.

// EA Owners · Free → Owner

"Already paid?" — Redeem license key

The big input at the top. Paste your 32-character license key (you received it by email or Telegram after purchase). One click → your account upgrades to EA Owner and every locked feature unlocks immediately. This is the same flow MQL5 Market buyers use.

Hidden once you're already an Owner.

// EA Owners only

Prompt Generator (LLM-assisted)

Describe a strategy in plain English ("mean-reversion on gold H4, exit on stoch > 80…"). The generator returns a [PRESET] block you can paste into eatrading_prompts.txt. Locked for Free accounts — owning the EA unlocks it automatically.

// Account integrity

Verify email + Link Telegram banners

Yellow strip if your email isn't verified, blue strip prompting you to link Telegram. Linking Telegram = self-service password reset by DM, plus license / activation alerts in real time. Both dismissible.

// Quick links

Workspace hub — 4 tool cards

Prompt Lab, Prompt Library, MT5 Activation, Account. Each card shows a lock badge if your role doesn't have access yet. The right rail "Recent activity" remembers your last actions.

// License & subscription

License card

Plan name (Free or EA Owner), expiry, broker tier, and your license key with a one-click Copy button. Once paid, this card also surfaces Download EA, Prompt library and Live signal channel buttons.

// Account · Everyone

Settings

First / last name, email (read-only), change password, and a 2-factor authentication toggle. Delete account button at the bottom — instant wipe with a confirm modal.

// EA Owners only

My EAs — Download & MT5 activations

Lists every license you own. Per license: Download EA button (latest .ex5), plus the list of MT5 account numbers you've bound. Each license covers up to 20 MT5 accounts — add or remove them here, the EA picks up changes on the next chart attach.

Hidden for Free accounts.

// Support · Everyone

Get help

Three direct channels: Telegram channel (announcements), the 1-on-1 AI bot (@Thangforex_Bot), and email. Every channel replies within 24 hours.

One-minute happy path for a brand-new EA Owner. Sign in → paste license key into the "Already paid?" box → scroll to My EAs → click Download EA → add your MT5 account number → drop the .ex5 into MQL5\Experts → drag it onto a chart. Done in well under 5 minutes.

Part 0 · D

Bought the EA on MQL5 Market? Activate it here

MQL5 Market handles billing and download for buyers who prefer the MetaQuotes ecosystem. To unlock the website features (Prompt Generator, Prompt Library, license dashboard, support), you need a one-time activation that links your MQL5 purchase to your eatrading.ai account.

  1. Find your MQL5 Order Number

    Sign in to mql5.com → click your name (top-right) → Payments. Find the row for "Quant AI Agents MT5". The number column is your Order Number (a numeric reference, typically 5-12 digits). Copy it. The same number is what the seller sees on their side — no mismatch.

  2. Create (or sign in to) your eatrading.ai account

    Go to eatrading.ai/signup. Any email works — it doesn't need to match your MQL5 account (MQL5 hides buyer emails from vendors, so we verify by Order Number, not by email).

  3. Open the dashboard and find the "Bought on MQL5 Market?" box

    Sign in → go to eatrading.ai/dashboard. At the top of the page you'll see a box titled "Bought on MQL5 Market?" — directly above the "Already paid?" license-key box. (If you already have an active license, the box is hidden — you don't need it.)

  4. Paste the Order Number and submit

    Paste the number into the input field → click Submit for review. The box will switch to "⏳ Pending admin review" with the date and your order number. You can cancel and submit a different number any time before it's approved.

  5. Wait for admin approval (typically <24h)

    Admin manually verifies your number against the MQL5 vendor payments panel (the buyer-side number you see and the seller-side number we see are the same). On approval, the page auto-refreshes, your role flips to EA Owner, every gated feature unlocks, and your license appears under My EAs on the same dashboard.

  6. Use your license in the EA

    Open My EAs, copy the 32-character license key, and paste it into the EA's Inputs dialog under License key (Group L). MT5 buyers from MQL5 already have the EA installed via MetaTrader auto-update — the key just turns the trial into a full activation. See Part 0 · A for the full install walkthrough.

i

Why isn't it instant / automatic? MQL5 Market hides buyer email addresses from vendors for privacy reasons, so we can't auto-match your MQL5 purchase to your eatrading.ai account. The Order Number you paste is what lets us reconcile manually. If you need an instant path, the direct purchase at eatrading.ai/pricing creates your license automatically the moment payment confirms.

!

Submitted the wrong number? Click the "Cancel and submit a different order" link on the pending box. You can only have one pending submission at a time — cancel the wrong one before submitting the correct one.

!

Submission rejected? The box will show admin's reason (typically: number not found on MQL5 vendor panel, or refunded). Double-check the number on your MQL5 Payments tab and resubmit. If you're sure the number is right, contact @Thangforex_Bot with a screenshot of your MQL5 Payments row.

Part 0 · E

API Setting — get your keys in five minutes

The EA is BYOK — bring your own key. You create the keys directly with the AI providers, paste them into the EA's inputs, and the EA calls the providers straight from your terminal. Four moves and the pipeline is live.

  1. Create a key with each provider your agents use

    Each one takes about two minutes: sign up, open the key page, click create, copy the key immediately (most providers show it only once).

  2. Paste each key into Group 1B of the EA inputs

    Drag the EA onto a chart (or press F7 on a running one) → Inputs dialog → Group 1B "AI Engine — API keys per provider". Paste each key into its matching field — no spaces, no line breaks.

    See Group 1B — every key field explained
  3. Allow the websites in MT5

    Tools → Options → Expert Advisors → tick "Allow WebRequest for listed URL" and add the endpoints. All 7 URLs — with a one-click copy button — are in Part 0 · B above.

  4. Verify in the Experts tab

    Re-attach the EA and open Toolbox → Experts (Ctrl+T). The SETUP INCOMPLETE: paste the matching API key in group 1B message disappears once every selected agent has its key — the pipeline then runs on the next cycle.

i

Your keys stay with you. They live in the EA's input fields inside your MT5 terminal and are sent only to the provider endpoints you whitelisted — they are not uploaded to eatrading.ai.

Step 01

Where and how to save the file

Drop it in the right folder, with the right encoding, with the right filename. The EA reads it once when you attach it to a chart.

  • Path <MT5 Data Folder>\MQL5\Files\eatrading_prompts.txt  — in MT5: File → Open Data Folder → MQL5 → Files.
  • Encoding ANSI (Notepad → Save As → Encoding: ANSI). UTF-16 LE also works. Avoid UTF-8 with BOM.
  • Filename must match input 2.7 Custom prompts file exactly.
See setting 2.7 — Custom prompts file

Check it loaded. After saving, remove the EA from the chart and drag it back. Look in the Experts tab — you should see PromptLibrary loaded N presets. If not, jump to Common Errors.

Step 02

File syntax

A flat, line-by-line format. Each strategy is one [PRESET]…[/PRESET] block with a STRATEGY and a RULES section inside.

eatrading_prompts.txt
# Lines starting with # are comments
# All markers MUST be at column 0 (no indentation)

[PRESET]
NAME=Short Name               required, <30 chars
SUMMARY=One-line hint         optional
WHITELIST=<your indicators>   optional, comma-separated, no spaces
TIMEFRAME=H4                 optional (H4, D1, M15…)
STRATEGY_BEGIN
...multi-line strategy...
STRATEGY_END
RULES_BEGIN
...multi-line rules...
RULES_END
[/PRESET]
Parser rules
  • Missing NAME → file rejected (falls back to built-ins).
  • Unclosed block (no STRATEGY_END, RULES_END, or [/PRESET]) → file rejected.
  • Unknown keys → silently ignored. Spell things right.
  • Hard cap: 16 presets per file. Anything beyond is dropped.
!

Indentation kills the file. Markers like [PRESET], STRATEGY_BEGIN, RULES_END must start at column 0. One leading space or tab and the parser reads zero blocks.

Step 03

STRATEGY block — teach the AI how to think

This is what the Analyst, Bull and Bear agents read. Write it like you're briefing a junior trader: the mechanism first, then the signals, then both sides of the argument.

=== HYPOTHESIS ===

Why does this strategy have an edge?

One or two sentences. Talk about the market mechanism — order flow, volatility regime, statistical drift. Not the indicator setup. "Bull and bear traps after extended moves" beats "oscillator below threshold".

=== MARKET REGIME ===

When does it work, when does it die?

  • WORKS in: <regime — e.g. trending, low-vol range, post-news drift>
  • FAILS in: <regime — e.g. chop, news spikes, gap opens>
=== KEY OBSERVATIONS ===

What's each indicator for?

  • Indicator → role (e.g. long-term MA → trend filter)
  • Signal → meaning (e.g. oscillator at extreme → exhaustion, not entry)
=== BULL ANGLES ===

Quantified reasons to go long

  • Price above long-term trend filter on working TF
  • Fast oscillator crossing up from oversold zone
  • Short-term vol below long-term baseline — calm enough to hold
=== BEAR ANGLES ===

Quantified KILL conditions

  • Daily close below short-trend filter → invalidate long thesis
  • Volatility-index spike → skip mean-reversion longs
  • Spread > 2× median → no entry
=== CONFIDENCE GUIDANCE ===

How to tier the verdict

Define what "all clean", "partial", and "blocked" actually mean for this strategy — see the ladder below.

High
All bull angles satisfied. No bear angle triggered. Volatility inside the working regime. Take full size.
Medium
2 of 3 bull angles. One soft warning. Reduce size or wait for confirmation candle.
Hold
Any bear KILL condition active, or fewer than 2 bull angles. Stand down. No trade.
i

Balance is non-negotiable. Equal counts of Bull and Bear angles, or the AI drifts long. The Bear agent needs ammo — give it explicit kill conditions, not vibes.

Step 04

RULES block — execution parameters

STRATEGY teaches the AI how to think. RULES tells it what to do once it decides to enter. Keep it numeric. Keep it volatility-relative.

=== ENTRY MECHANICS ===

Order type · timing · confirmation

Market vs limit, bar-close confirmation, retest entry. State explicitly when the entry trigger expires.

=== STOPS ===

SL · TP · Trailing

  • Hard SL: vol-anchored multiple
  • Take Profit: extended vol multiple
  • Trailing: activate after favorable extension
=== SIZING ===

Risk per trade

  • Risk: bounded % of equity per position
  • Max portfolio heat: capped across open trades
=== SESSION & VOLATILITY GATES ===

When NOT to trade

  • Session window: defined UTC band
  • Skip high-impact news inside configured blackout
  • Skip if vol expansion exceeds threshold
=== POSITION RULES ===

Concurrency & cooldown

Max 1 open position. No DCA. No averaging-down. Cooldown of 4 bars after any stop-out before re-entering the same direction.

See Group 3 — Lot sizing  ·  Group 5 — DD Protection
!

Volatility-anchored stops only. Pip-based stops break across symbols and timeframes — "20 pips" on EURUSD is rounding noise on XAUUSD. Write SL, TP and trailing as multiples of recent volatility so the same preset survives a symbol swap.

Step 05

Quality checklist

Read your preset top to bottom and tick every row below. If you can't, fix it before you load the file.

01

Quantify everything

"Fast oscillator crossing up from extreme", not "oversold". The AI cannot act on adjectives.

02

Balance bull and bear angles

Equal count, or the AI biases long. Three for three is a good baseline.

03

State KILL conditions explicitly

The Bear agent needs ammunition. "Don't enter if X" is a hard gate, not a hint.

04

Vol-anchored stops only

Auto-adapts across symbols. Pip-based stops are a portability bug.

05

One preset = one edge

Don't stack a trend-following entry with a mean-reversion exit. Make a second preset instead.

06

English, ASCII only

No Vietnamese diacritics, no smart quotes, no em-dashes. Avoids encoding garble inside the AI prompt.

07

Demo before sharing

Run the preset on a demo account for at least one full session before publishing or selling it. Never ship unverified prompts.

Step 06

Common errors

Five symptoms cover about 95% of broken prompt files. The Experts log tells you which one you hit.

Symptom Cause Fix
Only built-ins in the dropdown File didn't load at all. Open the Experts tab, find PromptLibrary entries, re-save as ANSI.
Log: no NAME The NAME= line is missing inside a [PRESET] block. Add it. NAME is required and must be <30 chars.
Log: Unterminated block A STRATEGY_END, RULES_END, or [/PRESET] is missing. Close the block. Each _BEGIN needs its _END.
Log: zero [PRESET] blocks Markers are indented, or the file is in the wrong encoding. Move all markers to column 0. Re-save as ANSI.
Garbled text inside the AI debate UTF-8 BOM or non-ASCII characters slipped in. Save as ANSI. Strip diacritics, smart quotes, em-dashes.

API & connection errors

Prompt file loads fine but the AI never answers? These four cover most of it.

Symptom Cause Fix
Log: SETUP INCOMPLETE An agent selected in Group 1 / 1C has no matching API key in Group 1B. Paste the missing key and re-attach. Part 0 · E walks through getting each key.
Log: error 4014 on WebRequest The provider's URL is not whitelisted in MT5. Tools → Options → Expert Advisors → add the URLs from Part 0 · B, then re-attach.
HTTP 401 / 403 from a provider Key invalid, revoked, or pasted with stray spaces / line breaks. Re-copy the key from the provider console into the matching Group 1B field.
HTTP 429 — rate limit Too many calls on one key: several charts sharing it, or a free-tier limit. Raise the update interval, step up the provider tier, or split agents across providers.
Step 07

Full working template — Range Breakout Archetype

A complete, parser-valid template showing the full preset structure. The indicator slots are shown as placeholders (e.g. <RANGE_IND>) — swap in the indicators your strategy actually uses. Every required section is filled in so the parser sees a valid block from day one.

eatrading_prompts.txt — Range Breakout Template
# =============================================================================
# RANGE BREAKOUT TEMPLATE — Quant AI Agents Prompt Library
# =============================================================================
# Archetype  : Classic trend-following / N-bar range breakout family
# Profile    : Low WR / high R-skew — few large trends carry the curve
# Placeholders below ( <...> ) are intentional — swap in the
# indicators and thresholds your strategy actually uses.
#
# DEPLOY:
#   1. Save this file as eatrading_prompts.txt in MQL5\Files\ (encoding: ANSI)
#   2. Or append the [PRESET] block below to your existing prompts file
#   3. Reload EA on chart
# =============================================================================

[PRESET]
NAME=Range Breakout
SUMMARY=Low-WR / high-R archetype — channel breakout, trend-following
WHITELIST=<range-indicator>,<vol-indicator>
TIMEFRAME=H4
STRATEGY_BEGIN
=== HYPOTHESIS ===
Sustained moves emerge from genuine breakouts of recent N-bar ranges. Accept low win rate to capture the few large trends.

=== MARKET REGIME ===
WORKS in: regime transitions, fundamental catalyst phases, sustained directional moves.
FAILS in: ranging chop, mean-reverting markets, post-news whipsaws.

=== KEY OBSERVATIONS ===
- <RANGE_IND> upper / lower = recent N-bar extremes.
- <SHORT_VOL> vs <LONG_VOL> ratio = expansion gauge (genuine breakout needs expansion).
- Recent failed breakouts = whipsaw zone (avoid re-entry).

=== BULL ANGLES (long breakout) ===
- Current bar CLOSES above range upper (not just wicks above)
- Short-term vol > long-term baseline -> volatility actually expanding
- No failed breakout in recent lookback window
- No structural resistance directly overhead within room-to-run buffer

=== BEAR ANGLES (invalidate breakout) ===
- Wick-only breach (close back inside range) -> false breakout, KILL
- Short-term vol flat/declining vs baseline -> low-conviction breakout
- Inside whipsaw cooldown after a losing breakout
- Right at major weekly/daily structure -> high reversal odds
- Symmetric for shorts: close below range lower with same filters

=== CONFIDENCE GUIDANCE ===
HIGH: clean close beyond range + vol expanding + no whipsaw history + clear path
MEDIUM: close beyond range but vol not expanding OR overhead structure near
HOLD: wick-only OR within whipsaw cooldown OR low-volatility regime

Note: this is trend-following — accept low WR for large R:R via trailing stops.
STRATEGY_END
RULES_BEGIN
=== ENTRY MECHANICS ===
Order type: market on bar close confirmation (not intra-bar wick).

=== STOPS ===
- Hard SL: vol-anchored multiple from entry
- No fixed TP — exit via trailing
- Trailing: opposite-channel reclaim (long exits if close drops below short-channel low; short exits symmetric)

=== SIZING ===
- Risk per trade: bounded % of equity
- Lot derived from SL distance

=== SESSION & VOLATILITY GATES ===
- Trade 24/5; pause around weekly close
- Skip configured high-impact news windows
- Skip if short-term vol flat vs baseline (low-conviction breakout)

=== POSITION RULES ===
Max 1 open per direction. No pyramiding in this template.
Cooldown: skip new entry inside configured cooldown after a stopped-out breakout.
RULES_END
[/PRESET]
16
Max presets / file
<30
Chars in NAME
ANSI
Required encoding
col 0
Marker indent

You're ready. Save the file, re-attach the EA, wait for PromptLibrary loaded N presets in the Experts tab, then pick your new preset from the 2.1 PresetStrategy dropdown. The AI Agents take it from there.

Part 2

Settings reference — all 22 inputs across 6 groups

Type, default, when to change, and what to watch out for — every EA input in v1.0. Defaults are tuned for XAUUSD on H4. The same info also lives inline inside the MT5 input dialog.

Quick start — for a first run, you only need to touch two fields: paste your API key into 1.2 API Key (one key powers all five agents), then flip 2.3 Auto place orders to true when you're ready to leave observe-mode. Everything else is already tuned.
Difficulty
32 of 32
No inputs match your filters.

Try clearing the search or switching the difficulty chip back to All.

Group 1

AI Engine — per-agent models, pipeline depth, debate rounds

v1.0 ships with one model slot per agent: the Technical Analyst, Bull, Bear, Research Manager (Judge), and Portfolio Manager (Decision) each pick their own LLM. The defaults blend providers on purpose — Bull on Claude Sonnet 4.6 (verbose reasoning), Bear on GPT-4o (terse rebuttal), Research Manager on Gemini 3 Pro (long-context arbitration), Portfolio Manager on GPT-5 (decision authority). Pipeline depth and debate rounds are your cost-vs-quality levers — drop to MINIMAL and the bill falls roughly 70%; bump debate rounds to 3 and the Judge sees three independent Bull-vs-Bear exchanges before voting.

1.1 Technical Analyst Agent enum GPT-5 mini

First agent in the pipeline. Reads the prompt's KEY OBSERVATIONS block, computes the indicators on the chart's TF, and writes the deterministic technical state the rest of the pipeline reasons over. Cheap value-tier model is fine — this agent is a transcriber, not a forecaster.

When to change

Keep on a value-tier model (GPT-5 mini, GPT-4o mini, DeepSeek-Chat, Gemini 3 Flash) unless you find the technical state is getting summarised inaccurately. Promote to a frontier model only if you trade exotic instruments with non-standard indicators.

1.2 Bull Analyst Agent enum Claude Sonnet 4.6

Argues FOR the long (or, in symmetric mode, FOR the short). Reads the prompt's BULL ANGLES block and constructs the strongest available case from the current technical state. Default is Claude Sonnet 4.6 — its long-form reasoning makes for better debate transcripts the Judge can grade.

When to change

Cross-provider mixing (Bull on Anthropic, Bear on OpenAI) reduces the risk of one provider's house style dominating the debate. Keep providers different across 1.2 / 1.3 / 1.4 unless cost forces otherwise.

1.3 Bear Analyst Agent enum GPT-4o

Counter-arguer. Reads the prompt's BEAR ANGLES block and the Bull's case, then tries to invalidate. Default is GPT-4o — its terser, more confrontational style breaks the Bull's argument cleanly, which is what the Judge needs.

When to change

If your BEAR ANGLES block is short or your symbol has limited invalidation signals (e.g. illiquid crypto), drop to GPT-4o mini to save tokens — the debate transcript is shorter anyway.

1.4 Research Manager Agent (Judge) enum Gemini 3 Pro

Reads the full Bull↔Bear transcript across all debate rounds plus the prompt's CONFIDENCE GUIDANCE block. Emits a single HIGH / MEDIUM / HOLD verdict with rationale. Default is Gemini 3 Pro for its long context — multi-round debates can run thousands of tokens and the Judge must read every line.

When to change

If you trade at DebateRounds = 1 the context stays small — any frontier model handles it. At DebateRounds = 3 keep a long-context model (Gemini 3 Pro, GPT-5, Claude Opus 4.6) — value-tier models will start truncating the transcript silently.

1.5 Portfolio Manager Agent (Decision) enum GPT-5

The only agent whose output reaches the broker. Takes the Judge's verdict, the prompt's ENTRY MECHANICS / STOPS / SIZING blocks, and the live broker spec (spread, stop level, lot step), then emits the final EXECUTE / HOLD directive with SL / TP / lot. Default is GPT-5 — this is the most expensive seat in the pipeline by design.

Watch out

Demoting this agent is the single highest-leverage cost cut but also the riskiest. Value-tier models occasionally mis-compute lot sizes against broker stop levels — the EA's BrokerSpec validator catches the obvious cases, but borderline rejections still happen.

1.6 Pipeline depth enum FULL

How much of the 5-agent pipeline runs each cycle. MINIMAL = Portfolio Manager only (1 LLM call). STANDARD = Technical Analyst + Research Manager + Portfolio Manager (3 calls). FULL = all five agents with Bull/Bear debate.

When to change

Switch to STANDARD if you want decisions without the debate — meaningful cost cut. Use MINIMAL only on value-tier models when you're stress-testing prompts at scale.

1.7 Debate rounds int 1

How many Bull↔Bear exchange rounds the Judge sees before voting. Valid range 1–5. Only used in FULL pipeline mode. The EA refuses to start if this is outside range.

When to change

Bump to 2 for indices and gold where regime nuance matters. 3 is for high-conviction swing setups where the bill is justified — increases token spend versus 1 round.

Group 1B

AI Engine — API keys per provider

One key per provider you actually use. The EA at startup inspects the five agent picks in Group 1 plus the backup in Group 1C, then refuses to attach if any selected agent's matching key is empty — the Experts tab prints SETUP INCOMPLETE: paste the matching API key in group 1B for each agent's model and lists which models need which keys. Whitelist every provider's endpoint plus https://script.google.com in Tools → Options → Expert Advisors → Allow WebRequest for listed URL before first run.

1B.1 OpenAI API key string (paste)

Required if any agent in Group 1 / 1C is on the GPT-5 family (including GPT-5 mini) or the GPT-4o family (including GPT-4o mini). Get a key at platform.openai.com → API keys. Defaults: 1.1 + 1.3 + 1.5 + 1C.1 all use this key, so it's the single most-required slot.

Watch out

Rate limits apply across all agents on the same key. If you run multiple charts on the same OpenAI key and hit a 429, the entire pipeline stalls until reset. Step up to a higher tier or split agents across providers.

1B.2 Anthropic API key string (paste)

Required if any agent is on the Claude Sonnet 4.6 / Opus 4.6 family. Default Bull (1.2) uses it. Get a key at console.anthropic.com → API Keys.

1B.3 Google AI key (Gemini) string (paste)

Required for any agent on Gemini 3 Pro or Gemini 3 Flash. Default Research Manager (1.4) uses it — bound to long context. Get a key at aistudio.google.com → Get API key. The free tier rate limit is enough for one chart at DebateRounds = 1.

1B.4 DeepSeek API key string (optional)

Only needed if you point any agent at DeepSeek-Chat or DeepSeek-Reasoner. Strong value-tier option for the Technical Analyst slot. Get a key at platform.deepseek.com.

1B.5 xAI API key (Grok) string (optional)

Only needed if you point any agent at the Grok family. Get a key at console.x.ai. Leave empty if no agent selects a Grok model.

1B.6 Custom-endpoint key string (optional)

Only used when an agent is set to MODEL_CUSTOM. Pair with the internal CustomModelName + CustomEndpointUrl constants (in source — recompile to change). Any OpenAI-compatible Chat Completions endpoint works: OpenRouter, a local vLLM server, an Azure-hosted Mistral, etc.

Watch out

OpenRouter is the most common reason to reach for this slot — one key, hundreds of models. Whitelist the OpenRouter API URL in MT5's WebRequest list or every call will fail with error 4014.

Group 1C

AI Engine — Backup model (failover)

When any one of the five primary agents fails a call transiently — HTTP 429 / 500 / 503, timeout, malformed JSON — the Backup Agent is invoked to retry that single seat. The pipeline continues without an aborted cycle. Default backup is GPT-4o mini for its broad compatibility with the OpenAI key you most likely already have.

1C.1 Backup Agent enum GPT-4o mini

The model used when a primary agent's call fails transiently. Engaged only for the failing seat, only for that cycle — the next cycle re-tries the primary. Pick something with a different rate-limit pool from your primaries so a provider-wide 429 doesn't take the backup down with it.

When to change

If your primaries are all on OpenAI, set the backup to a non-OpenAI value-tier model (Gemini 3 Flash, DeepSeek-Chat, Claude Haiku 4) so a rate-limit doesn't kill both primary and backup.

Watch out

The backup also needs its provider key in Group 1B. If you set Backup to Gemini Flash but leave 1B.3 empty, failover silently no-ops and the pipeline still aborts the cycle.

Group 2

Strategy & Trading

The preset the EA loads on startup, the master auto-trade switch, and the TF-mismatch guard. In v1.0 the RiskStyle profile is hardcoded to RISK_CONSERVATIVE — the empirically-best Sharpe / max-DD profile (~1.25 vs 0.85 for aggressive) on the long-history XAUUSD bake-off — so it is no longer a user input. The PresetFile input is the door to your custom prompt library — point it at eatrading_prompts.txt and use the panel's Reload button to swap strategies without restarting the EA.

2.1 Initial prompt at startup enum Stoch MR-XAUUSD-H4

The built-in preset the EA loads at startup. v1.0 ships with one verified, long-history-validated XAUUSD H4 strategy (Stoch MR-XAUUSD-H4) as the built-in default. The other seven community-curated archetypes (Donchian Turtle, Connors RSI2, Holy Grail Pullback, IBS Equity MR, Turtle Soup, NR7 Compression, ACD Gold NY) ship in the public Prompt Library and load via the eatrading_prompts.txt file in MQL5\Files\ — see input 2.6 below.

Open the public Prompt Library →
When to change

Leave as default for XAUUSD H4. Use the panel's cycle preset button at runtime to switch between built-in and file-loaded strategies without re-initializing the EA.

2.2 Auto place orders bool false

The master switch. When false the EA runs the full pipeline and writes decisions to the panel and the chart comment, but does not place a single trade. When true, every EXECUTE verdict from the Portfolio Manager is sent to the broker. Also toggle-able at runtime via the panel checkbox.

When to change

Flip to true only after watching at least a few full cycles on demo and confirming the Decision agent's verdicts make sense.

Watch out

This setting is gated by the RiskGovernor hard-halt states (equity floor, margin, daily cap) — they will force this off if breached, even if you flip it back on.

2.3 Max open orders int 3

Hard cap on simultaneous open positions for this magic number. Valid range 1–50 — the EA refuses to attach if outside range. Counts toward Group 4 layers as well when DCA is enabled.

When to change

Stay at 1 for clean single-shot strategies. Raise to DCAMaxLevels when Group 4 averaging is on. Going above 5 is rarely useful unless you're explicitly running a multi-leg basket strategy.

2.4 Re-analyze every (minutes) int 60

How often the EA fires the full pipeline. Set to 0 for manual mode — the pipeline runs only when you press Analyze on the panel. Defaults to 60 (1 hr) which is correct for H4: oversampling burns tokens without new bar information. Valid range 0 or 15–1440 — the EA refuses to attach if outside that band.

When to change

Match to your TF: 15 for M15, 60 for H1/H4, 240 for D1. 0 when you want full manual control.

2.5 Magic number int 202605

The integer tag stamped on every order from this chart. Used to differentiate multiple EA instances on the same account and to namespace the per-instance memory file + CSV audit log. Must be ≥ 1000 — the EA refuses to attach below that floor (low magics collide with manual orders).

When to change

Pick a unique value per (symbol, timeframe) pair when running more than one chart. The EA's mass-concurrency guards rely on it.

Watch out

If two charts share a magic, their memory files collide and RiskGovernor's per-magic state mis-fires. Always rotate. The OnTimer drift detector also pops an Alert (Quant AI Agents: account number changed…) if the live MT5 account number ever differs from the one cached at init.

2.6 Custom prompts file string eatrading_prompts.txt

File name (inside MQL5\Files\) of your custom prompt library. On first run the EA auto-deploys a working template here so you don't have to hunt for the format. File presets append after the built-in — cycle order: builtin → file presets in order written.

Used by Step 03 — STRATEGY block
When to change

Rename to point at a different file when you keep multiple strategy libraries side-by-side (e.g. my_gold_swings.txt vs my_indices.txt).

Watch out

File must be saved as ANSI or UTF-16 LE. Avoid UTF-8 with BOM — the parser will reject it and the panel will show a parse-error banner on the Analysis tab.

2.7 Allow chart TF ≠ preset's optimal TF bool false

Safety guard. Every preset declares its optimal timeframe (the verified default declares H4; library presets declare via the TIMEFRAME= header). When this is false (default), the EA forces the chart to the preset's TF on init, on reload, and on every preset cycle — and prints e.g. Quant AI Agents: restoring chart TF H4. When true, the EA respects whatever TF you put it on and runs the preset there anyway.

When to change

Leave OFF. Turn ON only when you are deliberately stress-testing a strategy on a TF different from the one it was validated on — typically a research exercise, not a live deployment.

Watch out

If the chart TF restore fails, the Experts tab prints Quant AI Agents: TF restore failed (err N). Common cause: chart symbol doesn't have history for the requested TF. Open the symbol on the target TF manually once, then re-attach.

Group 3

Risk Management — Lot Size

Position sizing only. The four-layer drawdown protection (daily, weekly, monthly caps + the equity-floor hard halt) lives in Group 5. The AI-hybrid exit engine — initial SL from the agents, then a local volatility-aware ratchet on every tick — is always on with sensible defaults.

3.1 Lot mode enum LOT_MEDIUM_RISK

How position size is computed. LOT_FIXED uses 3.2 as a literal lot value. LOT_LOW_RISK sizes for 0.5% risk per trade. LOT_MEDIUM_RISK sizes for 1.0%. LOT_CUSTOM_RISK reads the percent from 3.3.

When to change

Stay on LOT_FIXED @ 0.01 for the first session. Switch to LOT_MEDIUM_RISK (or LOT_LOW_RISK on prop-firm) once you trust the SL placement.

3.2 Fixed lot (LOT_FIXED only) double 0.01

Literal lot value used when 3.1 = LOT_FIXED. The default is the minimum tradable size on most brokers — enough to grade EA behavior without meaningful exposure.

When to change

Keep at 0.01 while testing. Even on a $10k account, P&L from the minimum lot is enough to evaluate the AI Agents' decision-making.

3.3 Custom risk % (LOT_CUSTOM_RISK only) double 1.0

Percent of current equity risked on each entry. Used only when 3.1 = LOT_CUSTOM_RISK. The EA back-solves the lot size from this value and the AI-defined SL distance.

When to change

1.0% is the textbook default. Drop to 0.5% on prop-firm accounts with 5% drawdown caps; never push above 2% unless you have a documented edge.

Watch out

Combined with Group 4's averaging, per-trade risk compounds across layers. Verify total open exposure stays under the EnableAggregateRiskCap internal ceiling (5% default).

Group 4

Position Averaging — optional, off by default

Multi-layer entry with a hard kill switch. Off by default. Once you enable it, the EA strips per-position stop-losses from the second layer onward and switches to basket-level exits. The lot multiplier (1.0× flat), group-kill drawdown (10%), and break-even exit mode are hardcoded at proven values — not user-tunable in v1.0.

4.1 Enable Position Averaging bool false

The master switch. When false, every other input in this group is ignored. When true, the EA may stack additional entries as price moves against the basket — bounded by 4.2 / 4.4 and the hardcoded group-kill DD safety.

When to change

Leave at false until you've explicitly designed and backtested an averaging plan on your symbol. Averaging fundamentally changes the EA's risk profile — one bounded-risk trade becomes a basket with a worst-case set by the internal group-kill DD threshold, not by the per-trade stop.

4.2 Max layers int 3

Maximum number of additional entries the EA will add when price moves against the basket. Valid range 1–5. 3 means the original entry plus up to two adds.

When to change

Stay at 3. Going to 5 doubles the worst-case basket size and rarely improves average outcome.

Watch out

Each extra layer compounds the basket's loss-at-stop. Verify on backtest that the internal DCAGroupKillDDPct (10%) is reachable before margin levels are breached.

4.3 Layer spacing (vol-anchored) double 1.5

How far (in vol-anchored multiples) price must travel against the basket before the next layer fills.

When to change

Tighten to 1.0× on strong trends to lower basket break-even sooner; widen to 2.0× for whippy ranges where fewer layers is the right answer.

4.4 Aggregate volume cap (lots) double 0.10

Hard cap on total open volume across all layers in the basket. Even if max layers (4.2) hasn't been reached, no further layer fills once aggregate lots exceed this number.

When to change

Scale with account size. 0.10 is calibrated for sub-$10k accounts on XAUUSD. On $50k+ accounts you can raise to 0.50 — never beyond what the internal aggregate-risk cap (5%) tolerates.

Group 5

Drawdown Protection — calendar-window lockout + equity floor

The RiskGovernor module. Daily, weekly and monthly loss caps that reset on their own calendar. The equity-floor hard halt at the bottom is the last-resort kill switch — when it trips, every position closes and auto-trade stays off until you manually flip it back on. The internal helpers (margin guard, loss-streak damper, daily profit lock, loss cooldown, aggregate risk cap) are all on with tuned defaults.

5.1 Daily loss cap (%) double 3.0

Percent of day-start equity at which the EA locks itself out for the remainder of the calendar day (broker server time). On rollover the cap resets and the EA resumes.

When to change

Drop to 2.0 on prop-firm accounts with 4–5% max daily loss rules. Raise to 5.0 only on accounts you can afford to drawdown — never disable.

5.2 Weekly loss cap (%) double 6.0

Percent of week-start equity at which the EA locks itself out for the rest of the trading week. Resets on Monday open.

When to change

Set in proportion to 5.1 — usually 2× the daily cap. 4.0 on conservative prop-firm setups, 8.0 on personal accounts willing to take the hit.

5.3 Equity floor — % of initial deposit double 80.0

The HARD HALT. When account equity drops below this percent of the EA's recorded initial deposit, every position closes at market and the auto-trade flag flips off — sticky until you manually re-enable it. Designed as the last-resort backstop after daily, weekly, monthly caps have already failed.

When to change

Raise to 90.0 on prop-firm accounts (10% trailing max DD). Drop to 70.0 only on personal accounts where the higher caps in 5.1/5.2 are the real binding constraint.

Watch out

"Initial deposit" is recorded by the EA on first attach to a fresh magic. If you withdraw funds mid-deployment, the floor still references the original number — re-attach to a fresh magic to reset.

Group 6

News Filter — MT5 Calendar API gate

Uses the MT5 economic calendar that ships with the platform — no Forex Factory plugin, no external feed. The default window covers high-impact USD, EUR, GBP and JPY events at importance ≥ 3, pausing new entries from T-120 min through T+60 min. The exit engine can also auto-flat open positions 30 min before a high-impact event (internal default: on).

6.1 Skip entries around high-impact news bool true

When true, the EA queries the MT5 Calendar API on every cycle and refuses new entries inside the configured window around high-impact events (default: ±2 h on the USD/EUR/GBP/JPY block at importance level 3). Existing positions still get managed by the exit engine — the filter only blocks new opens.

When to change

Keep true for forex / gold. Turning off makes sense only on instruments uncorrelated with the major-currency news cycle (e.g. crypto majors during quiet macro days).

Watch out

If the MT5 calendar feed is empty (some brokers strip it), this filter passes silently. Verify Tools → Economic Calendar shows events before relying on it.

Group 7

Errors, pop-up alerts & Experts-tab logs

Every condition the EA can flag — pop-up Alert() dialogs (the noisy ones you can't miss) and Print() entries (the silent ones you read in MT5's Experts tab). Each row tells you what it looks like, what triggers it, and the exact fix. The MT5 Experts tab is at View → Toolbox → Experts (or Ctrl+T). Pop-up alerts also fire a system sound — turn the speaker on if you want passive monitoring.

A1 Alert: License failed. See Experts tab for details. pop-up OnInit

Fires once at attach if the Google Apps Script license check rejects this MT5 account number. The Experts tab is printed first with a multi-line diagnostic (header LICENSE VERIFICATION FAILED) — read it before clicking through the dialog.

Fix — err 4014 (WebRequest not allowed)

Go to Tools → Options → Expert Advisors, tick Allow WebRequest for listed URL, add https://script.google.com, restart the EA.

Fix — err 4060 (no internet / timeout)

Check VPS connectivity. ping script.google.com from the host. If the VPS is in a region Google blocks, switch region or use a proxy-capable broker terminal.

Fix — any other code

This MT5 account is not activated, expired, or revoked. Activate it on the eatrading.ai dashboard or via the Telegram bot, then re-attach the EA. Contact support if the account is paid and the rejection persists.

A2 Alert: account number changed (cached=X live=Y) pop-up OnTimer

The EA caches the MT5 login at init and re-checks every cycle. If the live login differs (you logged into a different account on the same terminal while the EA was attached), this alert fires and auto-trade is disabled until you re-attach. Common cause: switching demo ↔ live on the same MT5 instance.

Fix

Re-attach the EA to the chart after logging into the correct account. The cache resets on every fresh attach. The Experts tab also prints === ACCOUNT DRIFT === cached=… live=… right above the alert.

A3 Alert: License expired/revoked. Auto-trade DISABLED. pop-up OnTimer · daily

The EA re-checks its license once per 24h (cheap — 1 HTTPS call). If the check flips from OK to FAIL mid-session (subscription lapsed, refund, revocation), this alert fires, new orders are blocked, and the Experts tab logs === LICENSE INVALIDATED === New orders blocked.

Note

Existing open positions stay managed by the exit engine — the EA never strands a live trade. Renew the license to clear the block; the next periodic recheck logs === LICENSE RESTORED === and you re-enable auto-trade from the panel.

A4 Alert: HARD HALT — equity floor breached. N positions closed. pop-up OnTimer · last-resort

The Group 5.3 equity floor tripped. Every open position from this magic was closed at market, auto-trade is forced OFF, and the kill is sticky — you must manually re-enable from the panel and confirm the diagnosis before the EA resumes. The Experts tab logs === HARD HALT === <reason> — closed=N.

What to do first

Do not just flip auto-trade back on. Open the Group 5 reference, re-check daily / weekly caps, look at the per-trade CSV log in MQL5\Files\ to confirm the cluster of losses isn't a misconfiguration (wrong preset, wrong TF, dirty broker spread). The hard halt is a last-resort backstop — treat it as a circuit breaker that needs a root-cause investigation.

P1 Print: SETUP INCOMPLETE — paste the matching API key in group 1B log OnInit

The init scan found at least one agent in Group 1 / 1C whose matching provider key in Group 1B is empty. The next line tells you the default mapping (Technical=GPT-5-mini, Bull=Claude-Sonnet-4.6, Bear=GPT-4o, Research=Gemini-3-Pro, Portfolio=GPT-5). Per-agent rows logged as Agent N (Name): API Key is empty. follow.

Fix

Fill the matching key in Group 1B. Or change the agent's model in Group 1 to one of a provider whose key you already have. The EA still attaches but the pipeline is parked — no calls go out until every selected agent has a key.

P2 Print: <Input> must be between X and Y (got Z) log OnInit · INIT_PARAMETERS_INCORRECT

The init validator rejects out-of-range inputs and refuses to attach. Possible rows: CandleCount must be between 10 and 200, MaxOrders must be between 1 and 50, MagicNumber must be >= 1000, UpdateIntervalMin must be 0 or between 15 and 1440, DebateRounds must be between 1 and 5, MaxDailyLossPct must be between 0.1 and 50.0, MaxWeeklyLossPct must be between 0.1 and 80.0, EquityFloorPct must be between 10.0 and 99.0, FixedLotSize must be > 0, CustomRiskPercent must be > 0, ExitTriggerATR must be > 0, ExitBufferPoints must be >= 0, ExitTrailDistanceATR must be > 0.

Fix

Open the inputs dialog, fix the offending value, re-attach. The exact name + offending value is in the log line so this is a single-step fix.

P3 Print: DCA<Param> must be … log OnInit · DCA validation

Group 4 (Position Averaging) range validators. Possible rows: DCAMaxLevels must be between 1 and 5, DCALotMultiplier must be > 0 and <= 2.0, DCAMaxTotalLots must be > 0, DCADistanceATR must be between 0 and 10, DCAMaxDrawdownPct must be between 0.1 and 50.0, DCAGroupKillDDPct must be > DCAMaxDrawdownPct and <= 95.0. Only logged when 4.1 DCAEnabled = true.

P4 Print: BrokerSpec: <symbol> … log OnInit · ValidateBrokerSpec

The fail-fast broker spec audit. On success: one line dumping tick size / tick value / min-max-step lot / stop level / fill modes. On failure: any of trade mode DISABLED — symbol not tradable, is CLOSE-ONLY — new positions blocked by broker, tickSize <= 0, tickValue <= 0, minLot <= 0, maxLot < minLot, stepLot <= 0.

Fix

Drag the symbol from Market Watch to the chart first — some brokers initialise the symbol's metadata only after it's been touched. If the symbol is genuinely close-only (weekend / exotic hours), wait for the market to reopen. EnableBrokerSpecCheck is on by default.

P5 Print: Initial prompt: <preset name> log OnInit · success path

Confirmation the prompt selected via input 2.1 was loaded. Default reads Initial prompt: Stoch MR-XAUUSD-H4. Followed by the full init banner — Quant AI Agents initialized successfully! — with symbol, TF, pipeline, agent models, lot info, DCA summary, V2 features, auto-trade state, max orders, update cadence, exit strategy.

P6 Print: Prompt library: N builtin+file presets from MQL5\Files\<file> log OnInit · library load

The prompt library file (input 2.6) loaded. N = total presets after merging built-ins with file presets. If the file is malformed: Prompt library: file '<file>' load failed (<err>) — built-ins only. The panel still functions on built-ins — but your custom presets won't appear in the cycle.

Fix

Re-save the file as ANSI or UTF-16 LE (not UTF-8 with BOM). Verify [PRESET] / [/PRESET] markers match, and that STRATEGY_BEGIN / STRATEGY_END + RULES_BEGIN / RULES_END wrap each block.

P7 Print: Regime classifier / Meta-label gate status log OnInit · ML hooks

ML hook status. Examples: Regime classifier auto-picked: <path>, Regime classifier disabled (no model at <path>), Meta-label gate active: <file>, Meta-label gate disabled (model file not loaded). Informational only — both gates are no-ops when the model files aren't shipped for your symbol.

P8 Print: RunAnalysis skipped — <reason> log runtime · per cycle

The cycle ran a gate and the gate refused to run the pipeline. Possible reasons: RiskGovernor block (daily / weekly / monthly cap, loss-streak damper, profit-lock, margin guard, cooldown, aggregate risk cap), news blackout window, TF mismatch when input 2.7 = false. Expected behaviour — not an error.

P9 Print: Another chart is running the pipeline for <symbol>. Skipping. log runtime · multi-chart lock

Two charts share the same symbol + magic and both tried to fire the pipeline. The first chart held the GlobalVariable lock; this chart yielded. Expected when running deliberate multi-instance setups — the lock prevents duplicate API spend on the same symbol.

If you see this on a single chart

A previous EA instance crashed and left the lock orphaned. The EA auto-takes-over orphaned locks (the owner ChartID is no longer alive) — restart MT5 if it persists.

P10 Print: Pipeline execution failed / Warning: ExitManager ATR handle failed log runtime · subsystem

Hard pipeline error (an agent returned malformed JSON, a WebRequest timed out beyond backup retry, or the panel rejected the verdict). Or, on init, the ATR handle for the exit engine couldn't be created — exit engine inactive, positions managed only by agent-supplied SL/TP.

Fix

For ATR handle failure: usually missing history for the symbol on the chart TF. Open the symbol on the TF manually, load enough bars (right-click chart → Reload), re-attach. For pipeline failure: re-attach the EA; if it repeats, look one cycle higher in the Experts tab for the upstream HTTP error.

P11 Print: Startup delay: N seconds (stampede prevention) log OnInit · per terminal

Randomised attach-time delay so re-attaching every chart in a multi-chart bundle doesn't fire N parallel pipeline calls. On re-attach within the same terminal session: Startup delay skipped (already completed in this terminal session). On first attach completion: Startup delay complete. Running first analysis...

P12 Print: Quant AI Agents: restoring chart TF <TF> / TF restore failed (err N) log runtime · TF guard

Input 2.7 (AllowTFMismatch) = false. The preset declares a different optimal TF from the current chart TF, so the EA pushes the chart back. The failure variant means MT5 rejected the TF switch — usually no history on that TF for that symbol.

P13 Print: Preset switch / cycle / reload blocked: <reason> log runtime · panel button

You hit the panel's preset cycle or reload button while a state forbids reconfigure (open position on this magic, pipeline in flight, RiskGovernor hard-halt active). The Experts tab line gives the precise reason. Expected behaviour — protects against config swap mid-trade.

P14 Print: Prompt switched to: <preset> | whitelist=<list> log runtime · success

Confirmation that the panel's cycle / reload took effect. Followed (when the chart TF needs switching) by Preset cycle: switching chart <old TF> → <new TF> and (on full pipeline rebuild) Pipeline sync'd to library preset: <name>.

P15 Print: Reload library: re-reading MQL5\Files\<file> log runtime · reload button

The panel's Reload button pushed a re-parse of the prompt file. Always followed by either -> N builtin+file presets (success) or -> file load failed (<err>) — built-ins only (parser rejected the file). Same file-format rules as P6.

P16 Print: OnTradeTransaction: entry price unavailable for position #N log runtime · trade event

A close-by-stop transaction landed but the entry-side price couldn't be resolved from the deal history (broker delayed the open deal). Audit log row is written with empty entry price; everything else proceeds normally. Cosmetic — no remediation needed unless it repeats every trade.

P17 Print: WriteTradeLogCSV: FileOpen failed err=N log runtime · audit log

The per-magic CSV trade log (eatrading_trades_<symbol>_<magic>.csv) couldn't be opened. Usually means the file is locked open in Excel — close it. Less commonly: disk full or MQL5 sandbox permission issue.

Note

Trading continues with or without the CSV. The Python tools (Monte Carlo, DSR/PBO calculator) need it though — fix before any post-mortem run.

P18 Print: Misc one-shot logs log various

Catch-all for low-frequency lines: License rejected (HTTP <code>): <response> (raw upstream rejection — see A1 fix), Auto-deploy preset file: FileOpen for write failed (err N) (sandbox blocked the template seed; create the file by hand instead), Auto-deployed preset template to MQL5\Files\<file> (first-attach success — your starter template is now editable on disk), [Telemetry] license_key not available (len=…) (telemetry needs the license-key UUID returned by Apps Script; legacy "OK"-only responses can't authenticate — request a re-issue from support if you want telemetry credit), and WriteExampleFileIfMissing-related notices.