![]() |
|
Startseite | Registrieren | Hilfe | Benutzerliste | Kalender | Suchen | Heutige Beiträge | Alle Foren als gelesen markieren |
Programmierung MQL5 Hier gehts rund ums Programmieren in MQL5. |
![]() |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
![]()
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 |
![]() |
Lesezeichen |
Themen-Optionen | Thema durchsuchen |
Ansicht | |
|
|