Ergänzungen in unserer MT4-zu-MT5-Konvertierungs-Checkliste
Vor ziemlich genau einem Jahr veröffentlichte ich eine praktische Checkliste zur Konvertierung von Expert Advisor Code von MQL4 nach MQL5, also für das Umschreiben von EAs von MT4 nach MT5 (siehe Checkliste zur Konvertierung von Expert Advisors von MT4 nach MT5). Eine Ergänzung zu dieser Checkliste, die ich selbst auch verwende, um MT4-EAs MT5-fähig zu machen, folgte im Juli 2022.
Heute sind weitere Ergänzungen an der Reihe:
Die Besonderheiten, die für den Bollinger Bands Indikator beachtet werden müssen.
Anpassung weiterer Chart-Objekt-Funktionen.
Hier sind alle Ergänzungen im Detail:
Die Mittellinie des Bollinger Band Indikators kann im MT5 direkt ausgelesen werden durch einen Expert Advisor. Die Buffer-Nummern in MT5 unterscheiden sich zudem von denen in MT4.
Schritt 3 C: Besonderheiten beim Bollinger Bänder Indikator
Auch bei den Bollinger Bändern gibt es ein paar entscheidende Unterschiede. Auch hier sind, wie auch schon beim Heiken Ashi Indikator gesehen (siehe Unterschiede des Heiken Ashi Indikator Abrufs in MQL5 vs. MQL4), die Buffer Ordnungsnummern im MT5 anders belegt als in MT4, und es werden abweichende Enumerierungs-Bezeichnungen für diese Buffer Ordnungsnummern verwendet. Außerdem wäre es in MT5 möglich, das mittlere Band aus einem Buffer aufzurufen.
Ein Beispiel, wie die Bollinger Bänder in MQL5 abrufbar wären, findest Du im folgenden Code-Block:
//---------------
double Bollinger_Upper;
double Bollinger_Mid;
double Bollinger_Lower;
void calcBollingers(int bar)
{
int handle_Boll = INVALID_HANDLE;
handle_Boll = iBands(_Symbol, Timeframe, Periode, Versatz, Abweichungen, AnwendenAuf);
double werte_Boll_Up[1];
double werte_Boll_Lo[1];
double werte_Boll_Md[1];
CopyBuffer(handle_Boll, UPPER_BAND, bar, 1, werte_Boll_Up);
CopyBuffer(handle_Boll, LOWER_BAND, bar, 1, werte_Boll_Lo);
CopyBuffer(handle_Boll, BASE_LINE, bar, 1, werte_Boll_Md);
Bollinger_Lower=werte_Boll_Lo[0];
Bollinger_Upper=werte_Boll_Up[0];
Bollinger_Mid=werte_Boll_Md[0];
}
//---------------
Schritt 8: Weitere Objekt-Funktionen anpassen
Während im MetaTrader 4 die ObjectsTotal()-Funktion ohne Parameter abgerufen werden kann, muss in MQL5 darauf verwiesen werden, aus welchem Chart die Anzahl der vorhanden Objekte abgerufen wird.
Wenn es sich um den EA-Chart handelt, können wir durch Parameter-Mitgabe “0” den aktuellen Chart beschreiben:
ObjectsTotal ( 0 )
Die ObjectsTotal()-Funktion wird zum Beispiel in oder für Prüf-Loops verwendet, in denen die vorhandenen Objekte abgefragt werden.
Ähnlich Anpassungen müssen u.a. in ObjectName() vorgenommen werden.
Wenn Du im MQL4-Code ObjectType() verwendest, musst Du dies in MQL5 ObjectGetInteger() aufrufen, um den Objekttyp abzufragen:
ObjectGetInteger ( 0, name, OBJPROP_TYPE )
Eventuell findest Du in den Fehlermeldungen des Kompilierberichts noch weitere ähnliche Situationen. Du löst sie logisch analog.
Hier nochmal der Link für die komplette Checkliste zur Konvertierung von EAs von MT4 nach MT5: https://www.mindfulfx.de/blog/checkliste-zur-konvertierung-von-eas-von-mt4-nach-mt5
Trade wie Profis
Cristof Ensslin von mindful FX