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 guideGetting started + 7 steps32 inputs · 8 groupsEncoding: ANSICustom 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.
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.
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.
(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.
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.
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.
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.
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/dashboard → My 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.
TickAllow 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.
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.
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).
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.)
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.
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.
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.
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).
OpenAI — platform.openai.com → API keys. Covers the GPT-5 and GPT-4o families — on default settings that's the Technical Analyst, Bear, Portfolio Manager and Backup, so this is the one key almost everyone needs.
DeepSeek(optional) — platform.deepseek.com — only if you remap an agent to DeepSeek.
xAI(optional) — console.x.ai — only if you remap an agent to Grok.
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.
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.
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.
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_ENDRULES_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
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.
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_ENDRULES_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.1Technical Analyst AgentenumGPT-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.2Bull Analyst AgentenumClaude 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.3Bear Analyst AgentenumGPT-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.4Research Manager Agent (Judge)enumGemini 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.5Portfolio Manager Agent (Decision)enumGPT-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.6Pipeline depthenumFULL
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.7Debate roundsint1
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.1OpenAI API keystring(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.2Anthropic API keystring(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.3Google 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.4DeepSeek API keystring(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.5xAI 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.6Custom-endpoint keystring(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.1Backup AgentenumGPT-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.1Initial prompt at startupenumStoch 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.
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.2Auto place ordersboolfalse
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.3Max open ordersint3
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.4Re-analyze every (minutes)int60
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.5Magic numberint202605
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.6Custom prompts filestringeatrading_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.
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.7Allow chart TF ≠ preset's optimal TFboolfalse
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.1Lot modeenumLOT_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.2Fixed lot (LOT_FIXED only)double0.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.3Custom risk % (LOT_CUSTOM_RISK only)double1.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.1Enable Position Averagingboolfalse
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.2Max layersint3
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.3Layer spacing (vol-anchored)double1.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.4Aggregate volume cap (lots)double0.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.
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.1Daily loss cap (%)double3.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.2Weekly loss cap (%)double6.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.3Equity floor — % of initial depositdouble80.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.1Skip entries around high-impact newsbooltrue
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.
A1Alert: License failed. See Experts tab for details.pop-upOnInit
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.
A2Alert: account number changed (cached=X live=Y)pop-upOnTimer
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.
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.
A4Alert: HARD HALT — equity floor breached. N positions closed.pop-upOnTimer · 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.
P1Print: SETUP INCOMPLETE — paste the matching API key in group 1BlogOnInit
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.
P2Print: <Input> must be between X and Y (got Z)logOnInit · 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.
P3Print: DCA<Param> must be …logOnInit · 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.
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.
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.
P6Print: Prompt library: N builtin+file presets from MQL5\Files\<file>logOnInit · 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.
P7Print: Regime classifier / Meta-label gate statuslogOnInit · 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.
P8Print: RunAnalysis skipped — <reason>logruntime · 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.
P9Print: Another chart is running the pipeline for <symbol>. Skipping.logruntime · 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.
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.
P11Print: Startup delay: N seconds (stampede prevention)logOnInit · 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...
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.
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.
P14Print: Prompt switched to: <preset> | whitelist=<list>logruntime · 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>.
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.
P16Print: OnTradeTransaction: entry price unavailable for position #Nlogruntime · 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.
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.
P18Print: Misc one-shot logslogvarious
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.
Ready to put your edge in front of the AI Agents?
Write one preset, drop the file into MQL5\Files, and let five AI agents stress-test it on every tick.