|
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
Was soll denn genau in der Funktion TradingTime() berechnet werden? Und das schreibst Du halt in geschweifte Klammern.
bool TradingTime() { ... } Und an der Stelle, wo die Funktion die Berechnung ausführen soll steht, steht dann: TradingTime(); Ggf. in einer if-Abfrage oder alleinig und mit zugewiesenem Rückgabewert über bool result = TradingTime(); traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
||||||
Das, was er in seinem ersten Post im Code stehen hat.
Zitat:
Zitat:
Mit ein bischen Motivation solltest du es einigermaßen hinbekommen. ================================================== === Gehen wir das ganze mal kurz von vorne durch: Zitat:
2. Hier ist ja die gemeinte TradingTime() zu sehen. Zitat:
"init()" ist wegen Kompatibilität aber nach wie vor noch im "MQL-Wortschatz", weshalb eine eigene Funktion nicht mit diesem Namen erstellt werden sollte. Jetzt weiss ich nicht, ob du das wusstest piptrade, oder ob du "init()" wirklich als eigene Funktion deklariert hast. Der Code von Leopold ist ja das, was du möchtest. Der erste If-Block in der OnTick()-Funktion testet die Zeit und reagiert darauf, der zweite If-Block verarbeitet deinen Code, wenn TradingTime() TRUE liefert. Jetz kommen wir mal zu deinem zweiten Code: Zitat:
Zitat:
Das mit OnInit() ist soweit verstanden worden, denke ich. Bezüglich OnTick()
Dein Code müsste jetzt in etwa so aussehen: Code:
bool TradingTime() { if((Time_1_Begin < Time_1_End && (TimeCurrent() < Time_1_Begin || TimeCurrent() >= Time_1_End)) && (Time_2_Begin < Time_2_End && (TimeCurrent() < Time_2_Begin || TimeCurrent() >= Time_2_End)) && (Time_3_Begin < Time_3_End && (TimeCurrent() < Time_3_Begin || TimeCurrent() >= Time_3_End))) return true; return false; } datetime TagesStartZeit = 0; datetime Time_1_Begin, Time_1_End; datetime Time_2_Begin, Time_2_End; datetime Time_3_Begin, Time_3_End; void DeineFunktion() { Time_1_Begin = StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+TradeZone_1_Begin); Time_1_End = StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+TradeZone_1_End); Time_2_Begin = StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+TradeZone_2_Begin); Time_2_End = StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+TradeZone_2_End); Time_3_Begin = StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+TradeZone_3_Begin); Time_3_End = StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+TradeZone_3_End); } int OnInit() { } void OnDeinit(const int reason) { } void OnTick() { if(TagesStartZeit != iTime(NULL, PERIOD_D1, 0)) { DeineFunktion(); // Nur nach Bedingung initialisieren. TagesStartZeit = iTime(NULL, PERIOD_D1, 0); } if(TradingTime()) { // Code der ausgeführt werden soll, wenn TradingTime() TRUE liefert... } } * Veraltet: init(), start() ect... * Updated: OnInit(), OnTick() ect... PS: Die Funktion "OnInit()" kannst du sowohl mit void, als auch mit int nutzen... Geändert von next user (28.07.17 um 17:38 Uhr) |
|
|||
Fleißig, fleißig, @next_user.
traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
Hi Doc,
hasste beim Überfliegen Fehler gefunden |
|
|||
Ich habe gerade kein Flugzeug!
traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
Hey, wenn du dir die blauen Blöcke wegdenkst, sind es nur paar Zeilen.
Aber naja, so wie das Wetter grad wieder aussieht, wäre fliegen auch nicht so perfekt entspannt... |
|
|||
Next User, - Deine Ausführungen sind der absolute Wahnsinn ! - Vorab schon einmal ein "Dickes Danke !
Und, - ich kann es kaum glauben, - auch traderdoc hat sich eingefunden und die ersten guten Hinweise geliefert ! - Auch hier ein "Dankeschön"! Da Ihr Euch in den letzten Stunden förmlich die "Klinke" gegenseitig gereicht und Euch selbst übertroffen habt, ist es nun an mir, die ganze "Schoße" nachzuvollziehen. Eine Aufgabe, der ich schon jetzt mit optimismusgeladener Spannung entgegensehe. Werde dieses Märthyrium am WE in Angriff nehmen und hoffe, dass Ihr mich ab Mo./Di. dann auch wieder zu Worte kommen lasst. Also, erst einmal "tausend Dank" ! Ich melde mich so schnell, wie möglich und hoffe, dann nur Gutes berichten zu können. Fakt ist aber jetzt schon Eines: Jede einzelne Info bringt mich bestimmt ein gutes Stück voran. Thanks and LG. piptrade |
|
|||
Zitat:
traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
Hallo traderdoc, trotz Urlaubs bist Du aktiv ! - Respekt !
... und vielen Dank für Deine Hinweise ! Dank Deiner ganz persönlichen Hilfestellungen konnte ich vor einem halben Jahr das gegebene kleine TimerModul fertigstellen - nochmals "Danke" dafür ! ; - somit habe ich die kleine Hoffnung, dass Du mir abschließend auch hilfst, die 00:00 Uhr-Grenze automatisch zu überschreiten. Das wäre dann die Perfektion ! - Soweit mein erstes Anliegen. Zum Zweiten: Wenn ich auch jetzt noch an "den letzten Zügen" bei der Fertigstellung des EA arbeite, er ist fast fertiggestellt !!! ; - zumindest in seiner Funktionalität ! Die Optimierungen jedoch kann nur ein Profi bewerkstelligen ! - Könntest Du einen solchen Part, - den der Optimierung, - ggf. übernehmen ? Soweit ein Ruf an traderdoc und an die Allgemeinheit, - eben `mal so zwischendurch ! ......... Und bis gleich ( oder bis demnächst ) Euer piptrade |
|
|||
piptrade hat eine recht simple Lösung gefunden! Eine Lösung, die ggf. nicht im Sinne der Programmiersprache ist; - dennoch eine Lösung, die tatsächlich funktioniert und mir viel, viel Arbeit erspart!
Wer den Forenbeitrag begleitet hat, wird sich erinnern, dass in meinem ersten post der Ursprungs-Code mitgeliefert wurde. In diesem Code sind die Handelszeiten, in denen nicht gehandelt werden soll, aneinandergereiht und geben den Wert "false" zurück. Hier wurden die Start-Zeiten immer kleiner den End-Zeiten gesetzt. Wenn jetzt die letzte Zeile "Time_3_Begin < Time_3_End ... kopiert, mit "&&" zusätzlich angereiht und lediglich in seiner Ausrichtung (hier also Begin > End verdreht) wird, ist das erwünschte Ziel schon erreicht. Keine zusätzlichen Deklarationen, keinen zusätzlichen Initialisierungen, kein zusätzliches "Dies und Das"; - einfach simpel eben ! Dennoch bin ich gegenüber allen Hinweisen sehr, sehr dankbar, da Sie mir auf dem "Weg der Erkenntnis" einiges Neue beschert und dazu beigetragen haben, eigene Fehler zu erkennen. So habe ich das gesamten Forenthema kopiert und meinem keinen "Wissensspeicher" hinzugefügt. In diesem Sinne nochmals ein ganz herzliches DANKE, an alle, die mir zur Seite gestanden haben. LG. Euere piptrade |
Lesezeichen |
Stichworte |
handelszeiten, mql4, programmierung, programmierung metatrader, programmierung mql4, timer, tradezone, tradezonetimer, trade_zone_timer |
|
|