"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

Moderatore: Dainesi

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

Messaggioda 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
speedtrack
 
Messaggi: 53
Iscritto il: 03/01/2017, 2:33

Pubblicità

Pubblicità
 

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

Messaggioda 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
Avatar utente
carlo10
 
Messaggi: 1826
Iscritto il: 08/05/2014, 21:17

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

Messaggioda speedtrack » 03/01/2017, 19:13

carlo10 ha scritto: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:

Codice: Seleziona tutto
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
speedtrack
 
Messaggi: 53
Iscritto il: 03/01/2017, 2:33

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

Messaggioda 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
Avatar utente
carlo10
 
Messaggi: 1826
Iscritto il: 08/05/2014, 21:17

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

Messaggioda 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
 
Messaggi: 53
Iscritto il: 03/01/2017, 2:33

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

Messaggioda 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
Allegati
invalid sltp.png
invalid sltp.png (52.13 KiB) Osservato 67 volte
speedtrack
 
Messaggi: 53
Iscritto il: 03/01/2017, 2:33

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

Messaggioda 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.
Avatar utente
carlo10
 
Messaggi: 1826
Iscritto il: 08/05/2014, 21:17

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

Messaggioda 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
speedtrack
 
Messaggi: 53
Iscritto il: 03/01/2017, 2:33

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

Messaggioda 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
FoxTrade
 
Messaggi: 58
Iscritto il: 23/10/2015, 12:22
Località: Genova

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

Messaggioda speedtrack » 08/01/2017, 20:49

FoxTrade ha scritto: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...
speedtrack
 
Messaggi: 53
Iscritto il: 03/01/2017, 2:33

Prossimo

Torna a Metatrader - Expert Advisor - MQL

 


  • Discussioni correlate
    Risposte
    Visite
    Ultimo messaggio

Chi c’è in linea

Visitano il forum: LVCA e 0 ospiti

cron