Erste Kerze des Tages
Hallo,
wie finde ich genau die erste Kerze des Tages ? Warum? Ich will genau beim ersten Tick eines Tages alte Objekte löschen , dazu brauche ich aber die erste Kerze eines Tages. Da der EA aber auf unterschiedliche Zeiteinheiten, unterschiedlichen Märkten und Situatuonen angewendet werden soll, ist dies eben unterschiedlich. Ich brauche also immer die erste Kerze des Tages im eingestellten Markt und in der eingestellten Zeiteinheit! |
Hallo,
mach das einfach immer dann wenn eine neue Tageskerze beginnt. Ich mach das so. ---Leopold--- |
Ja und wie ermittel ich die?:confused:
|
Das geht NICHT
Code:
TimeCurrent() == iTime(NULL,1440,0) Code:
TimeCurrent() == iTime(NULL,PERIOD_D1,0) |
Irgendwo gibt es ein Thema zum Ausführen bei neuer Kerze. Schau mal ob du es findest. Sonst schreib ich dir das am Abend zusammen.
---Leopold--- |
Hallo,
habe leider nur das gefunden: http://www.expert-advisor.com/forum/...ropentime.html Aber das ist es wohl nicht :(:confused: |
Doch,
nur statt Time[0] nimmst du halt "iTime(NULL,PERIOD_D1,0)". ---Leopold--- |
Ja, das habe ich ja probiert - ging aber nicht
Code:
TimeCurrent() == iTime(NULL,PERIOD_D1,0) |
Das steht dort aber nicht.
|
Ich steh auf dem Schlauch...
Code:
if (TimeCurrent() == "iTime(NULL,PERIOD_D1,0)") |
Du bist ganz schön begriffsstützig.
Code:
datetime TimeCandle = 0; |
Das könnte so sein:
Code:
if(TimeDayOfWeek(Time[1])!=TimeDayOfWeek(Time[0]))FirstBar=true; |
Zitat:
---Leopold--- |
Ja, richtig, unter Tage wird nichts.
Die Frage war doch: "wie finde ich genau die erste Kerze des Tages ? Ich will genau beim ersten Tick eines Tages alte Objekte löschen, dazu brauche ich aber die erste Kerze eines Tages." Das Problem ist, dass Funktion iTime() auf D1,W1,MN gibt immer 00:00:00. Mit Volume[] kann es auch eine Nuance geben, manchmal kann der erste Tick sofort "2" geben. Das kann man auch einfach lösen, wenn vorherige und letzte Werte vergleichen (v_Volume < l_Volume, sonst ist erster Tick. |
Zitat:
if(TimeDayOfWeek(Time[1])!=TimeDayOfWeek(Time[0]))FirstBar=true Hier wird der Code bei jedem Tick die ganze Periode ausgeführt, nicht nur beim ersten. if(Volume[0]==1)FirstTick=true Hier wird der Code am Anfang jeder Periode ausgeführt und nicht nur beim ersten Tick des Tages. Bei meinen Beispiel könnte man den Code so erweitern, dass alles was z. B. nur einmal am Tag ausgeführt werde soll dort rein kommt. Und wenn es immer am Anfang des Tages ausgeführt werden soll, dann meistens auch beim Laden des EA's. ---Leopold--- |
Zitat:
Ich habe einen Bereich im EA, dort sind alle Einmaldurchläufe hinterlegt. Du kannst es auch als Funktion hinterlegen, hier mal einfach: static int Tag; if ( Day() != Tag ) // immer wenn ein neuer Tag mit dem ersten Tick beginnt { zu tun... Tag = Day(); // Übergabe des aktuellen Tages } |
Zitat:
Code:
bool FirstBar=false, FirstTick=false; |
Alle Zeitangaben in WEZ +2. Es ist jetzt 21:54 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