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
- Ansichten:
- 854
- Rating:
- Veröffentlicht:
- 2018.05.02 10:20
-
Benötigen Sie einen Roboter oder Indikator, der auf diesem Code basiert? Bestellen Sie ihn im Freelance-Bereich Zum Freelance
Diese Bibliothek ist eine Weiterentwicklung von SignalMAAboveBelow 2.
Was ist neu in Version 3
- Der Parameter CurrentBarSize erlaubt das Bestimmen der aktuellen Bar (berechnet als Close-Open);
- PreviousBarSize ist die Größe der vorherigen Bar (berechnet als Close-Open).
Wenn der Preis der aktuellen Bar ÜBER dem Indikator liegt, müssen beide Bars bullish sein. Wenn der Preis der aktuellen Bar UNTER dem Indikator liegt, müssen beide Bars bearish sein. Damit sind beide Parameter (CurrentBarSize und PreviousBarSize) Schutzfilter bei der Positionseröffnung.
Im Modul der Signale müssen wir die Zeitreihen in den Konstruktor einbinden:
//+------------------------------------------------------------------+ //| Konstruktor | //+------------------------------------------------------------------+ CSignalMA::CSignalMA(void) : m_reverse(false), m_ma_period(12), m_ma_shift(0), m_ma_method(MODE_SMA), m_ma_applied(PRICE_CLOSE), m_pattern_0(80), m_size_current_bar(40), m_size_previous_bar(20) { //--- initialization of protected data m_used_series=USE_SERIES_OPEN+USE_SERIES_HIGH+USE_SERIES_LOW+USE_SERIES_CLOSE; }
Nach dem Einbinden von Zeitreihen können wir auf die Objekte m_close und m_open der Klassen CiClose bzw. CiOpen zugreifen (die Objekte werden auf einer höheren Ebene deklariert - auf der Elternebene ExpertBase.mqh).
Wir arbeiten mit diiese4n Objekten in CSignalMA::LongCondition
//+------------------------------------------------------------------+ //| "Voting" that price will grow. | //+------------------------------------------------------------------+ int CSignalMA::LongCondition(void) { if(m_type_trade==1) // m_type_trade: enum type of trade: 0 -> BUY, 1 -> SELL, 2 -> BUY and SELL return(0); int result=0; int idx =StartIndex(); //--- if(m_close.GetData(idx+1)-m_open.GetData(idx+1)<m_previous_bar_size*PriceLevelUnit()) return(0); if(m_close.GetData(idx)-m_open.GetData(idx)<m_current_bar_size*PriceLevelUnit()) return(0); //--- analyze positional relationship of the close price and the indicator at the first analyzed bar
и в CSignalMA::ShortCondition
//+------------------------------------------------------------------+ //| "Voting" that price will fall. | //+------------------------------------------------------------------+ int CSignalMA::ShortCondition(void) { //--- m_type_trade: enum type of trade: 0 -> BUY, 1 -> SELL, 2 -> BUY and SELL if(m_type_trade==0) return(0); int result=0; int idx=StartIndex(); //--- if(m_open.GetData(idx+1)-m_close.GetData(idx+1)<m_previous_bar_size*PriceLevelUnit()) return(0); if(m_open.GetData(idx)-m_close.GetData(idx)<m_current_bar_size*PriceLevelUnit()) return(0); //--- analyze positional relationship of the close price and the indicator at the first analyzed bar
Beispiel für Öffnungspositionen bei Reverse == false:
Abb. 1. SignalMAAboveBelow 3 - Eröffnen einer Kaufposition
Abb. 2. SignalMAAboveBelow 3 - Eröffnen einer Verkaufsposition
Parameter des Signal-Moduls
- Reverse - Umkehren der Signale;
- PeriodMA - die Mittelungsperiode des Indikators Gleitender Durchschnitt;
- Shift - die horizontale Verschiebung des Indikators Gleitender Durchschnitt;
- Methode - Art der Glättung des Indikators Gleitender Durchschnitt;
- Applied - Berechnungspreis für den gleitenden Durchschnitt;
- TypeOfTrade - Arten der Handelssignale: 0 → KAUF, 1 → VERKAUF, 2 → KAUF und VERKAUF;
- CurrentBarSize - Größe der aktuellen Bar (berechnet als Close-Open);
- PreviousBarSize - Größe der vorherigen Bar (berechnet als Close-Open);
Der Test-Expert Advisor TestSignalMAAboveBelow3.mq5 verwendet die Standardparameter ohne Optimierung.
Falls der Expert Advisor TestSignalMAAboveBelow3.mq5 mit dem MQL5-Assistenten erstellt wird
//+------------------------------------------------------------------+ //| Inputs | //+------------------------------------------------------------------+ //--- inputs for expert input string Expert_Title ="TestSignalMAAboveBelow3"; // Document name ulong Expert_MagicNumber =20884; // bool Expert_EveryTick =false; // //--- inputs for main signal
aktivieren wir die Operation ON EVERY TICK (ändern Sie die Voreinstellung "false" auf "true") und können dann interessantere Ergebnisse erzielen: der EA wird die Bedingung schneller verarbeiten, wenn die aktuelle Bar (Bar mit dem Index #0) gleich oder etwas größer als der Parameter CurrentBarSize wird.
Übersetzt aus dem Russischen von MetaQuotes Ltd.
Originalpublikation: https://www.mql5.com/ru/code/20164

VSI - Volatility Switch Indikator.

Der Oszillator IDayIIndex (Intraday Intensity Index).

Gleichzeitiges Öffnen zweier Gegenpositionen Trailing Stop.

Der Expert Advisor öffnet Positionen, wenn der Preis die Linien überschreitet.