Einzelnen Beitrag anzeigen
  #1 (permalink)  
Alt 03.06.20
LQK LQK ist offline
Mitglied
 
Registriert seit: Nov 2019
Beiträge: 76
LQK befindet sich auf einem aufstrebenden Ast
Standard Jeden Tag um 9 Uhr einen Trade öffnen - programmiertechnisch wie umsetzen?

Hallo,

ich arbeite zu Übungszwecken derzeit an der Umsetzung eins ganz einfachen EA. Der EA soll erstmal nicht viel mehr machen als jeden morgen um 9 Uhr einen Trade zu öffnen.

So weit, so einfach.

Die Uhrzeit frage ich so ab:

Code:
Uhrzeit = TimeHour(TimeCurrent())
Demnach bekomme ich jedesmal wenn zwischen 9:00 Uhr und 09:59 Uhr die o.g. Codezeile abläuft, als Wert für "Uhrzeit" den Wert 9.

Jetzt ist es aber so:

Die o.g. Funktion läuft jedes mal ab, wenn es einen neuen Tick gibt (vermute ich jedenfalls). Der Zeitpunkt, wann der nächste Tick auftritt, ist dabei jedoch offen. Das heißt, der erste Tick ab 9:00:00 kann genau um 9:00:00 auftreten, jedoch auch um 9:00:01, um 9:00:18, um 9:13:00 , um 9:27:01 usw. usf.

Allerdings soll jeweils nur für den ersten Tick ab 9:00:00 ein Trade eröffnet werden, nicht stumpf für jeden Trade, der zwischen 9:00:00 und 09:59:59 auftritt.

---

Meine Frage ist also:

Wie bewerkstellige ich es am besten, dass jeweils nur der erste Tick ab 9:00:00 Uhr zur Eröffnung eines Trades führt, jeder weitere Tick jedoch nicht?

Ich habe bereits eine Idee zur Umsetzung. Würde mich aber mal interessieren, wie andere über meine Idee denken. Oder vielleicht ist meine Idee ja unsinnig, und es gibt noch bessere Möglichkeiten oder andere Konventionen.

Also, meine Idee ist diese:

Ich verwende eine binäre Flag-Variable. um 8:59:59 ist der Wert dieser Flag-Variablen zunächst Null. Sobald ein Trade eröffnet wird, wird der Wert der Trade Variablen auf 1 gesetzt. Ein neuer Trade wird jedoch nur dann eröffnet, wenn der Wert der Flag-Variablen 0 beträgt. Beträgt der Wert der Flag-Variablen 1, wird kein weiterer Trade eröffnet. So wir verhindert, dass zwischen 9:00:00 und 09:59:59 mehr als ein Trade eröffnet wird.

Die Flag-Variable muss dann nach Ablauf der "heißen" Stunde (die heiße Stunde liegt zwischen 09:00:00 und 09:59:59 Uhr) wieder auf 0 gesetzt werden, dass am nächsten Tag wieder ein neuer Trade eröffnet werden kann. Z.B. könnte ich mir vorstellen, dass ab 10:00 geprüft wird, ob die Flag-Variable auf Null steht, und wenn das nicht der Fall ist, diese auf 0 gesetzt wird.

In Pseudocode ausgedrückt also etwa so:

Code:
if (Uhrzeit >= 10:00 Uhr) 
     if (Flagvariable = 1)
     then (Flagvariable = 0),
else (Mache nichts)
Der Nachteil der o.g. Methode (ab 10 Uhr bei jedem Tick prüfen ob die Flag-Variable den Wert 0 hat) ist halt, dass bei jedem Tick Rechenzeit für eine in den meisten Fällen obsolete If-Anweisung "verbraten" wird.

Am besten wäre es, die Flagvariable wird einfach um 10 Uhr wieder auf Null gesetzt. Allerdings ginge das nur, ich den folgenden Pseudocode um 10:00 Uhr fix durchführen könnte (also jeden Tag haargenau um jeweils 10:00 Uhr), unabhängig davon, ob gerade ein Tick auftritt oder nicht:

Code:
if (Uhrzeit = 10 Uhr) Flagvariable = 0.
Gibt es dafür eine Möglichkeit, die Prüfung der Uhrzeit im EA so umzusetzen, dass die Prüfung der Uhrzeit unabhängig davon erfolgt, ob gerade ein Tick auftritt oder nicht?


Wenn das ginge, bräuchte ich allerdings vielleicht gar keine Flag-Variable mehr, da ich dann ja genausogut um 9 Uhr fix einen Trade öffnen kann, unabhängig vom auftreten eines Ticks, fällt mir gerade ein.

Vielleicht gibt es aber auch nochmal ganz andere oder sogar bessere Möglichkeiten, die ich derzeit noch gar nicht kenne?


Ich freue mich über jeden konstruktiven Hinweis!

Grüße,
LQK