EA mischt BUY- und SELL-Aufträge - Seite 2

 

Ohne die gesamte Ea zu kennen und zu wissen, wie Sie sie verwenden, können wir nur raten, was falsch ist. Angenommen, es ist die Auswahl einer korrekten Reihenfolge, um diese Anweisung zu übergeben.

while (!OrderSelect(cnt, SELECT_BY_POS)) {Sleep(500);}

gibt es keine Möglichkeit, es wird passieren:

if ((orderType == OP_BUY || orderType == OP_BUYSTOP)) {

wenn es Op_Sell ist. Es sei denn, Sie haben dieses Ding auf mehreren Charts desselben Symbols.

Da Sie eine umstrittene while-Schleife verwenden. Dies ist wahrscheinlich eine Form von Rapid Order Maker.

Meine letzte Vermutung. Die ausgewählte Order ändert sich nach der Ordertype-Prüfung :)

Alles andere, ich schlage vor, wie Raptor, dass Sie viele Druckanweisungen verwenden.

 
  1. Der ausgewählte Auftrag kann sich nach dem orderSelect NICHT mehr ändern.
  2.  for(cnt = total-1; cnt >= 0; cnt--)  {
          while (!OrderSelect(cnt, SELECT_BY_POS)) {Sleep(500);}
    Wenn der orderSelect fehlschlägt, wird er kontinuierlich fehlschlagen und Sie haben eine Endlosschleife. Wenn mehrere Aufträge in einem anderen Diagramm geschlossen werden, während Sie Ihr Diagramm aktualisieren, wird die Auswahl der nächsten Iteration fehlschlagen. Das ist sehr gefährlich.
 

Ich habe die Ticketnummer ausgedruckt und sie stimmt nicht mit dem OrderType() überein.


Wenn die ausgewählte Bestellung vom Typ OP_BUY ist, wird die richtige Bestellung verarbeitet, aber dann übergebe ich in meinem OrderModify(...)-Aufruf OrderTicket() als ersten Parameter, aber es ist das Ticket einer anderen Bestellung.


Hat jemand eine Idee?

 
dvarrin:

Irgendeine Idee?

Vielleicht versuchen Sie, eine Order zu ändern, die bereits geschlossen ist? Sie geben keinen Pool an, aus dem Sie Ihre Trades auswählen.

OrderSelect( int index, int select, int pool=MODE_TRADES) 
MODE_TRADES (Standard) - Order aus dem Trading-Pool ausgewählt (offene und schwebende Orders),

MODE_HISTORY - Order aus dem History-Pool ausgewählt (geschlossene und stornierte Order).


	          
 
RaptorUK:

Vielleicht versuchen Sie, eine bereits geschlossene Order zu ändern? Sie geben keinen Pool an, aus dem Sie Ihre Trades auswählen.

MODE_TRADES (Standard) - aus dem Handelspool ausgewählte Order (offene und schwebende Orders),

MODE_HISTORY - Order aus dem History-Pool ausgewählt (geschlossene und stornierte Order).


Das habe ich auch versucht, aber es hat nichts geändert. Es scheint, dass ich alle Daten der ausgewählten Order, die ich verwenden möchte, speichern muss:


int ticket=0;

doppelter SL = 0,0;

OrderSelect(cnt, ...);

ticket = OrderTicket();

SL = OrderStoploss();

if (OrderType() == OP_BUY) {


}


...


Warum ist das so? Ich verstehe nicht, was in meinem Code falsch ist, so dass OrderTicket() nicht mit demselben Auftrag übereinstimmt, auf den sich OrderType() bezieht.

 
dvarrin:

Ich habe die Ticketnummer ausgedruckt und sie stimmt nicht mit dem OrderType() überein.


Wenn die ausgewählte Bestellung vom Typ OP_BUY ist, wird die korrekte Bestellung verarbeitet, aber dann übergebe ich in meinem OrderModify(...)-Aufruf OrderTicket() als ersten Parameter, aber es ist das Ticket einer anderen Bestellung.

Ist es die nächste Bestellung in der Reihenfolge, ist es die vorherige Bestellung in der Reihenfolge?
 

orderType = OrderType()

zu ändern in

int orderType = OrderType(); und löschen Sie die ursprüngliche Erklärung.

 
forexCoder:

orderType = OrderType()

zu ändern in

int orderType = OrderType(); und löschen Sie die ursprüngliche Erklärung.


OrderType ist in Ordnung. Es ist das OrderTicket(), das nicht das Ticket der richtigen Bestellung ist.
 

Ich würde Sie ermutigen, herauszufinden, was Ihr Problem verursacht, anstatt es zu umgehen....

Bei der Softwareentwicklung dreht sich alles um das Lösen von Problemen, so lernen wir und werden besser. Ich bin seit Samstag bei meinem 3. Versuch, ein bestimmtes Problem mit Fibs zu kodieren, ich bin fast am Ziel. . die sorgfältige Verwendung der Print()-Funktion ist sehr hilfreich...

 
dvarrin:

OrderType ist in Ordnung. Es ist das OrderTicket(), das nicht das Ticket der richtigen Bestellung ist.

int OrderType = OrderType() ist nicht in Ordnung, das eine kann das andere verdecken (lokale Deklarationen verdecken Globale ohne Fehler.) Versuchen Sie

int orderType = OrderType()

Grund der Beschwerde: