Einzelnen Beitrag anzeigen
  #1 (permalink)  
Alt 18.03.23
Hippi Hippi ist offline
Neues Mitglied
 
Registriert seit: Mar 2023
Beiträge: 1
Hippi befindet sich auf einem aufstrebenden Ast
Standard Setzen und löschen von Pendingorders

Hallo zusammen!

Ich möchte zu einer bestimmten Zeit ein Schleifendurchlauf starten. Was auch funktioniert.
Dann weise ich der ersten While-Schleife (Zeile18) an das sie 240 mal durchlaufen werden soll.
Danach wird die Variable „_time_waiting“ (Zeile19) auf „TimeCurrent() + 10 Sekunden“ gesetzt.
In Zeile 20 folgt nun die zweite While-Schleife und setzt die beiden PendingOrders.
Nach 10 Sekunden werden die PendingOrders gelöscht (Zeilen 26,27,28).
In Zeile 31 wird die erste While-Schleife um 1 weiter gezählt.

Das Problem:
Wenn die PendingOrders gesetzt wurden bleiben sie für 10 Sekunden stehen. Danach werden sie nicht gelöscht sondern es kommt nur ein kurzes blinken (an/aus). Und dann werden die PendingOrders wieder an die gleiche Stelle gesetzt wo sie vorher waren mit den gleichen Preisen. Obwohl sich der Chart verändert hat. Das heißt, die PendingOrders gehen mit dem Chart nicht mit.

Kann es sein, dass der EA durch die While-Schleifen blockiert wird?
Wenn ja, wie müsste man den Code ändern?

Ich wäre wirklich für jede Hilfe dankbar.


MfG Hippi


Code:
#property strict     
    #include <Trade\Trade.mqh>
    CTrade trade;
      
      
    double kontrakt = 0.01;
    int anfang = 1;
    int ende = 240;
    datetime _time_waiting = 0;
    
    void OnTick(void){
    
    
    datetime Istzeit = TimeCurrent();
    string Std_Min_Sek = TimeToString(Istzeit,TIME_SECONDS);
    
    if(Std_Min_Sek == "19:45:15"){
    while (anfang < ende){   //1. while-Schleif
    _time_waiting = TimeCurrent() + 10;
    while ( TimeCurrent() < _time_waiting ){   //2. while-Schleife    
    if(OrdersTotal() == 0)
    trade.BuyStop(kontrakt,Ask+3500*_Point,_Symbol,0,0,ORDER_TIME_GTC,0,"Automatisch");
    if(OrdersTotal() == 1)
    trade.SellStop(kontrakt,Bid-3500*_Point,_Symbol,0,0,ORDER_TIME_GTC,0,"Automatisch");}
    
    for(int i= OrdersTotal()-1; i >= 0; i--){
    ulong ticket = OrderGetTicket(i);
    trade.OrderDelete(ticket);}      
    
    Comment(Std_Min_Sek, "\n \n", anfang);
    anfang = anfang + 1;}}
    
    }//End OnTick