|
Startseite | Registrieren | Hilfe | Benutzerliste | Kalender | Suchen | Heutige Beiträge | Alle Foren als gelesen markieren |
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
Return to Open
Hallo, hat jemand eine kleine Idee zu folgender Thematik?
Gesucht wird täglich die Anzahl der M5 Kerzen bis der Kurs nach Markteröffnung um 9:00 Uhr wieder das Open berührt. Einziges Kriterium ist, dass vor der Kerze, welche das Open berührt/crossed, mindestens eine M5 Kerze das Open nicht berührt, somit oberhalb oder unterhalb des Open ist. Beispiel : if(TimeHour(TimeCurrent()==9) 1.M5 Kerze berührt das open logischerweise : Low(0)<=Open(Eröffnungskurs)<=High(0) 2.M5 Kerze beispielsweise auch: Low(0)<=Open(Eröffnungskurs)<=High(0) 3.M5 Kerze beispielsweise auch: Low(0)<=Open(Eröffnungskurs)<=High(0) 4 Kerze keine Berührung-- Kriterium erfüllt: Low(0)>Open(Eröffnungskurs) && High(0)>Open(Eröffnungskurs) // Kerze oberhalb oder Low(0)<Open(Eröffnungskurs) && High(0)<Open(Eröffnungskurs) // Kerze unterhalb 5. Kerze entsprechend Kerze 4 -- oberhalb oder unterhalb wie 4 6. Kerze berührt EK Low(0)<=Open(Eröffnungskurs)<=High(0) Ergebnis 6 Hat jemand eine Codeidee dazu, komme leider nicht weiter! Vielen Dank |
|
|||
Kannst Du das mal grafisch darstellen?
Was soll das Ganze bringen? |
|
|||
Hallo,
vielen Dank für deine Antwort. Als Beispiel ein Screenshot. Ergebnis wäre demnach 7 und nicht 2. Ich brauche den Output dieser Funktion um damit in meinem EA weiterarbeiten zu können. Wäre cool, wenn du vielleicht eine Idee dazu hättest. LG |
|
|||
So, mal schnell aus der Hüfte geschossen, ohne Überprüfung.
Code:
//global die Variablen deklarieren if (TimeHour(TimeCurrent()>=9) { if (!stopcounting) { if (!timeflag) { OpenKurs = Open[0]; touch = true; count = 0; candlecount = 0; OldBar = Time[0]; timeflag = true; } if (OldBar != Time[0]) { candlecount++; if (!touch) count = 1; else count = 0; OldBar = Time[0]; } if (Low[0] <= OpenKurs && High[0] >= OpenKurs) touch = true; else touch = false; if (touch && count == 1) { //Aktion - candlecount stellt nun die Anzahl der Kerzen zwischen der //09:00 Kerze und dem ersten Berühren dieses OpenKurses dar, mit //der VorKerze der Unberührtheit stopcounting = true; } } } else { timeflag = false; stopcounting = false; }
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
Hey Traderdoc,
vielen Dank für deinen Input. Ich checke das mal und gebe dir gerne Feedback. LG |
|
|||
Hi Traderdoc,
also laufen tut es , liefert nur keine Ergebnisse. Woran kann das liegen? Der Code scheint logisch einwandfrei. LG extern bool stopcounting = false; extern bool timeflag = false; extern bool touch; extern int OpenKurs; extern int count; extern int candlecount ; extern int OldBar; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- //global die Variablen deklarieren if (TimeHour(TimeCurrent()>=9)) { if (!stopcounting) { if (!timeflag) { OpenKurs = Open[0]; touch = true; count = 0; candlecount = 0; OldBar = Time[0]; timeflag = true; } if (OldBar != Time[0]) { candlecount++; if (!touch) count = 1; else count = 0; OldBar = Time[0]; } if (Low[0] <= OpenKurs && High[0] >= OpenKurs) touch = true; else touch = false; if (touch && count == 1) { Comment("Anzahl = " , candlecount); //Aktion - candlecount stellt nun die Anzahl der Kerzen zwischen der //09:00 Kerze und dem ersten Berühren dieses OpenKurses dar, mit //der VorKerze der Unberührtheit stopcounting = true; } } } else { timeflag = false; stopcounting = false; } } //+------------------------------------------------------------------+ |
|
|||
Nun, so kann das auch nicht gehen, da die Variablen nicht als extern zu deklarieren sind. Außerdem muß unbeding die Variable OpenKurs double sein und nicht int, sonst wird der gesamte Kommateil ignoriert.
Also: bool stopcounting = false; bool timeflag = false; bool touch; double OpenKurs; int count; int candlecount ; int OldBar; traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
Desweiteren habe ich hier eine Zeile von Dir falsch übernommen:
if (TimeHour(TimeCurrent()>=9)) { Richtig: if (TimeHour(TimeCurrent())>=9) { traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
Lesezeichen |
Stichworte |
m5 kerzen, mql4, open count bars, programmierung, programmierung metatrader |
Themen-Optionen | Thema durchsuchen |
Ansicht | |
|
|