Danke.
Sehr klar.
Sehr klar.
Verzeihung, Autor. EA ohne Reverse und mit wählbarem Lot.
EA mit wählbarem Lot -> Änderungen in LongShortExpertMACD.mq5:
//+------------------------------------------------------------------+ //|LongShortExpertMACD.mq5 | //| Copyright 2009-2013, MetaQuotes Software Corp. - 2013, jlwarrior | //| https://login.mql5.com/en/users/jlwarrior | //+------------------------------------------------------------------+ #property copyright "2009-2013, MetaQuotes Software Corp - 2013, jlwarrior" #property link "https://login.mql5.com/en/users/jlwarrior" #property version "1.00" //+------------------------------------------------------------------+ //| Inklusive| //+------------------------------------------------------------------+ #include <Expert\LongShortExpertModified.mqh> #include <Expert\Signal\SignalMACD.mqh> #include <Expert\Trailing\TrailingNone.mqh> #include <Expert\Money\MoneyFixedLot.mqh> //+------------------------------------------------------------------+ //| Eingaben| //+------------------------------------------------------------------+ //--- Eingaben für Experten input string Inp_Expert_Title ="Long/Short ExpertMACD"; int Expert_MagicNumber =10981; bool Expert_EveryTick =false; input ENUM_AVAILABLE_POSITIONS Inp_Allowed_Positions=BOTH_POSITION; //kurz / lang / beide Positionen erlaubt //--- Standard-MACDExpert-Eingaben input int Inp_Signal_MACD_PeriodFast =12; // Schneller MACD-Zeitraum input int Inp_Signal_MACD_PeriodSlow =24; // Langsamer MACD-Zeitraum input int Inp_Signal_MACD_PeriodSignal=9; // Signal MACD Zeitraum input double Inp_Money_Lot =0.5; // Wert der Partie input int Inp_Signal_MACD_TakeProfit =50; // Gewinnmitnahme-Wert input int Inp_Signal_MACD_StopLoss =20; // Stop-Loss-Wert //+------------------------------------------------------------------+ //| Globales Expertenobjekt| //+------------------------------------------------------------------+ CLongShortExpertModified ExtExpert; //spezifisch gestaltete CExpert Unterklasse //+------------------------------------------------------------------+ //| Initialisierungsfunktion des Experten| //+------------------------------------------------------------------+ int OnInit(void) { //--- Initialisierung des Experten if(!ExtExpert.Init(Symbol(),Period(),Expert_EveryTick,Expert_MagicNumber)) { //--- fehlgeschlagen printf(__FUNCTION__+": error initializing expert"); ExtExpert.Deinit(); return(-1); } // Spezifischer Parameter, der bestimmt, welche Positionen zulässig sind ExtExpert.SetAvailablePositions(Inp_Allowed_Positions); //--- Erstellung eines Signalobjekts CSignalMACD *signal=new CSignalMACD; if(signal==NULL) { //--- fehlgeschlagen printf(__FUNCTION__+": error creating signal"); ExtExpert.Deinit(); return(-2); } //--- Signal zu Experte hinzufügen (wird automatisch gelöscht)) if(!ExtExpert.InitSignal(signal)) { //--- fehlgeschlagen printf(__FUNCTION__+": error initializing signal"); ExtExpert.Deinit(); return(-3); } //--- Signalparameter einstellen signal.PeriodFast(Inp_Signal_MACD_PeriodFast); signal.PeriodSlow(Inp_Signal_MACD_PeriodSlow); signal.PeriodSignal(Inp_Signal_MACD_PeriodSignal); signal.TakeLevel(Inp_Signal_MACD_TakeProfit); signal.StopLevel(Inp_Signal_MACD_StopLoss); //--- Signalparameter prüfen if(!signal.ValidationSettings()) { //--- fehlgeschlagen printf(__FUNCTION__+": error signal parameters"); ExtExpert.Deinit(); return(-4); } //--- Erstellung eines Nachlaufobjekts CTrailingNone *trailing=new CTrailingNone; if(trailing==NULL) { //--- fehlgeschlagen printf(__FUNCTION__+": error creating trailing"); ExtExpert.Deinit(); return(-5); } //--- Hinzufügen eines Nachsatzes zum Experten (wird automatisch gelöscht)) if(!ExtExpert.InitTrailing(trailing)) { //--- fehlgeschlagen printf(__FUNCTION__+": error initializing trailing"); ExtExpert.Deinit(); return(-6); } //--- Schleppende Parameter einstellen //--- Nachfolgende Parameter prüfen if(!trailing.ValidationSettings()) { //--- fehlgeschlagen printf(__FUNCTION__+": error trailing parameters"); ExtExpert.Deinit(); return(-7); } //--- Erstellung eines Geldobjekts CMoneyFixedLot *money=new CMoneyFixedLot; if(money==NULL) { //--- fehlgeschlagen printf(__FUNCTION__+": error creating money"); ExtExpert.Deinit(); return(-8); } //--- Geld zum Experten hinzufügen (wird automatisch gelöscht)) if(!ExtExpert.InitMoney(money)) { //--- fehlgeschlagen printf(__FUNCTION__+": error initializing money"); ExtExpert.Deinit(); return(-9); } //--- Geldparameter einstellen money.Lots(Inp_Money_Lot); //--- Geldparameter prüfen if(!money.ValidationSettings()) { //--- fehlgeschlagen printf(__FUNCTION__+": error money parameters"); ExtExpert.Deinit(); return(-10); } //--- Abstimmung aller erforderlichen Indikatoren if(!ExtExpert.InitIndicators()) { //--- fehlgeschlagen printf(__FUNCTION__+": error initializing indicators"); ExtExpert.Deinit(); return(-11); } //--- erfolgreich return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Deinitialisierungsfunktion des Experten| //+------------------------------------------------------------------+ void OnDeinit(const int reason) { ExtExpert.Deinit(); } //+------------------------------------------------------------------+ //| Funktions-Ereignishandler "tick"| //+------------------------------------------------------------------+ void OnTick(void) { ExtExpert.OnTick(); } //+------------------------------------------------------------------+ //| Funktions-Ereignis-Handler "Handel"| //+------------------------------------------------------------------+ void OnTrade(void) { ExtExpert.OnTrade(); } //+------------------------------------------------------------------+ //| Funktions-Ereignishandler "Timer"| //+------------------------------------------------------------------+ void OnTimer(void) { ExtExpert.OnTimer(); } //+------------------------------------------------------------------+
EA ohne Reverse -> Änderungen in LongShortExpertModified.mqh:
//+------------------------------------------------------------------+ //|LongShortExpertModified.mqh | //|Copyright 2013, jlwarrior | //| https://login.mql5.com/en/users/jlwarrior | //+------------------------------------------------------------------+ #include <Expert\Expert.mqh> //+------------------------------------------------------------------+ //| Aufzählung zur Steuerung, ob long / short oder beide Positionen sind //| darf geöffnet werden| //+------------------------------------------------------------------+ //--- enum ENUM_AVAILABLE_POSITIONS { LONG_POSITION, SHORT_POSITION, BOTH_POSITION }; //+------------------------------------------------------------------+ //| Klasse CLongShortExpertModified.| //| Zweck: Erlaubt nur die Eröffnung von Long- / Short- / Both-Positionen | //| Abgeleitet von der Klasse CExpert (modifiziert nur Open / Reverse Methoden)|. //+------------------------------------------------------------------+ class CLongShortExpertModified : public CExpert { protected: ENUM_AVAILABLE_POSITIONS m_positions; public: CLongShortExpertModified(void); ~CLongShortExpertModified(void); virtual bool CheckOpen(void); void SetAvailablePositions(ENUM_AVAILABLE_POSITIONS newValue){m_positions=newValue;}; }; //+------------------------------------------------------------------+ //| Konstruktor| //+------------------------------------------------------------------+ CLongShortExpertModified ::CLongShortExpertModified(void) : m_positions(BOTH_POSITION) { } //+------------------------------------------------------------------+ //| Destruktor| //+------------------------------------------------------------------+ CLongShortExpertModified ::~CLongShortExpertModified(void) { } //+------------------------------------------------------------------+ //| Offen auf erlaubte Positionen prüfen| //+------------------------------------------------------------------+ bool CLongShortExpertModified :: CheckOpen() { switch(m_positions) { case LONG_POSITION: return CheckOpenLong(); //nur neue Long-Positionen prüfen case SHORT_POSITION: return CheckOpenShort(); //nur neue Short-Positionen prüfen default: return CExpert::CheckOpen(); //Standardverhalten } } //+------------------------------------------------------------------+
Wo befindet sich das Feld für die Eingabe des Aktiencodes für Long x Short?
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Long Short only EA basierend auf CExpert:
Diese CExpert Unterklasse erlaubt es nur Long/Short-Aufträge zu eröffnen, dies wird an einem MACD-Beispiel gezeigt.
Autor: Jose