"Invalid T/P or S/L" e distanza minima stoploss e takeprofit

Sezione dedicata a metatrader (ed altre piattaforme) ed al suo linguaggio di programmazione per il trading automatico

Moderator: Dainesi

speedtrack
Posts: 63
Joined: 03/01/2017, 2:33

"Invalid T/P or S/L" e distanza minima stoploss e takeprofit

Post by speedtrack » 03/01/2017, 13:18

Sto programmando un ea per inserire ordini bracket sulla mt4. Per qualche motivo capita spesso che quando clicco sul pulsate per eseguire l'operazione buy o sell, anche se la funzione OrderSend() viene eseguita con gli argomenti corretti, il risultato è il classico errore di sl/tp invalido. Ho anche aggiunto qualche riga di codice per verificare che la distanza minima dal bid/ask (40 ticks) venga rispettata. Il problema si verifica spesso quando provo a inviare un ordine con lo stop eo tp sulla distanza minima, quindi di 4 pip

User avatar
carlo10
Posts: 1874
Joined: 08/05/2014, 21:17

Re: "Invalid T/P or S/L" e distanza minima stoploss e takepr

Post by carlo10 » 03/01/2017, 18:53

Ciao,

buy e sell hanno si basano su prezzi differenti per apertura e chiusura degli ordini, stai rispettando questa tabellina?

https://book.mql4.com/appendix/limits

speedtrack
Posts: 63
Joined: 03/01/2017, 2:33

Re: "Invalid T/P or S/L" e distanza minima stoploss e takepr

Post by speedtrack » 03/01/2017, 19:13

carlo10 wrote:Ciao,

buy e sell hanno si basano su prezzi differenti per apertura e chiusura degli ordini, stai rispettando questa tabellina?

https://book.mql4.com/appendix/limits
Grazie, non avevo mai visto quella tabella. Comunque sembra che la funzione rispetti correttamente la distanza minima:

Code: Select all

void marketOrder(int opType){
   if(stopLoss >= netMinOrderDistance && takeProfit >= netMinOrderDistance){
      if(lotSize >= minLotSize && lotSize <= maxLotSize){
         if(!IsTradeContextBusy()){
            RefreshRates();   
            if(opType == OP_BUY){
               int checkbuy = OrderSend(_Symbol, opType, lotSize, Ask, slippage, Bid-slDouble, Ask+tpDouble, "",magicNumber);
            }else if(opType == OP_SELL){
               int checksell = OrderSend(_Symbol, opType, lotSize, Bid, slippage, Ask+slDouble, Bid-tpDouble, "",magicNumber);
            }else{
               Print("Operation type is not supported.");
            };
         }else{
            Print("Trade Context is Busy.");
         };
      }else{
         Print("Min/Max Volume Exceeded or Not Enough Margin");
      };
   }else{
      Print("The Minimum Stop and Profit Level is: "+IntegerToString(netMinOrderDistance)+" Ticks");
   };
};
netMinOrderDistance e la distanza minima in ticks = 40 su eurusd nel mio caso; slDouble e tpDouble sono lo stoploss e il takeprofit moltiplicati per _Point quindi se metto un sl e tp di giusto 40 ticks slDouble e tpDouble saranno entrambi 0.0004 e questo è proprio il caso in cui vengono fuori gli errori di invalid sl/tp, come se il tick inviato dal server non corrisponda con quello visualizzato sulla piattaforma che quindi risulterebbe in uno spread diverso

User avatar
carlo10
Posts: 1874
Joined: 08/05/2014, 21:17

Re: "Invalid T/P or S/L" e distanza minima stoploss e takepr

Post by carlo10 » 04/01/2017, 1:23

In questi casi consiglio sempre di stampare con un bel print tutte le variabili passate alla funzione ordersend ed il valore di bid ed ask. In questo modo puoi vedere se le variabili sono effettivamente valorizzate con il valore che hai in mente oppure se hanno valori differenti.

In ogni caso per questo specifico errore può essere legato al fatto che il tuo broker è un ECN e quindi l'impostazione degli stop e del take profit deve essere fatta in un secondo momento e non contemporaneamente all'ordersend.

Anche questo articolo può essere utile: http://metatrader-forex-trading.blogspo ... r-130.html

speedtrack
Posts: 63
Joined: 03/01/2017, 2:33

Re: "Invalid T/P or S/L" e distanza minima stoploss e takepr

Post by speedtrack » 04/01/2017, 1:55

In mattinata provo a fare un print di tutte le variabili interne e non. Comunque a volte la funzione riesce ad eseguire l'ordine, infatti con stop e tp maggiori della distanza minima non da problemi. Forse, a causa della latenza della connessione, quando arriva l'ordine al server, lo spread non si trova allineato facendo risultare l'ordine non valido. L'unica cosa strana che ho notato in questi giorni grazie ai volumi ridotti, è che anche se il prezzo e lo spread rimangono visibilmente fissi sullo stesso valore per diversi secondi, tutti gli ordini inviati in quel lasso di tempo falliscono

speedtrack
Posts: 63
Joined: 03/01/2017, 2:33

Re: "Invalid T/P or S/L" e distanza minima stoploss e takepr

Post by speedtrack » 04/01/2017, 15:31

ecco lo screenshot; dai dati stampati risulta che la distanza minima viene rispettata, ho anche aggiunto 1 tick alla variabile per dare un po' di margine di errore, infatti la distanza minima da rispettare è 40 non 41
Attachments
invalid sltp.png
invalid sltp.png (52.13 KiB) Viewed 201 times

User avatar
carlo10
Posts: 1874
Joined: 08/05/2014, 21:17

Re: "Invalid T/P or S/L" e distanza minima stoploss e takepr

Post by carlo10 » 04/01/2017, 16:06

Il problema potrebbe essere legato al fatto che stai utilizzando una precisione troppo elevata rispetto a quanto ti consente il broker.

A mio avviso potrebbe essere proprio il 41 a dare fastidio, di solito si utilizzano numeri tondi quindi o 40 o 50 che si traducono in 4 o 5 pip. Le pipette mi pare di ricordare non siano consentite.

speedtrack
Posts: 63
Joined: 03/01/2017, 2:33

Re: "Invalid T/P or S/L" e distanza minima stoploss e takepr

Post by speedtrack » 04/01/2017, 16:25

mi sembra strano, da quel che so lo stop o il tp vanno bene ovunque purche venga rispettata la distanza minima e infatti non è un errore che si verifica sempre. Sembra più un inefficienza del server o della piatta a questo punto

FoxTrade
Posts: 61
Joined: 23/10/2015, 12:22
Location: Genova

Re: "Invalid T/P or S/L" e distanza minima stoploss e takepr

Post by FoxTrade » 08/01/2017, 20:36

Anche io, per quello che so, l' unico limite ad oggi è il rispetto di una distanza minima.
:arrow: Hai un' idea per un Expert Advisor ma non sai programmare?
Lasciami un messaggio in privato o una mail, sviluppo EA e indicatori per Metatrader 4.

Email
marcomarco85@hotmail.it
Skype:
Marcofox51

speedtrack
Posts: 63
Joined: 03/01/2017, 2:33

Re: "Invalid T/P or S/L" e distanza minima stoploss e takepr

Post by speedtrack » 08/01/2017, 20:49

FoxTrade wrote:Anche io, per quello che so, l' unico limite ad oggi è il rispetto di una distanza minima.
io ho risolto aggiungendo uno o 1/2 tick alla distanza minima, però il problema rimane. Sembra che le quotazioni sulla piatta non riflettano quelle sul server, forse a causa della latenza della connessione, oppure per qualche tipo di arrotondamento del prezzo...

Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest