|
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 |
|
|||
Zitat:
Vielen vielen Dank dir für deine Antwort!! Wenn ich dich richtig verstanden habe, dann müsste der Code nun so aussehen.. Code:
string TimeStart = "08:00"; string TimeEnd = "22:00"; if (OldBar != iTime(Symbol(), Period_D1, 0) { int candlestart = iBarShift(Symbol(), Period_M5, StrToTime(TimeStart) - 86400; int candleend = iBarShift(Symbol(), Period_M5, StrToTime(TimeEnd) - 86400; int candlehighest = iHighest(Symbol(), Period_M5, MODE_HIGH, candlestart-candleend, candleend); int candlelowest = iHighest(Symbol(), Period_M5, MODE_LOW, candlestart-candleend, candleend); double high = iHigh(Symbol(), Period_M5, candlehighest); double low = iLow(Symbol(), Period_M5, candlelowest); OldBar = iTime(Symbol(), Period_D1, 0); } |
|
|||
In den Zeilen mit candlestart und candleend fehlt hinten noch ne Klammer.
Und bei bei candlelowest muss es heissen int candlelowest = iLowest(Symbol(), Period_M5, MODE_LOW, candlestart-candleend, candleend); Das sind so die typischen Schusslichkeitsfehler die mir auch laufend passieren |
|
|||
Zitat:
|
|
|||
Zitat:
Code:
string TimeStart = "08:00"; string TimeEnd = "22:00"; if (OldBar != iTime(Symbol(), Period_D1, 0) { int candlestart = iBarShift(Symbol(), Period_M5, StrToTime(TimeStart) - 86400); int candleend = iBarShift(Symbol(), Period_M5, StrToTime(TimeEnd) - 86400); int candlehighest = iHighest(Symbol(), Period_M5, MODE_HIGH, candlestart-candleend, candleend); int candlelowest = iLowest(Symbol(), Period_M5, MODE_LOW, candlestart-candleend, candleend); double high = iHigh(Symbol(), Period_M5, candlehighest); double low = iLow(Symbol(), Period_M5, candlelowest); OldBar = iTime(Symbol(), Period_D1, 0); }
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
Aber der Code ist klasse, hab den Code von traderdoc gerade gegen meinen Code zur Rangebestimmung ausgetauscht, mein EA läuft im Backtest viel flüssiger. So sieht der jetzt bei mir mit Sonntagscode aus:
Code:
if (Oldtime != iTime(NULL,PERIOD_D1,0)) { candlestart = iBarShift(Symbol(), PERIOD_M5, StrToTime(ErsteKerzeVT) - 86400); candleend = iBarShift(Symbol(), PERIOD_M5, StrToTime(LetzteKerzeVT) - 86400); if (DayOfWeek()==1) { candlestart = iBarShift(Symbol(), PERIOD_M5, StrToTime(ErsteKerzeVT) - 3*86400); candleend = iBarShift(Symbol(), PERIOD_M5, StrToTime(LetzteKerzeVT) - 3*86400); } int candlehighest = iHighest(Symbol(), PERIOD_M5, MODE_HIGH, candlestart-candleend, candleend); int candlelowest = iLowest(Symbol(), PERIOD_M5, MODE_LOW, candlestart-candleend, candleend); high = iHigh(Symbol(), PERIOD_M5, candlehighest); low = iLow(Symbol(), PERIOD_M5, candlelowest); if (VerfallstagTrading == false) { if(DayOfWeek()==5 && Day()>=15 && Day()<=21) TradeAllowed=false; } Oldtime=iTime(NULL,PERIOD_D1,0); } |
|
|||
Hallo Leute,
vielen vielen Dank für eure Antworten und eure große Hilfsbereitschaft! |
|
|||
Zitat:
Hallo ! Ich bin neu hier programmiere aber schon eine weile Bot's/EA's, da ich seit neustem auch mit Zeiten arbeiten soll wollte ich mich schonmal für dieses Beispiel bedanken da ich so etwas gesucht hatte ! Komme dabei auch gleichzeitig zu einem Problem, sobald ich das benutze anstatt Hour() == xx && Minute () == xx etc. macht mein EA garnichts mehr...^^ Mein Ursprüngliches Problem ist das ich bei den Formeln nur < > oder = zur Verfügung habe wenn ich ihm dann aber mit Hour() etc. sagen will von 16:25 bis 17:10 hab ich das Problem, das er ja nicht zurückspringen kann in der Logik oder übersehe ich dabei etwas ? Mein Beispiel dazu siehe hier : extern string Open_Orders_Vorher = "21:50:00"; datetime TC = TimeCurrent(); datetime F = StrToTime(TimeToStr(TimeCurrent(), TIME_DATE) + " " + Open_Orders_Vorher); void OnTick() { if (TC==F){ Comment(Bid, "HALLO"); NB = Bid; } Um zu Testen ob er genau zu dem Zeitpunkt den Comment ausgibt mit dem Bid Kurs des Produkt was ich angegeben habe. Daher meine Frage, was muss hier geändert werden das es das Comment ausgibt, er tut hier bei mir nichts nur wenn ich wie oben mit Hour() etc. arbeite ? Vielen Dank bereits im voraus ! |
|
|||
Bitte, bitte für das Danke, Da wirst Du bei mir noch viel mehr finden.
Auch hier gilt, Code mittels des Buttons # schreiben! Code:
extern string Open_Orders_Vorher = "21:50:00"; datetime TC = TimeCurrent(); datetime F = StrToTime(TimeToStr(TimeCurrent(), TIME_DATE) + " " + Open_Orders_Vorher); void OnTick() { if (TC >= F) { Comment(Bid, "HALLO"); NB = Bid; } } traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
Danke für die Antwort ! Ok, werde ich berücksichtigen. Das wusste ich nicht, das es so arbeitet, dennoch ist es genau das was ich brauche, dass ich z.B. genau 17:35:01 den Wert abfragen will bzw. ich in einem Intervall von 17:35:01 bis 20:00:00 arbeiten möchte. Der Comment soll solange erscheinen, wie das Intervall andauert um zu testen ob er 1. das Intervall einhält und 2. jeweils den richtigen Wert ausgibt.
Hmm nur dann wird das schwierig mit OnTick damit zu arbeiten, da ich ebenfalls möchte, das er ja jede Sekunde erneut Abfragt ob die Bedingung erfüllt ist und falls ja die Anweisung ausführt. Hast du oder jemand eine Idee oder ein kleines Code Beispiel wie ich das angehen könnte? |
|
|||
Gut, wenn er jede Sekunde eine Aktion ausführen soll, dann ist die Funktion
OnTimer() ideal dafür. Lies Dich dazu in die Dokumentation ein. traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
Lesezeichen |
Stichworte |
mql4, mt4, programmierung, programmierung metatrader, vortageshoch, vortagestief, zeitfenster |
Themen-Optionen | Thema durchsuchen |
Ansicht | |
|
|