Categoria
Piattaforma
Livello
Base
Si usa in
Operatività su MT5Valutazione di un EA

Magic number

Un intero che un Expert Advisor imprime su ogni ordine che invia, così da riconoscere le proprie posizioni e lasciare in pace tutto il resto del conto.

anche: magic dell'EA, numero magico dell'ordine, MAGIC

Aggiornato · Revisionato

In parole semplici

Un'etichetta con il nome su ogni operazione. Al terminale non importa chi ha aperto una posizione, quindi ogni EA scrive il proprio numero sul ticket e poi tocca soltanto i ticket che portano quel numero.

Perché conta

MetaTrader dà a ogni EA di un conto la stessa vista su tutte le posizioni. Senza un'etichetta un EA non può distinguere le proprie operazioni dalle vostre o da quelle di un altro EA — e un EA che gestisce la posizione sbagliata è un bug che costa denaro invece di un bug che solleva un errore.

  • È ciò che rende possibile, in primo luogo, far girare più EA su un solo conto.
  • Protegge le operazioni manuali: quelle portano magic 0, e un EA scritto correttamente non le tocca mai.
  • È il modo per separare a posteriori uno storico per strategia — l'etichetta sopravvive nello storico dei deal.

In MetaTrader 5

Dove compare in MT5

  • Grafico → proprietà dell'EA (F7) → Input — l'input MagicNumber dell'EA stesso
  • Strategy Tester → Input — lo stesso input in fase di test
  • Codice MQL5: MqlTradeRequest.magic all'invio, POSITION_MAGIC / ORDER_MAGIC / DEAL_MAGIC in rilettura

Come lo usano gli EA

  • Impostato una volta all'avvio — CTrade::SetExpertMagicNumber(MagicNumber) — dopodiché ogni ordine inviato dall'EA porta l'etichetta.
  • Filtrato a ogni passaggio: il ciclo sulle posizioni salta ogni ticket il cui POSITION_MAGIC non è il proprio prima di modificare, trailare o chiudere qualcosa.
  • Lo storico viene filtrato allo stesso modo, così le statistiche per EA si calcolano solo sui deal di quell'EA.
  • Ogni EA generato dal Builder di mt5depot viene fornito con un input MagicNumber il cui valore deriva dalla strategia, così due EA generati diversi non collidono di default.

Impostazioni tipiche

Impostazione Valore tipico Nota
Operazioni manuali 0 Il valore predefinito del terminale. Un EA non dovrebbe mai gestire il magic 0.
Un EA, un simbolo qualsiasi intero univoco Va bene qualsiasi valore memorabile — 20260807, 1001.
Lo stesso EA su più simboli un valore per grafico Altrimenti l'istanza EURUSD chiude le posizioni di quella GBPUSD.
EA di portafoglio con più strategie un valore per gamba Ogni gamba ha bisogno della propria etichetta per essere trailata e chiusa in modo indipendente.

Problemi operativi frequenti

  • Due istanze lasciate sullo stesso magic: ciascuna vede le posizioni dell'altra come proprie e le chiude nel momento sbagliato.
  • Cambiare il magic con posizioni aperte le rende orfane — l'EA non riconosce più operazioni che ha aperto pochi minuti prima, e nulla le chiuderà mai automaticamente.
  • Lasciare il magic a 0 mette l'EA al comando delle vostre operazioni manuali.
  • Riattaccare un EA dopo un riavvio del terminale con il valore predefinito invece di quello configurato produce lo stesso orfanamento, in silenzio.

Funzioni MT5 collegate

CTrade::SetExpertMagicNumber()
Imposta l'etichetta che ogni ordine successivo di questa istanza porterà.
PositionGetInteger(POSITION_MAGIC)
Legge l'etichetta da una posizione aperta.
OrderGetInteger(ORDER_MAGIC)
La legge da un ordine pendente.
HistoryDealGetInteger(ticket, DEAL_MAGIC)
La legge da un deal chiuso, ed è così che lo storico viene separato per EA.

Esempio

Tre EA su un conto. Ognuno imprime il proprio numero, quindi ogni ciclo sulle posizioni tocca solo le proprie righe anche se tutti vedono tutte e sei le posizioni.

Un terminale, un conto, tre proprietari — l'etichetta è l'unica cosa che li separa.
EA di tendenza su EURUSD
20260101
EA di ritorno alla media su USDJPY
20260102
Le vostre operazioni manuali
0
Nessun EA rivendica questa etichetta, quindi nulla di automatico le chiuderà.

Calcolo if (PositionGetInteger(POSITION_MAGIC) != MagicNumber) continue;

Risultato Ogni EA gestisce solo le posizioni che ha aperto

Valori illustrativi — non sono lo storico di alcun EA in catalogo.

Come si usa

Trattate il magic number come configurazione del conto, non come impostazione di strategia: annotatelo prima che l'EA vada in reale e non cambiatelo mai con posizioni aperte.

  • Assegnate un valore per istanza in esecuzione, non per prodotto EA — lo stesso EA su due grafici richiede due valori.
  • Tenete un elenco. Appena girano quattro o cinque istanze, un'etichetta non annotata è indistinguibile da una duplicata.
  • Non riutilizzate mai un'etichetta a cui sono ancora legate posizioni aperte, nemmeno di un EA che avete rimosso.
  • Controllatela dopo ogni reinstallazione del terminale o ripristino del profilo, perché è lì che tornano i valori predefiniti.

Il valore in sé non significa nulla per MetaTrader — va bene qualsiasi intero. Conta solo che sia univoco tra le cose in esecuzione su quel conto.

Errori frequenti

Pensare che il magic number influenzi l'esecuzione

Non cambia nulla di come un ordine viene eseguito. È un metadato: il broker non agisce in base a esso e non ha effetto su prezzo, spread o slippage.

Usare un solo magic number per un EA su molti grafici

L'identità che conta è l'istanza in esecuzione, non il prodotto. Due grafici che condividono un'etichetta significano due istanze che gestiscono un unico insieme di posizioni.

Cambiarlo per «resettare» un EA che si comporta male

Le posizioni aperte mantengono la vecchia etichetta. Cambiare l'input le abbandona: l'EA smette di riconoscerle e restano aperte finché non vengono chiuse a mano o da uno stop out.

Dare per scontato che un magic number separi l'estratto conto

La scheda Trade del terminale non lo mostra. Separare i risultati per EA richiede di leggere DEAL_MAGIC dallo storico, cosa che fanno gli strumenti di reportistica — non qualcosa che l'estratto predefinito vi dà.

In dettaglio

Cosa non compra l’etichetta, contato su questo scaffale

Sui 14 EA pubblicati quiValore
Schede con un input MagicNumber10
Schede in cui va cambiato durante l’installazione0
Schede che chiedono di farli girare dove nient’altro tratta quel simbolo8
Di queste, schede che portano comunque un input MagicNumber6
Simboli rivendicati da più di una scheda7 su 15
Coppie di EA che non possono condividere un conto15 su 91

Leggete insieme le righe tre e quattro. Etichettare gli ordini è un lavoro; decidere se un nuovo segnale è ammesso è un altro, e un EA che si limita a una posizione aperta deve prima contare. Se conta con PositionsTotal() e un controllo sul simbolo, una posizione altrui finisce nel totale; se filtra prima su POSITION_MAGIC, non ci finisce. Sei schede qui portano l’input e stampano comunque l’avviso, il che vi dice quale delle due strade usa il loro conteggio delle posizioni.

Quindi la domanda sull’abbinamento è una domanda sul simbolo, e si risponde prima di comprare. USD/JPY è rivendicato da quattro schede insieme — Iridescence, Kestrel Hover, Lanternfish e Tessera — perciò nessuna coppia tra loro sta insieme. EUR/GBP ora ne porta due, Ballast e Thunderhead. Solo Orrery, Peregrine e Zerqon non si sovrappongono a nessuno. Dove due si sovrappongono, separare i conti risolve ciò che un’etichetta non può: ogni EA conta allora un insieme che contiene soltanto le proprie operazioni. La nostra metodologia registra ogni run pubblicata per simbolo, che è la stessa distinzione vista dal lato della misura.

Domande frequenti

Quale magic number dovrei usare?
Qualsiasi intero non già in uso su quel conto, e non 0 — quel valore appartiene alle operazioni manuali. Un valore in forma di data come 20260807 è facile da tenere sotto controllo quando girano più istanze.
Due EA possono condividere lo stesso magic number?
Tecnicamente sì, ed è una causa comune di perdite difficili da diagnosticare: ogni istanza tratta le posizioni dell'altra come proprie e può chiuderle o trailarle nel momento sbagliato. Date a ogni istanza in esecuzione il proprio valore.
Il magic number conta nello Strategy Tester?
Per un test con un solo EA no, perché nel conto di prova non sta operando nient'altro. Conta appena più di un EA gira sullo stesso conto reale o demo.