Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Programmierung MQL4 (http://www.expert-advisor.com/forum/forumdisplay.php?f=220)
-   -   Ausführung zu fester Zeit (http://www.expert-advisor.com/forum/showthread.php?t=5794)

Lena 03.08.17 07:55

Ausführung zu fester Zeit
 
Kaum denkt man, man hat endlich alles am laufen, schon zeigen sich neue Probleme. Ich habe viele Anweisungen, welche nur einmal nach dem Tageswechsel ausgeführt werden sollen. Im Prinzip funktioniert das auch perfekt. Dumm ist nur, mein Broker nimmt dann keine Anweisungen entgegen. Ich bekomme die Fehlermeldung: [MARKET IS CLOSED]
Kann ich innerhalb dieser Schleife, Anweisungen erst um Punkt 00.00 Uhr abarbeiten lassen?

if(OldDay != TimeDay(Time[0])){
//Anweisungen
OldDay=TimeDay(Time[0]);
}

Leopold 03.08.17 08:58

Hallo,

alles was in dieser Anweisung steht wird beim ersten Tick am Tag ausgeführt.
Wenn also der Markt geschlossen ist wird Diese auch nicht ausgeführt.
Mit einer festen Zeit musst du generell aufpassen, denn wenn genau in dieser Zeit kein neuer Tick kommt wird diese Anweisung nicht ausgeführt.

---Leopold---

Lena 03.08.17 09:55

Das ist aber blöd!!! :mad:
Kann ich denn zu einer festen Uhrzeit eine Variable auf true setzen?

Lena 03.08.17 09:58

Ich war sowieso über die Fehlermeldung überrascht. Der Forexmarkt schließt doch eigentlich nur über´s Wochenende.

Leopold 03.08.17 10:04

Ja schon, wenn in der "if" Anweisung nur eine Zeit abgefragt wird, muss in genau dieser Zeit ein Tick rein kommen, damit diese Anweisung ausgeführt wird.

Eine Möglichkeit wäre:

Code:

if(Zeit >= Ausführungszeit && Variable == False) {}
Wenn du in dieser Anweisung dann die Variable auf True setzt wird dann auch nicht mehr ausgeführt.
Die Variable muss aber wieder zurückgesetzt werden falls diese Anweisung am nächsten Tag wieder ausgeführt werden soll.
Dieses zurücksetzen kannst du dann in der Anweisung die beim 1. Tick ausgeführt wird machen.

---Leopold---

Lena 03.08.17 13:01

Habe es jetzt so gemacht.

Code:

  Zeit1 = StringToTime((string)TimeYear(Time[0])+"."+(string)TimeMonth(Time[0])+"."+(string)TimeDay(Time[0])+".00:01");
  Zeit2 = StringToTime((string)TimeYear(Time[0])+"."+(string)TimeMonth(Time[0])+"."+(string)TimeDay(Time[0])+".00:05");
  Zeit3 = TimeLocal();

  if(Zeit3>=Zeit1 && Zeit3<Zeit2 && Z13==0 && Button8==true){
      Func_Abfragen();
      Z13++;
  }

Musste das zeitliche Fenster auch nach hinten begrenzen. Hoffe das ist so richtig.

Leopold 03.08.17 13:04

Sollte passen.

---Leopold---

Lena 03.08.17 13:57

Zumindest im Test funktioniert es perfekt. Aber Real ist es ja immer noch etwas anderes. Es ist aber schonmal positiv, dass scheinbar keine Bugs im Code sind.


Alle Zeitangaben in WEZ +2. Es ist jetzt 13:49 Uhr.

Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum