“S/L o T/P non validi” su MT4/MT5: cosa significa, perché succede e come risolverlo con certezza

“S/L o T/P non validi“ significa che la piattaforma sta rifiutando il tuo ordine o la tua modifica perché lo Stop Loss o il Take Profit che hai inserito violano le regole di prezzo della piattaforma per quel simbolo in quel momento. In MetaTrader 4 questa condizione è legata all’errore 130 – ”Stop non validi” quando si invia tramite codice; su MT5 vedrai un risultato fallito con lo stesso significato. In tutti i casi, la piattaforma sta dicendo: i livelli che hai fornito non possono essere accettati come stop validi per questo ordine in questo momento.

Di seguito è riportata una spiegazione precisa delle regole applicate dalla piattaforma, delle situazioni esatte che attivano il messaggio e delle soluzioni per risolverlo.

Investi nel Forex con FxPro

Il regolamento applicato dalla piattaforma

MetaTrader applica due famiglie di vincoli sui livelli di stop:

  • Logica del prezzo (gli stop devono trovarsi sul lato corretto del prezzo per il tipo di ordine).
  • Logica della distanza (gli stop devono essere sufficientemente lontani dal prezzo corrente e non all’interno di una zona protetta “congelata”).

Tali vincoli si applicano sia che si stia aprendo un ordine di mercato, modificando una posizione esistente o immettendo un ordine in sospeso con SL/TP integrato. Se si viola una delle due famiglie di regole, il terminale restituisce il messaggio “S/L o T/P non validi.” I centri di assistenza dei broker e la documentazione MetaQuotes descrivono direttamente queste regole.

Apri un conto con FxPro

Logica del lato prezzo: la piattaforma non accetta stop sul lato sbagliato

Per gli ordini di mercato:

  • Acquisto: lo Stop Loss deve essere inferiore al prezzo negoziabile corrente e il Take Profit deve essere superiore ad esso.
  • Vendita: lo Stop Loss deve essere superiore al prezzo corrente negoziabile e il Take Profit deve essere inferiore ad esso.

Se si tenta l’inverso (ad esempio, un acquisto con uno Stop Loss superiore al prezzo), si attiva il messaggio “S/L o T/P non validi”. Le FAQ dei broker indicano il posizionamento “dal lato sbagliato” come causa diretta dell’errore.

Per gli ordini in sospeso, vale lo stesso principio, ma in relazione al prezzo di ingresso dell’ordine in sospeso. Ad esempio, un Buy Stop (un ingresso al di sopra del mercato) richiede comunque uno Stop Loss al di sotto del suo ingresso e un Take Profit al di sopra di esso; un Sell Limit (un ingresso al di sopra del mercato) richiede uno Stop Loss al di sopra del suo ingresso e un Take Profit al di sotto di esso. Se si specificano stop che non corrispondono alla logica laterale dell’ordine in sospeso che si sta inserendo, la piattaforma rifiuta la richiesta con un messaggio SL/TP non valido; alcuni broker visualizzano anche un messaggio di accompagnamento relativo a un ordine in sospeso con “direzione errata” quando queste condizioni sono confuse.

Investi nel Forex con FxPro

Logica della distanza: StopLevel e FreezeLevel

Due parametri lato server regolano quanto vicino il tuo SL/TP può essere al prezzo corrente e quando ti è consentito modificarli:

  • StopLevel — la distanza minima (in punti) tra il prezzo corrente e qualsiasi Stop Loss o Take Profit. Se il tuo stop è più vicino di questa soglia, il server lo rifiuta. MetaQuotes definisce MODE_STOPLEVEL (MT4) e fornisce accessori equivalenti in MT5 (ad esempio, CSymbolInfo.StopsLevel).
  • FreezeLevel — un buffer non modificabile (anch’esso in punti) attorno al prezzo corrente. Se gli stop della tua posizione aperta si trovano all’interno di questo buffer, non puoi modificarli o eliminarli finché il prezzo non si allontana. In MT4, MODE_FREEZELEVEL documenta questa restrizione; il libro MQL4 e i thread del forum degli sviluppatori descrivono come le modifiche vengono bloccate all’interno di FreezeLevel e come le violazioni restituiscono “stop non validi”.

Queste restrizioni vengono applicate sul server di trading, non solo sullo schermo. Se si inviano stop all’interno di StopLevel o si tenta di regolarli mentre il prezzo è all’interno di FreezeLevel, la richiesta fallisce con il messaggio in questione.

Apri un conto con FxPro

Le unità contano: MetaTrader misura queste distanze in punti, non in pip

In MetaTrader, i limiti della piattaforma e molti parametri degli ordini sono specificati in punti. Nella maggior parte delle quotazioni forex a 5 cifre, 1 pip = 10 punti; se si pensa in pip ma si inserisce il numero come punti, si può ottenere un errore di un fattore dieci e cadere all’interno della distanza minima. Le guide ufficiali e i riferimenti della comunità chiariscono costantemente questa conversione. La proprietà del simbolo MODE_STOPLEVEL è esplicitamente “in punti”.

Implicazione: se si intendeva un buffer di 15 pip e si è digitato 15 (punti), in realtà si è richiesto 1,5 pip, che spesso è inferiore a StopLevel per molti simboli e verrà rifiutato come SL/TP non valido.

Investi nel Forex con FxPro

Le situazioni precise che determinano un “S/L o T/P non valido”

1) Gli stop sono troppo vicini al prezzo corrente (violando StopLevel)
Questa è la causa più comune. Molti broker pubblicano una distanza minima di stop per simbolo; il terminale la applica. Quando lo SL o il TP richiesti sono più vicini dello StopLevel del server, l’ordine o la modifica vengono rifiutati. La guida del broker e la documentazione MetaQuotes descrivono esplicitamente questa condizione. Soluzione: impostare SL e TP oltre la distanza minima di stop per il simbolo.

2) Gli stop sono sul lato sbagliato per il tipo di ordine

.
Un ordine di acquisto con uno stop loss superiore al prezzo o un take profit inferiore al prezzo non andrà a buon fine. Un ordine di vendita con uno stop loss inferiore al prezzo o un take profit superiore al prezzo non andrà a buon fine.
Soluzione: posiziona SL/TP sul lato corretto rispetto all’ordine e, per gli ordini in sospeso, rispetto al loro prezzo di entrata. Le FAQ dei broker lo indicano chiaramente.

3) Stai cercando di modificare mentre il prezzo è all’interno di FreezeLevel
Se il prezzo corrente rientra nel FreezeLevel del server, non è possibile modificare o eliminare gli stop fino a quando il prezzo non esce da tale buffer. L’invio di una modifica che viola le regole del FreezeLevel genera un errore di stop non valido. Soluzione: modificare solo quando il prezzo è al di fuori del FreezeLevel. La documentazione e gli esempi di MetaQuotes illustrano questa limitazione.
4) Punti vs pip non corrispondenti (hai digitato un conteggio di pip come punti)
Inserire un valore in punti quando si intendeva pip comporta una distanza dieci volte inferiore sulle quotazioni FX a 5 cifre, spingendo il tuo SL/TP all’interno di StopLevel. Soluzione: convertire correttamente: 1 pip = 10 punti su FX a 5 cifre. Le guide di FXCM e altri riferimenti confermano la conversione utilizzata in MT4.

5) Precisione decimale o errori di formattazione (numero di cifre errato)
I simboli differiscono nel numero di cifre dopo il decimale (vedi MODE_DIGITS). L’utilizzo di un livello con un numero errato di decimali (o un arrotondamento errato) può produrre un prezzo che il server non accetterà. Soluzione: formattare SL/TP utilizzando la precisione delle cifre del simbolo; MetaQuotes espone questo dato nelle proprietà del simbolo e lega i limiti di stop a punti con quella precisione.

6) Ordine in sospeso configurato in modo incoerente con il suo tipo
L’inserimento di un ordine in sospeso con SL/TP che implica il lato opposto (ad esempio, un Buy Stop con uno Stop Loss superiore all’entrata) viene rifiutato. Alcuni broker visualizzano un messaggio di “direzione errata” insieme a SL/TP non validi in questo scenario. Soluzione: definire SL/TP come sarebbero per la posizione dopo l’esecuzione dell’ordine in sospeso.

7) Il server utilizza un livello di stop minimo fluttuante
In alcune sedi la piattaforma riporta MODE_STOPLEVEL = 0 mentre il server applica ancora una distanza minima dinamica. La documentazione di MetaQuotes sottolinea che in questi casi è comunque possibile ricevere l’errore 130 (“stop non validi”) anche se il livello di stop segnalato è zero. Soluzione: impostare sempre SL/TP a una distanza ragionevole oltre lo spread e il movimento tipico dei tick; non dare per scontato che zero significhi “nessun limite”.

Apri un conto con FxPro

In che modo questo messaggio differisce dagli altri

  • “Off quotes” indica che in quel momento non esiste un prezzo accettabile per l’esecuzione (problema di disponibilità del prezzo), non una violazione del posizionamento dello stop.
  • “Trade context is busy” significa che la piattaforma sta già elaborando un’altra azione di trading (blocco della pipeline), non un problema di posizionamento dello stop.
  • “No connection” significa che il terminale è offline dal server di trading; le regole di stop non vengono nemmeno valutate fino al ripristino della connettività.

Mantenere separate queste categorie accelera la risoluzione: SL/TP non valido riguarda le regole di prezzo e di distanza per questo simbolo, in questo momento.

Investi nel Forex con FxPro

Soluzioni pratiche e deterministiche che eliminano l’errore

  • Posiziona gli stop sul lato corretto per il tipo di ordine (e in relazione all’entrata per gli ordini in sospeso). Questo da solo elimina un’intera classe di errori. Le FAQ dei broker identificano il posizionamento sul “lato sbagliato” come causa principale.
  • Rispettare la distanza minima (StopLevel) e il buffer di non modifica (FreezeLevel). Quando il tuo SL/TP è all’interno di StopLevel, il server lo rifiuta; quando il prezzo è all’interno di FreezeLevel, il server blocca le modifiche. MetaQuotes documenta entrambi i limiti e la loro applicazione.
  • Inserisci correttamente le distanze in punti. Sulla maggior parte dei simboli FX a 5 cifre, 1 pip = 10 punti. Se intendi 15 pip, inserisci 150 punti. Le guide MT4 di FXCM spiegano la conversione da punti a pip utilizzata dal terminale.
  • Utilizza la precisione decimale del simbolo quando digiti i livelli di prezzo assoluti. Affidati alla proprietà digits del simbolo per formattare prezzi chiari e accettabili. La tabella delle proprietà di MetaQuotes le collega alla convalida dello stop.
  • Per gli ordini in sospeso, crea SL/TP come se l’ordine fosse già stato eseguito. Lo SL di un Buy Stop appartiene al di sotto del suo ingresso; il TP di un Sell Limit appartiene al di sotto del suo ingresso e così via. Le pagine di supporto dei broker e i thread di lunga data della community sottolineano questa regola.
  • Presumere che StopLevel possa essere dinamico anche quando la piattaforma visualizza 0. MetaQuotes avverte che alcuni server applicano soglie mobili; in questi casi è comunque possibile ricevere l’errore 130 con MODE_STOPLEVEL = 0. Non impostare stop ultra-stretti che non lasciano spazio a un limite fluttuante.

Applicate queste sei correzioni e l’errore scomparirà nel trading normale, indipendentemente dal simbolo.

Apri un conto con FxPro

Note per gli sviluppatori (MT4/MT5)

  • Utilizza i punti, non i pip: ricava le distanze tramite _Point (MT4/MT5) moltiplicato per la dimensione del pip desiderata; non codificare mai i decimali.
  • Interroga StopLevel/FreezeLevel e rispettali nelle tue convalide. In MT4, consulta MarketInfo(Symbol(), MODE_STOPLEVEL / MODE_FREEZELEVEL); in MT5, utilizzare CSymbolInfo.StopsLevel() e SymbolInfoInteger(..., SYMBOL_TRADE_FREEZE_LEVEL). La documentazione MetaQuotes definisce questi campi esatti.
  • Prevedi limiti dinamici: quando MODE_STOPLEVEL restituisce 0, consideralo come “controllo esterno/dinamico in uso”, come nota MetaQuotes, e mantieni un margine di sicurezza; gli errori continueranno a essere generati se la soglia mobile del server viene superata.

Con queste misure di sicurezza, gli ordini programmatici smettono di fallire con l’errore 130 e il trading manuale rispecchia tale stabilità.

Investi nel Forex con FxPro

Riferimento rapido: quando ogni ordine è valido

  • Acquisto sul mercato — valido solo quando SL sotto, TP sopra, entrambi ad almeno StopLevel di distanza; modifiche bloccate all’interno di FreezeLevel.
  • Vendita sul mercato — valida solo quando SL sopra, TP sotto, entrambi ad almeno StopLevel di distanza; modifiche bloccate all’interno di FreezeLevel.
  • Buy Stop / Buy Limit — SL sotto l’entrata, TP sopra l’entrata; entrambi devono soddisfare StopLevel rispetto al prezzo corrente al momento dell’invio e alle regole del broker per gli ordini in sospeso.
  • Sell Stop / Sell Limit — SL sopra l’entrata, TP sotto l’entrata; si applicano gli stessi vincoli di distanza.
  • Significato: “S/L o T/P non validi” segnala che lo Stop Loss o il Take Profit violano le regole di logica laterale o distanza; nel codice MT4 appare come errore 130 (“Stop non validi”).
  • Cause principali: stop sul lato sbagliato, stop troppo vicini (StopLevel), modifiche tentate all’interno di FreezeLevel, punti vs pip non corrispondenti o ordini in sospeso con posizionamento SL/TP incoerente.
  • Soluzioni efficaci: posizionare gli stop sul lato corretto, rispettare StopLevel/FreezeLevel, inserire correttamente le distanze in punti, formattare i livelli con le cifre del simbolo e, per gli ordini in sospeso, definire gli stop come rimarranno dopo l’esecuzione.

Segui queste regole e gli stop “S/L o T/P non validi” smetteranno di interrompere il tuo trading: i tuoi ordini e le tue modifiche saranno in linea con la logica dei prezzi della piattaforma e il server li accetterà.

Apri un conto con FxPro

1

DerivDeriv

4,9 rating based on 49 ratings
4.9/5 49
2

XMXM

4,9 rating based on 64 ratings
4.9/5 64
3

LiteFinanceLiteFinance

4,8 rating based on 41 ratings
4.8/5 41
4

easyMarketseasyMarkets

4,8 rating based on 37 ratings
4.8/5 37
5

FXGTFXGT

4,7 rating based on 20 ratings
4.7/5 20
1

BybitBybit

4,4 rating based on 44 ratings
4.4/5 44
2

CoinTRCoinTR

4,1 rating based on 40 ratings
4.1/5 40
3

BitgetBitget

punteggio 3,0
3/5 0
4

BinanceBinance

4,8 rating based on 66 ratings
4.8/5 66
5

KuCoinKuCoin

4,5 rating based on 36 ratings
4.5/5 36
  • Close