Expert Advisors: Fractals auf Basis der Schlusskurse

 

Fractals auf Basis der Schlusskurse:

Ein Expert Advisor basierend auf dem Indikator "Fraktale zu Schlusskursen".


Autor: Vladimir Karputov

 

****

 

Das ist interessant! Die Idee ist gut, aber das Fraktal ist nicht hilfreich! Wenn Sie den Fraktal-Indikator durch einen Zickzack-Indikator ersetzen, kann das Ergebnis viel besser sein! Ich lasse meinen Rat hier!

 

Die Idee ist die gleiche, aber mit einem Zickzack-Indikator und offene Bestellung nur nach einer Lücke wie diese in der Abbildung, werden wir eine interessante EA haben!

Dateien:
zigzag.png  19 kb
 
kwlin_089:

Die Idee ist die gleiche, aber mit einem Zigzag-Indikator und eine offene Bestellung nur nach einer Lücke wie diese im Bild, werden wir eine interessante EA haben!


Auf ZigZag war dieser Code: Last ZZ50

Strategie basierend auf dem ZigZag-Indikator und schwebenden Aufträgen.

Der Code wurde im Zweig Strategie auf der Grundlage des Indikators "ZigZag" - "Last ZZ50" geboren.

Autor der Idee - Vitaly Muzichenko, MQL5 Code-Implementierung - Vladimir Karputov.

Das allgemeine Prinzip der Strategie "Last ZZ50":

Strategie basierend auf dem "ZigZag"-Indikator - "Last ZZ50"

Im ZigZag-Indikator betrachten wir immer die letzten beiden Strahlen: AB und BC. Der AB-Strahl ist ein Strahl, der noch nicht festgelegt ist und sich ändern kann (Punkt A kann seine Position ändern).

Pending Orders werden in der Mitte der Strahlen AB und BC platziert, wobei die Berechnung so erfolgt, dass:

  • Die Auslösung einer schwebenden Order auf dem Strahl AB ist ein Fall der Fortsetzung des durch den Strahl BC dargestellten Trends;
  • die Auslösung des schwebenden Auftrags auf dem Strahl BC ein Fall von Trendumkehr ist, die durch den Strahl BC dargestellt wird.

Da es sich bei dem Strahl AB um einen Strahl handelt, der noch nicht festgelegt ist und sich ändern kann (der Punkt A kann seine Position ändern), wird die schwebende Order ständig so geändert, dass sich ihr Preis immer in der Mitte des Strahls AB befindet.

Das Trailing offener Positionen funktioniert nach der Regel: Warten Sie, bis die Position mindestens (Trailing Stop + Trailing Step) Pips im Gewinn liegt (ohne Kommission und Swap), und schalten Sie dann das Trailing für diese Position ein.

 
Vladimir Karputov :

Es gab den folgenden Code für ZigZag: Last ZZ50

Strategie basierend auf dem ZigZag-Indikator und schwebenden Aufträgen.

Der Code wurde im Zweig Strategie basierend auf dem "ZigZag" Indikator - "Last ZZ50" geboren.

Der Autor der Idee ist Vitaly Muzichenko, MQL5-Code-Implementierung - Vladimir Karputov.

Das allgemeine Prinzip der Strategie "Last ZZ50":

Im ZigZag-Indikator betrachten wir immer die letzten beiden Strahlen: AB und BC. Der AB-Strahl ist ein Strahl, der noch nicht festgelegt ist und sich ändern kann (Punkt A kann seine Position ändern).

Pending Orders werden in der Mitte des Strahls AB und BC platziert, wobei die Berechnung so erfolgt, dass:

  • Die Auslösung einer schwebenden Order auf dem Strahl AB ist ein Fall der Fortsetzung des durch den Strahl BC angezeigten Trends;
  • die Auslösung des schwebenden Auftrags auf dem Strahl BC der Fall einer Trendumkehr ist, die durch den Strahl BC angezeigt wird.

Da es sich bei dem Strahl AB um einen Strahl handelt, der noch nicht festgelegt ist und sich ändern kann (der Punkt A kann seine Position ändern), wird die schwebende Order ständig so geändert, dass sich ihr Preis immer in der Mitte des Strahls AB befindet.

Das Trailing von offenen Positionen funktioniert nach der Regel: Warten Sie, bis die Position mindestens (Trailing Stop + Trailing Step) Pips im Gewinn ist, und schalten Sie dann das Trailing für diese Position ein.

Das Problem bei dieser "Last ZZ50"-Strategie ist, dass sie viele schwebende Aufträge in der Mitte des Zickzackkurses des Indikators eröffnet, was zu einer Menge Verwirrung und damit zu vielen Verlusten und Drawdowns führt. So wie Sie diesen "Fractals at Close Prices EA" Indikator aufgebaut haben, ist es interessanter, den Zickzack-Indikator anzupassen.

Wenn es eine Möglichkeit gibt, einen EA zu erstellen, wäre das sehr interessant! Ich denke, es würde einen hervorragenden EA ergeben!
 
kwlin_089:
Das Problem bei dieser "Last ZZ50"-Strategie ist, dass sie viele schwebende Aufträge in der Mitte des Zickzackkurses des Indikators eröffnet, ***

Es ist nie zu spät, die Anzahl der aufeinanderfolgenden offenen Positionen zu begrenzen.

 

Gibt es eine Funktion, die verhindert, dass der Auftrag im entgegengesetzten Signal geschlossen wird?

 

Vielleicht true/false zu aktivieren und deaktivieren Sie das entgegengesetzte Zeichen oder sogar sagen Sie mir, was ich aus dem Code zu extrahieren, so dass ich es ohne Schließung Aufträge in das entgegengesetzte Zeichen testen können! Vielen Dank für Ihre Zusammenarbeit mit diesem EA!

 
kwlin_089:

Gibt es eine Funktion, die verhindert, dass der Auftrag im entgegengesetzten Signal geschlossen wird?


Sie müssen diese Zeilen einfach auskommentieren:

   if(InpStarHour<InpEndHour) // Handel an einem Tag
     {
      if(time_current<time_start || time_current>=time_end)
        {
         CloseAllPositions();
         return;
        }
     }
   else if(InpStarHour>InpEndHour) // Handel mit Übergang am nächsten Tag
     {
      if(struct_time_current.hour<InpStarHour && struct_time_current.hour>=InpEndHour)
        {
         CloseAllPositions();
         return;
        }
     }
   else if(InpStarHour==InpEndHour)
     {
      // Handel ganztägig!!!
     }
 
Vladimir Karputov :

Sie müssen nur diese Zeilen auskommentieren:

Ich habe das getan, aber es hat nicht funktioniert, denn dieser Teil des geposteten Codes hat offenbar mit dem Öffnen und Schließen des Charts zu tun! Aber was ich brauche, ist, dass die Position nicht geschlossen wird, wenn das entgegengesetzte Fraktalsignal erscheint, d.h. ich möchte die Position nur bei "Stop Loss" oder "Take Profit" schließen.

Ich habe versucht, diesen Teil des Codes auszukommentieren, was sich als richtig erwiesen hat, aber es funktioniert nicht

 //--- 
   if (last_lower!= EMPTY_VALUE && previous_lower!= EMPTY_VALUE )
       if (previous_lower<last_lower)
        {
          ClosePositions( POSITION_TYPE_SELL ); 
         if (CalculatePositions( POSITION_TYPE_BUY )== 0 )
           {
             double sl=(InpTakeProfit== 0 )? 0.0 :m_symbol. Ask ()-ExtStopLoss;
             double tp=(InpStopLoss== 0 )? 0.0 :m_symbol. Ask ()+ExtTakeProfit;
            OpenBuy(sl,tp);
           }
        }
   if (last_upper!= EMPTY_VALUE && previous_upper!= EMPTY_VALUE )
       if (previous_upper>last_upper)
        {
          ClosePositions( POSITION_TYPE_BUY ); 
         if (CalculatePositions( POSITION_TYPE_SELL )== 0 )
           {
             double sl=(InpTakeProfit== 0 )? 0.0 :m_symbol. Bid ()+ExtStopLoss;
             double tp=(InpStopLoss== 0 )? 0.0 :m_symbol. Bid ()-ExtTakeProfit;
            OpenSell(sl,tp);
           }
        }
 //--- 
   Trailing();
  }