Question: Cosa significa l'errore “Non abbastanza denaro” sulle piattaforme MT4/MT5?
Table of Contents
- “Non abbastanza denaro” su MT4/MT5: cosa significa, le cause esatte e le soluzioni efficaci
- Cosa controlla la piattaforma prima di rifiutare
- Perché succede: le cause precise
- Cosa non è (e perché la distinzione è importante)
- Correzioni precise che eliminano l'errore
- Scenari pratici e la soluzione decisiva
- Manuale per sviluppatori (MT4/MT5) per eliminare l'errore
- MT4 vs MT5: le piccole differenze che contano
- Una breve checklist affidabile
- Perché questi passaggi risolvono definitivamente l'errore
“Non abbastanza denaro” su MT4/MT5: cosa significa, le cause esatte e le soluzioni efficaci
“Non abbastanza denaro” è il modo semplice con cui MetaTrader comunica che il tuo margine libero è insufficiente per l’operazione che stai cercando di effettuare (o per il volume che stai cercando di aumentare). Su MT4 questo messaggio appare come errore 134 – ERR_NOT_ENOUGH_MONEY
quando un programma invia l’ordine; su MT5, il server di trading restituisce TRADE_RETCODE_NO_MONEY
(10019). In entrambe le piattaforme, il significato è identico: il capitale disponibile sul tuo conto non è sufficiente a coprire il margine richiesto dal server per quel simbolo, in quel momento e per quella dimensione.
Cosa controlla la piattaforma prima di rifiutare
Quando invii un ordine di mercato, un ordine in sospeso o una richiesta di aumento della dimensione della posizione, il terminale (e il server) calcolano il margine richiesto per quello specifico strumento e volume, utilizzando le impostazioni del contratto del simbolo e la leva finanziaria del tuo conto. Se il calcolo mostra che Equità − Margine attuale < Nuovo margine richiesto, la richiesta viene rifiutata con “Denaro insufficiente“. MT5 lo documenta esplicitamente ed espone le definizioni utilizzate nella scheda Trade: il margine è ”il denaro necessario per coprire le posizioni aperte e gli ordini in sospeso“, il margine libero è Equità − Margine e il livello di margine è Equità / Margine × 100%.
Il calcolo di base dipende dal tipo di strumento. La guida di MT5 specifica le formule canoniche, ad esempio Margine Forex = Volume (lotti) × Dimensione del contratto ÷ Leva finanziaria; per i contratti negoziati in borsa e molti CFD, nella formula vengono inseriti il prezzo e le specifiche del tick (ad esempio, Volume × Dimensione del contratto × Prezzo / Leverage, o specifico dell’indice Volume × Dimensione del contratto × Prezzo × Valore del tick / Dimensione del tick). Questi sono i valori che il server utilizza per decidere se si dispone di spazio sufficiente per procedere.
Per gli sviluppatori, MT5 fornisce OrderCalcMargin()
in modo da poter calcolare il margine richiesto esatto (restituito nella valuta del proprio conto) prima dell’invio. MT4 e MT5 espongono anche le proprietà per simbolo e i campi del conto per comprendere le modalità e le soglie di margine.
Perché succede: le cause precise alla radice
- Il tuo volume richiede un margine superiore a quello che il tuo capitale libero può fornire
- Il modo più rapido per incorrere in questo errore è semplicemente richiedere un numero eccessivo di lotti rispetto alla dimensione del contratto e alla leva finanziaria. Un classico esempio di Forex tratto dalle guide dei broker: per EURUSD, Margine richiesto = 100.000 (contratto) × Lotti ÷ Leva finanziaria × Prezzo EURUSD se necessario, poi convertito nella valuta del conto. Se tale importo supera il margine libero, l’ordine viene rifiutato.
- Stai negoziando un simbolo con un modello di margine più elevato di quanto avevi ipotizzato
- I CFD su indici, energie, metalli, azioni e futures utilizzano spesso formule di margine basate sul prezzo e sul tick o valori specificati di margine iniziale/di mantenimento. Lo stesso lotto su oro o su un indice può richiedere un margine molto più elevato rispetto a una coppia di valute principali. Il riferimento al margine di MT5 mostra questi diversi calcolatori e come il margine iniziale/di mantenimento per i futures prevalga sul calcolo basato sulla leva finanziaria.
- MT5 riserva il margine per gli ordini in sospeso (e alcune sedi lo riservano sul server)
- MT5 definisce
ACCOUNT_MARGIN_INITIAL
come fondi riservati per tutti gli ordini in sospeso, e la definizione della scheda Trade afferma che il margine copre le posizioni aperte e gli ordini in sospeso. Tale importo riservato riduce il margine libero e contribuisce direttamente al messaggio “Denaro insufficiente”. Le implementazioni ECN documentano pubblicamente anche la prenotazione lato server per gli ordini in sospeso. - Ti trovi in modalità hedging e la piattaforma applica un margine hedged
- Su MT5 nei conti di copertura, il server può applicare uno specifico margine coperto per compensare le posizioni. Le proprietà dei simboli come
SYMBOL_MARGIN_HEDGED
definiscono quanto margine è ancora necessario per la seconda parte. Se il conto non fornisce una compensazione completa o applica un margine di copertura assoluto, il margine libero può esaurirsi prima del previsto e la piattaforma restituisce Nessun denaro. - Il capitale è inferiore a quanto pensi a causa di perdite fluttuanti, commissioni, swap o profitti bloccati
- Il patrimonio netto di MT5 include (o esclude) i profitti/perdite fluttuanti e può mostrare profitti che sono bloccati fino alla fine della giornata, a seconda delle impostazioni della sede. Il margine è calcolato dal patrimonio netto, non dal saldo. Una forte perdita non realizzata o una commissione intraday possono azzerare il margine libero appena prima dell’invio.
Cosa non è (e perché la distinzione è importante)
- Non si tratta di un problema di disponibilità dei prezzi (Quotazioni fuori servizio).
- Non si tratta di un blocco di sessione/calendario (Mercato chiuso).
- Non è un blocco della pipeline degli ordini (Trade context is busy).
“Non abbastanza soldi” è strettamente un risultato di rischio e margine. La soluzione è sempre quella di modificare il calcolo del rischio-margine della richiesta, non di riprovare o aspettare.
Correzioni precise che eliminano l’errore
- Adatta il volume al simbolo e al conto
Calcola il margine richiesto per l’operazione prima di inviarla e scegli una dimensione del lotto che lasci un margine di sicurezza. MT5OrderCalcMargin()
restituisce il requisito nella valuta di deposito; in MT4, le costantiMarketInfo()
espongono le modalità di margine e i requisiti per lotto che consentono di scalare con precisione (ad esempio,MODE_MARGINREQUIRED
,MODE_MARGINCALCMODE
,MODE_MARGININIT
,MODE_MARGINMAINTENANCE
,MODE_MARGINHEDGED
). Utilizzarle per dimensionare il volume in modo deterministico. - Tieni conto dei modelli di margine specifici per strumento
Aspettati formule basate sulla leva finanziaria sulla maggior parte dei cambi spot; aspettati formule dipendenti dal prezzo o iniziali/di mantenimento su molti CFD e futures. La guida ufficiale ai margini MT5 fornisce le formule; costruisci il tuo dimensionamento attorno ad esse in modo che il calcolatore del server e le tue aspettative corrispondano esattamente. - Lascia spazio per gli ordini in sospeso e le posizioni coperte
Se effettui entrate con ordini in sospeso o esegui strategie di copertura, ricorda: il margine riservato per tali istruzioni riduce il margine libero. MT5 esponeACCOUNT_MARGIN_INITIAL
in modo da poter misurare quanto è già riservato; le proprietà del simbolo definiscono il margine coperto se apri una posizione di compensazione. Considera questi numeri come rigidi vincoli di budget. - Dimensiona in base alla realtà del capitale, non al saldo
Il tuo capitale (saldo ± P/L variabile − commissione ± qualsiasi importo bloccato) è il punto di partenza effettivo per il margine libero, secondo le definizioni della piattaforma. Se stai sostenendo una perdita o commissioni intraday, riduci prima il volume richiesto o l’esposizione, quindi invia la nuova operazione.
Scenari pratici e la risoluzione decisiva
- Un ordine di 1,00 lotti di oro viene rifiutato con il messaggio “Denaro insufficiente”.
L’oro utilizza spesso modelli legati al prezzo o al margine iniziale che riducono notevolmente i requisiti FX. Applica la formula dello strumento dalla guida di MT5 e riduci il volume fino a quandoOrderCalcMargin
restituisce un requisito comodamente al di sotto di Equity − Margin. - Una nuova operazione EURUSD non va a buon fine anche se il saldo sembra sufficiente.
Hai già inserito diversi ordini in sospeso e la piattaforma riserva un margine per essi. Il tuoACCOUNT_MARGIN_INITIAL
più il margine delle posizioni aperte lascia troppo poco margine libero per il nuovo ordine. Annulla o riduci gli ordini in sospeso, oppure riduci la dimensione del nuovo lotto e invia nuovamente l’ordine. - Una seconda parte coperta su MT5 viene rifiutata.
Il simbolo definisce un margine coperto; l’aggiunta dell’operazione di compensazione richiede comunque un importo monetario definito. InterrogaSYMBOL_MARGIN_HEDGED
e prevedilo nel budget quando pianifichi il volume della seconda parte. - Un programma mostra l’errore MT4 134 solo sulle vendite.
Il margine sul lato vendita può differire leggermente se il modello del broker utilizza fattori Bid/Ask o dipendenti dal prezzo; il risultato è comunque lo stesso: il margine richiesto per quel lato supera il margine libero. Correggi il calcolo o riduci la dimensione del lotto in modo cheOrderSend
venga cancellato. I thread della community illustrano questo esatto sintomo.
Guida per sviluppatori (MT4/MT5) per eliminare l’errore
- 1) Calcolo del margine pre-volo:
– MT5: chiamareOrderCalcMargin(order_type, symbol, lots, price, margin_out)
e utilizzare il valore restituito per accettare/rifiutare il volume localmente.
– MT4: leggere le costanti di margine per simbolo tramiteMarketInfo()
per calcolare il margine richiesto per la dimensione del lotto desiderata.
L’obiettivo è inviare solo richieste che il server accetterà. - 2) Budget per le operazioni in sospeso e regole di copertura:
– ControllareAccountInfoDouble(ACCOUNT_MARGIN_INITIAL)
per il margine riservato (pendenti).
– LeggereSYMBOL_MARGIN_HEDGED
e le proprietà correlate per conoscere il costo di una posizione di compensazione.
Quindi dimensionare l’azione successiva in modo che il totale rientri nel budget. - 3) Rispettare la modalità di calcolo dello strumento:
MT5 elenca diversi modelli di margine (Forex, contratti, indici, futures). Utilizzare le formule documentate per la modalità di calcolo delle operazioni del simbolo in modo che la stima rispecchi quella del server. - 4) Fallire prima, non sul server:
Se il pre-controllo mostra Margine libero < Margine richiesto + buffer, non inviare. Mettere in coda l’azione fino a quando il capitale non migliora o il volume non si riduce. (Questo mantiene anche i registri puliti ed evita i tentativi limitati dal tasso). - 5) Mostra all’utente il collo di bottiglia:
Negli strumenti/EA, mostra: Equità, Margine, Margine libero,ACCOUNT_MARGIN_INITIAL
(MT5) e il margine richiesto per ogni ordine. I trader smettono di ricevere l’errore 134/10019 una volta che vedono cosa sta consumando il loro budget.
MT4 vs MT5: le piccole differenze che contano
- Codici di errore: MT4 utilizza 134 /
ERR_NOT_ENOUGH_MONEY
; MT5 restituisceTRADE_RETCODE_NO_MONEY
ed espone funzioni di pre-controllo più ricche.li> - Calcolatori integrati:
OrderCalcMargin()
di MT5 fornisce il margine richiesto nella valuta del conto per un’operazione ipotetica; MT4 si basa sulle proprietà del simbolo/conto e sull’aritmetica del codice. - Budgeting degli ordini in sospeso: i campi del conto di MT5 includono esplicitamente il margine riservato per gli ordini in sospeso nel modello della piattaforma; i server ECN documentano pubblicamente una riserva simile sui conti live.
- Specifiche di copertura: MT5 descrive in dettaglio il margine coperto tramite
SYMBOL_MARGIN_HEDGED
e le proprietà correlate; utilizzale per evitare sorprese quando aggiungi gambe opposte.
Una breve lista di controllo affidabile
- Dimensiona l’ordine utilizzando la formula documentata del simbolo; sul Forex è Lotti × Dimensione del contratto ÷ Leva finanziaria (adeguata al prezzo/valuta, ove applicabile).
Su molti CFD, il prezzo e i tick fanno parte del calcolo. - Verifica che il margine libero sia sufficiente prima di inviare: Margine libero = Capitale proprio − Margine, e il margine include già la copertura per gli ordini in sospeso nella contabilità della piattaforma.
- Budget per le coperture: se si apre una posizione di compensazione, includere il margine coperto dalle proprietà del simbolo.
- Ricordare la realtà del capitale: le perdite fluttuanti, le commissioni e qualsiasi profitto bloccato riducono ciò che è possibile utilizzare ora.
- Automatizza il controllo preliminare: utilizza
OrderCalcMargin()
(MT5) o le costanti di margine (MT4) in modo che vengano inviati solo gli ordini fattibili.
Perché questi passaggi risolvono definitivamente l’errore
Il server rifiuta gli ordini con il messaggio “Fondi insufficienti” solo quando il calcolo del margine richiesto supera la tua capacità disponibile. La piattaforma pubblica le formule e i campi esatti che utilizza e MT5 offre anche una funzione dedicata per calcolare il requisito nella valuta del tuo deposito. Quando dimensionate gli ordini con gli stessi input, tenete conto delle riserve di ordini in sospeso e del margine coperto e basate le decisioni sul patrimonio netto piuttosto che sul saldo, la richiesta che inviate soddisfa già la soglia del server. A quel punto, l’errore 134 / TRADE_RETCODE_NO_MONEY
smette di apparire, perché le tue richieste corrispondono al centesimo ai controlli di rischio della piattaforma.
- Close