Schau, wie man Roboter kostenlos herunterladen kann
Finden Sie uns auf Telegram!
und werden Sie Mitglied unserer Fangruppe
Interessantes Skript?
Veröffentliche einen Link auf das Skript, damit die anderen ihn auch nutzen können
Hat Ihnen das Skript gefallen?
Bewerten Sie es im Terminal MetaTrader 5
Expert Advisors

Long Short only EA basierend auf CExpert - Experte für den MetaTrader 5

Ansichten:
1286
Rating:
(30)
Veröffentlicht:
2016.05.18 15:05
Aktualisiert:
2016.11.22 07:34
\MQL5\Include\Expert\
Benötigen Sie einen Roboter oder Indikator, der auf diesem Code basiert? Bestellen Sie ihn im Freelance-Bereich Zum Freelance

Der vorliegende Expert Advisor erlaubt es nur Long/Short-Aufträge (oder beide) auf Basis der CExpertKlasse zu eröffnen.

Es werden zwei verschiedene Dateien zur Verfügung gestellt:

  • LongShortExpertModified.mqh: Diese Klasse erweitert dei StandardCExpert indem die CheckOpen() und CheckReverse() Methoden verändert wurden, sodass nur die gewünschten Aufträge geöffnet werden können;
  • LongShortExpertMACD.mq5: Dieser EA eine eine einfache Modifikation der eingebetteten ExpertMACD.mq5 Klasse, einschließlich des entwickelten, modifizierten Experts, um nur die passend zu den gewählten Eingabeparametern gewünschten Auftragstypen zu erlauben und wird zur Verfügung gestellt, um die Verwendung des Experten zu verdeutlichen.

LongShortExpertModified

Diese Klasse modifiziert das Verhalten der Standard CExpert Klasse, indem es nur Aufträge eines bestimmten Typs erlaubt - und zwar folgende laut enum:

enum ENUM_AVAILABLE_POSITIONS
  {
   LONG_POSITION,
   SHORT_POSITION,
   BOTH_POSITION
  };

Diese Enumeration wird als Eingabeparameter für den endgültigen EA verwendet, um festzulegen, welche Art von Aufträgen erlaubt wird und wird intern verwendet, um nur die gewünschten Aufträge zu eröffnen und Auftragsumkehrungen nur dann zu verarbeiten, wenn beide Typen erlaubt sind (BOTH_POSITION enum Wert).

Um das zu erreichen, wurden die CheckOpen() und CheckReverse() Methoden umgeschrieben:

class CLongShortExpertModified : public CExpert
  {
protected:
   ENUM_AVAILABLE_POSITIONS m_positions;
public:
                     CLongShortExpertModified(void);
                    ~CLongShortExpertModified(void);
   virtual bool      CheckOpen(void);
   virtual bool      CheckReverse(void);
   void SetAvailablePositions(ENUM_AVAILABLE_POSITIONS newValue){m_positions=newValue;};
  };

CheckOpen() wurde modifiziert, sodass nur Long oder Short Positionen entsprechend dem m_positions Wert geprüft werden:

bool CLongShortExpertModified :: CheckOpen()
  {
   switch(m_positions)
     {
      case LONG_POSITION:
         return CheckOpenLong();         //prüfen nur neue Longpositionen
      case SHORT_POSITION:
         return CheckOpenShort();        //prüfe nur neue Shortpositionen
      default:
         return CExpert::CheckOpen();    //Standardverhalten
     }
  }

CheckReverse() wurde modifiziert um nur dann eine Positionsumkehr zu prüfen, wenn beide Positionstypen erlaubt sind:

bool CLongShortExpertModified::CheckReverse()
  {
   switch(m_positions)
     {
      case LONG_POSITION:
      case SHORT_POSITION:
         return false;                    // keine Umkehr erlaubt
      default:
         return CExpert::CheckReverse(); //Standardverhalten
     }
  }

LongShortExpertMACD

Diese Klasse stellt ein Beispiel für die Verwendung der vorherigen Klasse in einem spezifischen EA dar, basierend auf dem Standard ExpertMACD EA, der in der MQL5 Distribution enthalten ist.

Zuerst muss die konkrete Expert-Klasse eingebunden und der korrespondierende Eingabeparameter hinzugefügt werden. Außerdem wird der externe Expert mit der Subklasse statt dem Standard CExpert verknüpft:

#include <Expert\LongShortExpertModified.mqh>
//[...]
input ENUM_AVAILABLE_POSITIONS Inp_Allowed_Positions=BOTH_POSITION; //short / long / beide Positionen erlaubt
//[...]
CLongShortExpertModified ExtExpert;  //spezifisch entworfene CExpert Subklasse

Nach der Initialisierung des Expert muss der Parameter dem Eingabewert entsprechend gesetzt werden:

if(!ExtExpert.Init(Symbol(),Period(),Expert_EveryTick,Expert_MagicNumber))
     {
      //--- fehlgeschlagen
      printf(__FUNCTION__+": Fehler beim Initialisieren des Expert");
      ExtExpert.Deinit();
      return(-1);
     }
   
   // Specifischer Parameter, der steuert, welche Positionen erlaubt sind
   ExtExpert.SetAvailablePositions(Inp_Allowed_Positions);  

Es sind keine weiteren Änderungen notwendig. Die folgende Abbildung zeigt die Konfigurationsparameter für den Expert:

Long/Short only general Expert Advisor

Übersetzt aus dem Englischen von MetaQuotes Ltd.
Originalpublikation: https://www.mql5.com/en/code/1896

Commentator Commentator

Der Commentator Indikator analysiert eine Gruppe von technischen Indikatoren und zeigt Informationen über den aktuellen Zustand des Marktes und Handelsempfehlungen an.

Mercado Aberto Mercado Aberto

Einfacher Indikator der anzeigt, wann der Markt geöffnet ist.

ColorDM_361 ColorDM_361

Digitales Momentum in Form von kolorierten Buchstaben.

i-PassLevCCI_v.1.3 i-PassLevCCI_v.1.3

Eine Datenstruktur mit einem Signalindikator gezeichnet auf Basis des Commodity Chanel Index Oszillator.