und werden Sie Mitglied unserer Fangruppe
Veröffentliche einen Link auf das Skript, damit die anderen ihn auch nutzen können
Bewerten Sie es im Terminal MetaTrader 5

MQL5 Wizard- Handelssignale basierend auf der Kreuzung der Hauptlinie und der Signallinie des MACD Indikators - Experte für den MetaTrader 5
- Ansichten:
- 2206
- Rating:
- Veröffentlicht:
- 2016.09.02 10:54
- Aktualisiert:
- 2016.11.22 07:34
-
Benötigen Sie einen Roboter oder Indikator, der auf diesem Code basiert? Bestellen Sie ihn im Freelance-Bereich Zum Freelance
Der Artikel Der MQL5-Assistent: Erstellen von Expert-Systemen ohne Programmierung beschreibt Schritte der automatischen Erstellung des Codes eines Expert Advisors mithilfe von MQL5 Wizard.
Hier erzählen wir über eine Trendstrategie, die auf den Linien des MACD Indikators beruht. Diese Strategie ist im Standardpaket des Terminals enthalten und heißt "Signals based on crossover of main and signal MACD lines".
Der MACD Indikator basiert auf dem schnellen EMA (FastEMA) und dem langsamen EMA (SlowEMA). Auf der Basis dieser Linien wird die Hauptlinie MACD als die Differenz zwischen dem schnellen EMA und dem langsamen EMA gezeichnet. Die Signallinie des MACD Indikators wird als die mit PeriodSignal geglättete MACD-Hauptlinie berechnet.
Handelssignale:
- Kauf: wenn die Hauptlinie des MACD Indikators die Signallinie von MACD von unten nach oben kreuzt.
- Verkauf: wenn die Hauptlinie des MACD Indikators die Signallinie von MACD von oben nach unten kreuzt.
Diese Handelsstrategie wird in der Klasse CSignalMACD der Standardbibliothek implementiert (MQL5\Include\Expert\Signal\SignalMACD.mqh)
Abbildung 1. Handelssignale der Strategie, die auf der Kreuzung der Hauptlinie und der Signallinie des MACD Indikators beruht
Handelssignale
Das Modul der Handelssignale nach dieser Strategie wird in der Klasse CSignalMACD implementiert, die Klasse enthält mehrere geschützte Methoden (protected), die für den Zugang zu Linienwerten des MACD Indikators und zur Berechnung ihrer gegenseitigen Lage genutzt werden:
double MainMACD(int ind) // gibt den Wert der Hauptlinie von MACD auf dem Balken zurück double SignalMACD(int ind) // gibt den Wert der Signallinie von MACD auf dem Balken zurück double StateMACD(int ind) // gibt die Differenz zwischen der Hauptlinie und der Signallinie auf dem Balken zurück int ExtStateMACD(int ind); // gibt zurück, wie viele Male das Zeichen der Differenz zwischen der Haupt- und Signallinie von MACD geändert wurde
1. Eröffnen einer Long-Position
Bedingungen für das Eröffnen einer Long-Position:
- ExtStateMACD(1)==1; die Hauptlinie durchkreuzt die Signallinie des MACD Indikators von unten nach oben.
//+------------------------------------------------------------------+ //| Überprüft die Bedingungen für das Eröffnen einer Long-Position | //+------------------------------------------------------------------+ bool CSignalMACD::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration) { price=0.0; sl =m_symbol.Ask()-m_stop_loss*m_adjusted_point; tp =m_symbol.Ask()+m_take_profit*m_adjusted_point; //--- return(ExtStateMACD(1)==1); }
2. Schließen einer Long-Position
Bedingungen für das Schließen einer Long-Position:
- ExtStateMACD(1)==-1; die Hauptlinie durchkreuzt die Signallinie des MACD Indikators von oben nach unten.
//+------------------------------------------------------------------+ //| Überprüft die Bedingungen für das Schließen einer Long-Position | //+------------------------------------------------------------------+ bool CSignalMACD::CheckCloseLong(double& price) { price=0.0; //--- return(ExtStateMACD(1)==-1); }
3. Eröffnen einer Short-Position
Die Bedingungen für das Eröffnen einer Short-Position und das Schließen einer Long-Position sind gleich.
//+------------------------------------------------------------------+ //| Überprüft die Bedingungen für das Eröffnen einer Short-Position | //+------------------------------------------------------------------+ bool CSignalMACD::CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration) { price=0.0; sl =m_symbol.Bid()+m_stop_loss*m_adjusted_point; tp =m_symbol.Bid()-m_take_profit*m_adjusted_point; //--- return(ExtStateMACD(1)==-1); }
4. Schließen einer Short-Position
Die Bedingungen für das Schließen einer Short-Position und Eröffnen einer Long-Position sind gleich.
//+------------------------------------------------------------------+ //| Überprüft die Bedingungen für das Schließen einer Short-Position | //+------------------------------------------------------------------+ bool CSignalMACD::CheckCloseShort(double& price) { price=0.0; //--- return(ExtStateMACD(1)==1); }
Erstellung eines Expert Advisors mithilfe von MQL5 Wizard
Um einen Handelsroboter nach dieser Strategie mithilfe von MQL5 Wizard zu erstelln, wählen Sie "Signals based on crossover of main and signal MACD lines" im zweiten Schritt aus:
Abbildung 2. Auswahl des Moduls von Handelssignalen auf der Basis der Kreuzung von Linien des MACD Indikators in MQL5 Wizard
Geben Sie den gewünschten Typ von Trailing Stop und Kapitalmanagement in den nächsten Schritten an. Der Code des Expert Advisors wird automatisch generiert, er muss kompiliert werden und dann können Sie mit dem Testen anfangen.
Testergebnisse
Die Ergebnisse des EAs bei einem Test unter Verwendung von historischen Daten (EURUSD H1, Zeitraum: 1.1.2010-05.01.2011, PeriodFast=12, PeriodSlow=24, PeriodSignal=9, StopLoss=20, TakeProfit=80).
Dieser Expert Advisor benutzt das Modul für den Handel mit einer festgelegten Lotgröße von 0.1 Lot (Trading Fixed Lot), ein Trailing Stop wurde nicht verwendet (Trailing not used).
Abbildung 3. Testergebnisse des EAs, der auf der Kreuzung von Linien des MACD Indikators
beruht
Die Datei SignalMACD.mqh, die die Klasse von Handelssignalen CSignalMACD enthält(gehört zur Standardbibliothek von MetaTrader 5) wird im Ordner MQL5\Include\Expert\Signal gespeichert.
Übersetzt aus dem Russischen von MetaQuotes Ltd.
Originalpublikation: https://www.mql5.com/ru/code/262

Handelssignale basierend auf der Kreuzung von zwei exponentiellen gleitenden Durchschnitten "Signals based on crossover of two EMA".

Handelssignale basierend auf der Kreuzung des Preises und des EMAs mit der Bestätigung durch den ADX Indikator "Signals based on price crossover with MA confirmed by ADX".

Handelssignale auf der Basis der Kreuzung zweier EMA mit einem Filter nach zeitlichen Parametern "Signals based on crossover of two EMA with intraday time filter".

Handelssignale basierend auf der Kreuzung der Linien des Alligator Indikators.