Mein EA macht einen doppelten Eintrag - Seite 2

 
angevoyageur:

Dies scheint eine mögliche Erklärung zu sein, aber wenn es der Fall ist, ist es nicht normal. Verwenden Sie den asynchronen Modus? Wenn nicht, muss Ihr EA die Antwort des Servers abwarten und dann erst mit der Verarbeitung des nächsten Ticks fortfahren.

Wenn ich das richtig verstanden habe, ist das ein zufälliges Problem und Sie können es nicht reproduzieren?

Sie können versuchen, mehr Debug-Informationen zu drucken, indem Sie diese Zeile nach der Deklaration von m_Trade hinzufügen:


Hallo

Seit meiner in Beitraghttps://www.mql5.com/en/forum/14327 beschriebenen Lösung habe ich 1 weiteren Doppelhandel gehabt.

Ich denke, das Problem ist die (zu langsame) Ausführung der PositionSelect(Symbol()) Funktion. Vielleicht kommen die neuen Ticks so schnell herein, dass der EA eine neue Order sendet, bevor er eine Antwort von PositionSelect(Symbol()) erhält. In meinem Code ist es theoretisch unmöglich, eine neue/doppelte Order zu senden, wenn die aktuelle Positionsgröße gleich oder größer ist als die maximal zulässige Positionsgröße, siehe Code.

Der Live-Server (ECN) von Broker X generiert so viele Ticks während eines makroökonomischen Nachrichtenereignisses, dass für jeden Tick, den Sie auf dem Simulationsserver von metaquotes sehen, dieser Server 20, 30 oder 40 Ticks generiert!


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;
            }
      } 


Mein EA kehrt die doppelte Position automatisch um, um die korrekte Positionsgröße als zusätzliches Backup zu erhalten.

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

Der Live-Server (ECN) von Broker X generiert so viele Ticks während eines makroökonomischen Nachrichtenereignisses, dass für jeden Tick, den Sie auf dem Simulationsserver von metaquotes sehen, dieser Server 20, 30 oder 40 Ticks generiert!

Ja, das liegt daran, dass das DOM aktiv ist.

....

Mein EA kehrt die doppelte Position automatisch um, um die korrekte Positionsgröße als zusätzliches Backup zu erhalten.

Vielen Dank für Ihren Beitrag. Haben Sie dieses Problem bei demselben Broker wie andere, oder ist es brokerunabhängig?
 
angevoyageur:
Ja, das liegt daran, dass das DOM aktiv ist.
Vielen Dank für Ihren Beitrag. Haben Sie dieses Problem mit demselben Broker wie andere, oder ist es brokerunabhängig?


Was ist "DOM"???


Nur auf diesem Brokerserver, auf dem Simulationsserver (Metaquotes) habe ich das noch nie erlebt, seit dieser Thread https://www.mql5.com/en/forum/14327 gestartet wurde.

Vor diesem Zeitraum erzeugte der Server von Broker X ungefähr die gleiche Anzahl von Ticks wie der Metaquotes-Server.

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


Was ist "DOM"???


Nur auf diesem Brokerserver, auf dem Simulationsserver habe ich das nie erlebt, seit dieser Thread https://www.mql5.com/en/forum/14327 gestartet wurde.

Vor diesem Zeitraum erzeugte der Server von Broker X ungefähr die gleiche Anzahl von Ticks wie der Metaquotes-Server.

DOM = Depth of Market, wenn es aktiviert ist, gibt es viel mehr Tick-Ereignisse.
 
angevoyageur:
DOM = Depth of Market, wenn es aktiviert ist, gibt es eine Menge mehr Tick-Ereignisse.


Ist es möglich, es zu deaktivieren?

 
snelle_moda:


Ist es möglich, sie zu deaktivieren?

Ich glaube nicht, soweit ich weiß, ist es auf der Maklerseite aktiviert. Vielleicht können Sie sich an den Broker wenden.
 

Ich habe die Anzahl der eingehenden Ticks minimiert, indem ich die Ticks nur zulasse, wenn sich der Preis selbst geändert hat.


// 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:

Ich habe die Anzahl der eingehenden Ticks minimiert, indem ich die Ticks nur zulasse, wenn sich der Preis selbst geändert hat.


Und was ist, wenn sich der Briefkurs ändert oder der Geldkurs um 1 Punkt steigt und der letzte Kurs um 1 Punkt fällt? Ein "normaler" Tick ist eine Änderung von Bid und/oder Ask.
 
angevoyageur:
Und was ist, wenn sich der Briefkurs ändert oder der Geldkurs um 1 Punkt steigt und der letzte Kurs um 1 Punkt fällt? Ein "normaler" Tick ist eine Änderung von Bid und/oder Ask.

Das ist ein guter Punkt. Vielleicht sollte ich nur die Veränderung des BID-Preises verwenden.

Ein BAR auf dem Chart basiert auch auf dem BID-Preis?


Für das Triggersignal meines EA bin ich nur an der Änderung des Preises interessiert, auf dem der 1-Minuten-BAR basiert.

 
Oh je. Also hilft Schlaf nicht?

Was können wir tun, um das zu vermeiden?