Il mio EA fa una doppia entrata - pagina 2

 
angevoyageur:

Questa sembra una possibile spiegazione, ma se è il caso non è normale. Stai usando la modalità asincrona? Se no, il tuo EA deve aspettare la risposta del server e poi solo continuare ed elaborare il prossimo tick.

Se ho capito bene questo è un problema casuale e non puoi riprodurlo?

Puoi provare a stampare più informazioni di debug aggiungendo questa linea dopo la dichiarazione di m_Trade:


Ciao

Dalla mia soluzione descritta nel posthttps://www.mql5.com/en/forum/14327 ho avuto 1 altro doppio trade.

Penso che il problema sia l'esecuzione (troppo lenta) della funzione PositionSelect(Symbol()). Forse, i nuovi tick arrivano così velocemente che l'EA invia un nuovo ordine prima di ricevere una risposta di PositionSelect(Symbol()). Nel mio codice, è teoricamente impossibile inviare un nuovo/doppio ordine se la dimensione della posizione corrente è uguale o superiore alla dimensione massima consentita, vedi codice.

Il server live (ECN) del broker X genera così tanti tick durante un macro evento economico, per ogni tick che vedi sul server di simulazione di metaquotes, questo server genererà 20, 30 o 40 tick!


PositionSelect(Symbol());

// Check of het model al LONG zit.             
if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY)
      {
                                                           
// Check of het model al de maximale size in positie zit.                     
      if(PositionGetDouble(POSITION_VOLUME) >= MAX_Trade_Size)
            {
            return;
            }
      } 


Il mio EA inverte automaticamente la posizione doppia per ottenere la dimensione corretta della posizione come backup aggiuntivo.

Problem: Multiple Trades at brokerX
Problem: Multiple Trades at brokerX
  • www.mql5.com
Problem: Multiple Trades at brokerX.
 
snelle_moda:
....

Il server live (ECN) del broker X genera così tanti tick durante un macro evento economico, per ogni tick che vedi sul server di simulazione di metaquotes, questo server genererà 20, 30 o 40 tick!

Sì, questo è perché il DOM è attivo.

....

Il mio EA inverte automaticamente la posizione doppia per ottenere la dimensione corretta della posizione come backup aggiuntivo.

Grazie per il tuo contributo. Hai questo problema sullo stesso broker di altri o è indipendente dal broker?
 
angevoyageur:
Sì, questo è perché il DOM è attivo.
Grazie per il tuo contributo. Hai questo problema sullo stesso broker di altri o è indipendente dal broker?


Cos'è il "DOM"?


Solo su questo server broker, non l'ho mai sperimentato sul server di simulazione (Metaquotes) da quando questo thread https://www.mql5.com/en/forum/14327 è stato iniziato.

Prima di quel periodo, il server del broker X generava approssimativamente una quantità di tick uguale a quella del server Metaquotes.

Problem: Multiple Trades at brokerX
Problem: Multiple Trades at brokerX
  • www.mql5.com
Problem: Multiple Trades at brokerX.
 
snelle_moda:


Cos'è il "DOM"?


Solo su questo server di broker, non l'ho mai sperimentato sul server di simulazione da quando questo thread https://www.mql5.com/en/forum/14327 è stato iniziato.

Prima di quel periodo, il server del broker X generava approssimativamente una quantità di tick uguale a quella del server Metaquotes.

DOM = Depth of Market, quando è attivato ci sono molti più eventi Tick.
 
angevoyageur:
DOM = Depth of Market, quando è attivato ci sono molti più eventi Tick.


È possibile disabilitarlo?

 
snelle_moda:


È possibile disabilitarlo?

Non credo, per quanto ne so è abilitato dal lato del broker. Forse puoi chiedere al broker.
 

Ho ridotto al minimo il numero di tick in arrivo permettendo i tick solo quando il prezzo stesso è stato cambiato.


// De sum van de BID/LAST 
   static double dPriceSum;   
   double dOldPriceSum = dPriceSum;
   
// To be used for getting recent/latest price quotes
   MqlTick Latest_Price;      
   SymbolInfoTick(Symbol() ,Latest_Price);

   dPriceSum = Latest_Price.bid + Latest_Price.last; 

// Check if the price is (not)changed.
   if(dPriceSum == dOldPriceSum)
         {
         return;
         }
 
snelle_moda:

Ho ridotto al minimo il numero di tick in arrivo permettendo i tick solo quando il prezzo stesso è stato cambiato.


e cosa succede se il prezzo ask sta cambiando o il bid aumenta di 1 punto e l'ultimo diminuisce di 1 punto? Un tick "normale" è un cambiamento di Bid e/o Ask.
 
angevoyageur:
e cosa succede se il prezzo ask sta cambiando o il bid aumenta di 1 punto e l'ultimo diminuisce di 1 punto? Un tick "normale" è un cambiamento di Bid e/o Ask.

Questo è un buon punto. Forse dovrei usare solo il cambiamento del prezzo BID.

Una BAR sul grafico si basa anche sul prezzo BID?


Per il segnale di trigger del mio EA mi interessa solo il cambiamento del prezzo su cui si basa la BAR a 1 minuto.

 
Omg. Quindi il sonno non aiuta?

Cosa possiamo fare per evitare questo?
Motivazione: