Stell einfach mal auf Englisch (oben rechts) und gib dann in das Suchfeld (rechts daneben die Lupe) "trade session" ein und wähle dann entweder CodeBase oder Artikel, dann findest haufenweise Beispiele für Dein Problem.
Du kannst auch gleich nach Morning Breakout suchen!
Hey, wollte diesen EA in MQL4 automatisieren: https://www.deutschefxbroker.de/daily-breakout-strategie-einfaches-konzept-grosse-wirkung/ (hoffe darf das hierfür posten)
Hieran hänge ich fest: Ich kriege den Höchstkurs & Tiefstkurs zwischen 0 & 8 Uhr nicht rein :( (wird immer falsch angezeigt, wenn die Order dann ausgeführt wird)
(Die Uhrzeitenparameter 0 & 8 sollen jedoch später im Tester verändert werden können (z.B. von 17Uhr bis 3Uhr)
Jemand ideen was noch funktionieren könnte... oder wie man mit hier iHighest arbeitet? (habe immernoch schwierigkeiten mit arrays)
Du kannst mit den Funktionen iHigh und iHighest arbeiten.
iHighest bringt dir die höchste Kerze als int. Wert
iHigh gibt dir dann den Kurs als double aus.
@Carl Schreiber @amando Danke für die Antworten, ich finde in der englischen codebase nichts für "morning breakout". Bei trade session, sind nur indikatoren deren Sinn ich nicht nachvollziehen kann:
(wie z.B. Warum zählt z.b. der loop bis 50?(siehe ganz unten)... aber egal nicht so wichtig)
whatever: iHigh & iHighest wusste ich schon, ich weiß nur nicht wie ich sieh anwenden kann (F1 hilft nicht), da ich arrays nicht richtig anwenden kann:
Ich würde es jetzt so schreiben ( Frage steht drinnen)
double DayHigh[] = iHigh; double DayLow[] = iLow; bool Longgesetzt=true; //Highs if (Hour() >0 && Hour()<8){ for (int i=0; Hour()<8; i++) DayHigh[i]=iHigh; } //Lows if (Hour() >0 && Hour()<8){ for (int i=0; Hour()<8; i++) DayLow[i]=iLow; } //Bars von 0 bis 8 Uhr zählen(werden gleich gebraucht) int BarAnzahl Bars(NULL,PERIOD_M30, datetime start_time, // start date and time // In welcher Einheit muss die Zeit hierhin ?? datetime stop_time // end date and time // In welcher Einheit muss die Zeit hierhin ?? ); int iHighest(NULL,PERIOD_M30,MODE_High,BarAnzahl int start // start //muss ich hier 0 hinsetzen? Schließlich habe ich das Array DayHigh[], ja dann umsonst deklariert ?? ); //wenn phase vorbei-> Pending Order setzen if (Hour() == 8 && Longgesetzt==false){ int LongPendingOrder = OrderSend(NULL,OP_BUYSTOP,Lots,DayHigh,Slippage,0,0,Kommentar,MagicNummer,0,clrSpringGreen); Longgesetzt= true; }
(das ist der indikator bei der suche nach "Tradesessions" wobei ich die 50 nicht ganz nachvollziehen kann
extern int NumberOfDays = 50; // Количество дней extern string AsiaBegin = "01:00"; // Открытие азиатской сессии extern string AsiaEnd = "10:00"; // Закрытие азиатской сессии extern color AsiaColor = Goldenrod; // Цвет азиатской сессии extern string EurBegin = "07:00"; // Открытие европейской сессии extern string EurEnd = "16:00"; // Закрытие европейской сессии extern color EurColor = Tan; // Цвет европейской сессии extern string USABegin = "14:00"; // Открытие американской сессии extern string USAEnd = "23:00"; // Закрытие американской сессии extern color USAColor = PaleGreen; // Цвет американской сессии void start() { datetime dt=CurTime(); for (int i=0; i<NumberOfDays; i++) { DrawObjects(dt, "AS"+i, AsiaBegin, AsiaEnd); DrawObjects(dt, "EU"+i, EurBegin, EurEnd); DrawObjects(dt, "US"+i, USABegin, USAEnd); dt=decDateTradeDay(dt); while (TimeDayOfWeek(dt)>5) dt=decDateTradeDay(dt); } }
@Carl Schreiber @amando Danke für die Antworten, ich finde in der englischen codebase nichts für "morning breakout". Bei trade session, sind nur indikatoren deren Sinn ich nicht nachvollziehen kann:
(wie z.B. Warum zählt z.b. der loop bis 50?(siehe ganz unten)... aber egal nicht so wichtig)
whatever: iHigh & iHighest wusste ich schon, ich weiß nur nicht wie ich sieh anwenden kann (F1 hilft nicht), da ich arrays nicht richtig anwenden kann:
Ich würde es jetzt so schreiben ( Frage steht drinnen)
(das ist der indikator bei der suche nach "Tradesessions" wobei ich die 50 nicht ganz nachvollziehen kann
er zählt bis 50, weil du in deiner Schleife NuberofDays verwendest, welche Du zuerst mit 50 definiert hast. So wie ich das lese, zeichnet der Indi 50 Tage zurück.
Das kann nicht Funktionieren, jetzt muss ich mal dem Carl seine Standartantwort nehmen, drück F1 und schau in der Doku wie iHigh und iHighest funktioniert
DayLow[i]=iLow;
In MQL5 kannst du es so lösen (bitte schau selber wie Kompatibel der Code zu MQL4 ist).
Je nachdem welchen Zeitbereich du benötigst musst du die Periode eventuell anpassen.
double GetHighestHigh(datetime fromDate, datetime toDate, string aSymbol = "") { if (aSymbol == "") aSymbol = Symbol(); double Arr[], retVal = -1; int aCnt = CopyHigh(aSymbol, PERIOD_M15, fromDate, toDate, Arr); if (aCnt > 0) { retVal = Arr[0]; for (int i = 0; i < aCnt; i++) { retVal = MathMax(retVal, Arr[i]); } } return(retVal); } double GetLowestLow(datetime fromDate, datetime toDate, string aSymbol = "") { if (aSymbol == "") aSymbol = Symbol(); double Arr[], retVal = -1; int aCnt = CopyLow(aSymbol, PERIOD_M15, fromDate, toDate, Arr); if (aCnt > 0) { retVal = Arr[0]; for (int i = 0; i < aCnt; i++) { retVal = MathMin(retVal, Arr[i]); } } return(retVal); }
Die Strategie hat mich interessiert, also hab ich das auf die Schnelle (haha) in MQL5 implementiert.
Fazit: Die Strategie ist profitabel, obwohl Monstergewinne liegengelassen werden.
100% PA (EURUSD/M15) im Tester mit realen Daten konnten mit der ersten Variante erreicht werden!
Es ist noch zu früh (zu wenig geprüft) um hier Code reinzustellen.
Ich habe die Zeiteingabe überarbeitet und in eine mqh gestellt, das vereinfacht die Sache. Werde ich wohl in die CodeBase stellen.
Es tritt da ein Problem auf, daß die Zeitperiode normalisiert werden muss. Start 22:00 und Ende 08:00 muss der Tag korrigiert werden.
Das Ergebnis für 2018:
Ist doch nicht schlecht! Ich bleib da dran, und informiere euch weiter.
Hier der Code für die Eingabe von Uhrzeiten und die Behandlung von Zeitspannen wie ich mir das vorstelle.
Die enums haben den Vorteil, daß man sie im Tester optimieren kann. Im Gegensatz zu Texteingaben wie '10:30'.
Excel war da sehr hilfreich um die Listen zu erstellen.
Das Beispiel ist lauffähig(im MT5), aber bei weitem nicht optimal, bei USDJPY versagt es.
TradeTimes.mqh sollte auch unter MQL4 funktionieren. Die Trade.mqh gibt es halt unter MQL4 nicht.
In MQL5 kannst du es so lösen (bitte schau selber wie Kompatibel der Code zu MQL4 ist).
Je nachdem welchen Zeitbereich du benötigst musst du die Periode eventuell anpassen.
Was macht copyhigh/copylow wenn ich fragen darf?(F1 ist mir wenig aufschlussreich)
Oh je, da fehlt noch viel. F1 drücken alleine ist halt zuwenig, man muss dann auch lesen und verstehen. Entschuldige bitte.
Return Value Returns the copied data count or -1 in case of an error.
Es ist wirklich ausreichend dokumentiert.
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Hey, wollte diesen EA in MQL4 automatisieren: https://www.deutschefxbroker.de/daily-breakout-strategie-einfaches-konzept-grosse-wirkung/ (hoffe darf das hierfür posten)
Hieran hänge ich fest: Ich kriege den Höchstkurs & Tiefstkurs zwischen 0 & 8 Uhr nicht rein :( (wird immer falsch angezeigt, wenn die Order dann ausgeführt wird)
(Die Uhrzeitenparameter 0 & 8 sollen jedoch später im Tester verändert werden können (z.B. von 17Uhr bis 3Uhr)
Jemand ideen was noch funktionieren könnte... oder wie man mit hier iHighest arbeitet? (habe immernoch schwierigkeiten mit arrays)