Diskussion zum Artikel "MQL5 Wizard: Neue Version" - Seite 4

 

1. Können Sie mir sagen, wie man ein Signal invertiert?

Beispiel: Um ein GBP/USD-Kaufsignal zu bestätigen, benötigen wir ein MACD EUR/GBP-Verkaufssignal.

Oder ist es einfacher, im Bibliothekscode zu graben und "plus" in "minus" zu ändern und es als Bibliothek unter einem anderen Namen zu speichern.

P.S. Es wäre schön, wenn man bei der Erstellung eines Expert Advisors wählen könnte, welches Signal genommen werden soll: Vorwärts- oder Rückwärtssignal

2. Wie kann ich die Gewichte von Mustern, die in die Bibliothek eingenäht sind, herausnehmen, um diese Gewichte zu optimieren?

 
52_rus:

1. Können Sie mir sagen, wie ich das Signal invertieren kann?

Beispiel: Um ein GBP/USD-Kaufsignal zu bestätigen, benötigen wir ein MACD EUR/GBP-Verkaufssignal.

Oder ist es einfacher, in den Bibliothekscode zu gehen und "plus" in "minus" zu ändern und es als Bibliothek unter einem anderen Namen zu speichern.

P.S. Es wäre schön, wenn man bei der Erstellung eines Expert Advisors wählen könnte, welches Signal genommen werden soll: Vorwärts- oder Rückwärtssignal

2. Wie kann man die Gewichte der Muster, die in die Bibliothek eingenäht sind, herausnehmen, um diese Gewichte zu optimieren?

1. Mechanismen zum Invertieren (und Ignorieren) von Signalen sind in der Basisklasse CExpertSignal eingebaut, aber leider noch nicht im Wizard verfügbar.

2 Das Gleiche gilt für die Gewichtung von Mustern.

Bitte fügen Sie den Quelltext des Expert Advisors bei, den Sie nach dem "Wizard" erhalten haben, und fassen Sie sich kurz. Ich werde versuchen zu erklären, wie man es "von Hand" macht.

PS. Der "Wizard" wird weiterentwickelt und diese Einstellungen werden später verfügbar sein.

 

1. Wie kann ich meine Bibliothek (z.B.: den aktuellen MACD ändern und speichern, ohne die Hauptbibliothek zu löschen) zur Hauptsignalliste hinzufügen?

2. Frage zur Arbeit mit Bibliotheken:

Betrachten wir einen Expert Advisor, der auf dem MAKD basiert und mit Hilfe des Assistenten erstellt wurde: Wir haben ihn erstellt und kompiliert, ihn getestet und einige Ergebnisse erhalten

Die MAKD-Signale aus der Bibliothek lauteten wie folgt:

//--- Festlegung der Standard-"Gewichte" für die Marktmodelle
   m_pattern_0    =10;       // Modell 0 "der Oszillator hat die gewünschte Richtung"
   m_pattern_1    =30;       // Modell 1 "Umkehrung des Oszillators in die gewünschte Richtung"
   m_pattern_2    =80;       // Modell 2 "Kreuzung von Haupt- und Signalleitung"
   m_pattern_3    =50;       // Modell 3 "Kreuzung der Hauptlinie auf der Nullebene"
   m_pattern_4    =60;       // Modell 4 "Divergenz von Oszillator und Preis"
   m_pattern_5    =100;      // Modell 5 "Doppelte Divergenz von Oszillator und Preis" 

Далее, если я занулю не нужные мне паттерны (например 0,1,2,4,5) в библиотеке:

//--- Festlegung der Standard-"Gewichte" für die Marktmodelle
   m_pattern_0    =0;       // Modell 0 "der Oszillator hat die gewünschte Richtung"
   m_pattern_1    =0;       // Modell 1 "Umkehrung des Oszillators in die gewünschte Richtung"
   m_pattern_2    =80;       // Modell 2 "Kreuzung von Haupt- und Signalleitung"
   m_pattern_3    =0;       // Modell 3 "Kreuzung der Hauptlinie auf der Nullebene"
   m_pattern_4    =0;       // Modell 4 "Divergenz von Oszillator und Preis"
   m_pattern_5    =0;      // Modell 5 "Doppelte Divergenz von Oszillator und Preis" 

Ich werde nur die Bibliothek kompilieren (ich werde den EA-Code selbst nicht kompilieren). Ich teste es und erhalte genau das gleiche Ergebnis wie beim ersten Test.

Wenn ich den EA-Code ebenfalls kompiliere, erhalte ich ein anderes Ergebnis, in diesem Beispiel nur für Muster 2.

Ich habe eine Frage: Warum muss ich den EA-Code neu kompilieren, nachdem ich einige Parameter in der Bibliothek geändert habe? (Er hat sich nicht geändert).

 
52_rus:

1. Wie kann ich meine Bibliothek (z. B. den aktuellen MACD ändern und speichern, ohne den Haupt-MACD zu löschen) zur Liste der Mastersignale hinzufügen?


Sie meinen die Include-Datei, die den Code des Signalmoduls enthält? Ändern Sie das aktuelle Modul nach Bedarf und speichern Sie es im gleichen Verzeichnis, aber unter einem anderen Namen. Weitere Details dazu finden Sie in diesem Artikel:

Erstellen eines Handelsroboters mit dem neuen MQL5-Assistenten

Der EA-Code wird mit dem MQL5-Assistenten des MetaEditor erstellt.

Die Basisklassen der Handelsstrategien befinden sich im Ordner terminal_data_folder\MQL5\Include\Expert\. Fertige Algorithmen von Handelssignalklassen, Klassen zur Aufrechterhaltung offener Positionen und Kapital- und Risikomanagementklassen befinden sich in den Unterverzeichnissen Signal, Trailing und Money. Der MQL5-Assistent analysiert die Dateien in diesen Verzeichnissen und verwendet sie zur Generierung des EA-Codes.

Das bedeutet, dass sich die Signalmodule im Verzeichnis terminal_data_folder\MQL5\Include\Expert\Signal befinden (und befinden müssen, um vom MQL5-Assistenten gesehen zu werden).
 
alles hat funktioniert, danke, ich habe nur den Code korrigiert, aber den Klassennamen nicht geändert....
 

Aus irgendeinem Grund enthalten neue Versionen des Terminals keine benutzerdefinierten Versionen der Signalgeneratormodule mehr. Es gibt 30 Module im Ordner /MQL5/Include/Expert/Signal/, aber der Assistent sieht nur 20 Module, die laut Hilfe standardmäßig geliefert werden.

Geht es nur mir so oder scannt der MT5-Editor den Ordner mit den Signalmodulen nicht mehr nach neuen Modulen? Selbst die früheren Module für Signale, die auf von Metaquotes entwickelten Candlestick-Mustern basieren, sind nicht angeschlossen.

 
Livingston:

Aus irgendeinem Grund enthalten neue Versionen des Terminals keine benutzerdefinierten Versionen der Signalgeneratormodule mehr. Es gibt 30 Module im Ordner /MQL5/Include/Expert/Signal/, aber der Assistent sieht nur 20 Module, die laut Hilfe standardmäßig geliefert werden.

Geht es nur mir so oder scannt der MT5-Editor den Ordner mit den Signalmodulen nicht mehr nach neuen Modulen? Selbst die alten, von Metaquotes entwickelten Signalmodule, die auf Candlestick-Mustern basieren, sind nicht angeschlossen.

Ein neues Signalmodul muss eine andere Modulbezeichnung haben und sein Typ muss SignalAdvanced sein


 
Rosh:

Das neue Signalmodul sollte eine andere Modulbeschreibung haben und sein Typ sollte SignalAdvanced sein


Ich danke Ihnen vielmals.
 
Rosh:

Ein neuer Signalbaustein muss eine andere Bausteinbeschreibung haben und sein Typ muss SignalAdvanced sein


Wenn Sie Signal durch SignalAdvanced in zuvor geschriebenen Signalmodulen ersetzen, funktionieren diese immer noch nicht. Jetzt werden die Funktionen CheckOpenShort/CheckOpenLong nicht verwendet und durch ShortCondition/LongCondition? ersetzt.

In diesen Funktionen gibt es keine Parameter, so dass unklar ist, wie Takeouts und Stops gesetzt werden können.

int CSignalMA::LongCondition()
  {
   int result=0;
   int idx   =StartIndex();
//--- Analyse der Positionsbeziehung zwischen dem Schlusskurs und dem Indikator beim ersten analysierten Balken
   if(DiffCloseMA(idx)<0.0)
     {
      //--- der Schlusskurs liegt unterhalb des Indikators
      if(IS_PATTERN_USAGE(1) && DiffOpenMA(idx)>0.0 && DiffMA(idx)>0.0)
        {
         //--- der Eröffnungskurs liegt über dem Indikator (d.h. es gab einen Schnittpunkt), aber der Indikator ist nach oben gerichtet
         result=m_pattern_1;
         //--- sind der Ansicht, dass es sich um ein ungeformtes "Piercing" handelt und schlagen vor, zum aktuellen Preis in den Markt einzusteigen
         m_base_price=0.0;
        }
     }
   else
     {
      //--- der Schlusskurs liegt über dem Indikator (der Indikator hat keine Einwände gegen den Kauf)
      if(IS_PATTERN_USAGE(0))
         result=m_pattern_0;
      //--- wenn das Modell 2 verwendet wird
      if(IS_PATTERN_USAGE(2) && DiffMA(idx)>0.0)
        {
         //--- der Indikator ist nach oben gerichtet
         if(DiffOpenMA(idx)<0.0)
           {
            //--- der Eröffnungskurs liegt unter dem Indikator (d.h. es gab einen Schnittpunkt)
            result=m_pattern_2;
            //--- Vorschlag zum Einstieg in den Markt beim "Rollback"
            m_base_price=m_symbol.NormalizePrice(MA(idx));
           }
         else
           {
            //--- der Eröffnungskurs liegt über dem Indikator
            if(DiffLowMA(idx)<0.0)
              {
               //--- der Tiefstpreis liegt unter dem Indikator
               result=m_pattern_2;
               //--- sind der Ansicht, dass es sich um ein gebildetes "Piercing" handelt und schlagen vor, zum aktuellen Preis in den Markt einzusteigen
               m_base_price=0.0;
              }
           }
        }
     }
//--- Rückgabe des Ergebnisses
   return(result);
  }

IS_PATTERN_USAGE() wird jetzt überall im Signalmodul verwendet, es ist unklar, warum.

Generell warten wir auf Informationen, wie man das Signalmodul selbst erstellen kann.

und wird der alte Assistentenmodus Type=Signal verfügbar sein? oder werden alle Module jetzt auf eine neue Weise geschrieben?

 

Jedem Marktmodell wird eine Signifikanz zugewiesen, die von 1 bis 100 gemessen wird. Je höher der Wert, desto stärker ist das Modell.

MA mit einer Gewichtung von 0,4 und Stochastik mit einer Gewichtung von 0,8 - dies wird in den externen Variablen festgelegt und woher MA kommt - seine Signifikanz ist 100. Die stochastische Signifikanz dieses Modells ist gleich 80. Wo wird die Signifikanz der einzelnen Modelle festgelegt oder wie wird sie bestimmt?