Morseschrift - Seite 4

 

Ich habe den Parameter"Länge des Musters " zur Angabe der Länge für ein numerisches Muster weggelassen (dieser Parameter wird nur für den Optimierungsmodus verwendet).

#property version   "1.003"
#property description "Bull candle - \"1\", bear candle - \"0\""
//---
#include <Trade\Trade.mqh>
CTrade         m_trade;                      // trading object
//+------------------------------------------------------------------+
//| Enum pattern type: numerical or string                           |
//+------------------------------------------------------------------+
enum ENUM_PATTERN_TYPE
  {
   PATTERN_TYPE_NUMERICAL=0,  // numerical
   PATTERN_TYPE_STRING=1,     // string 
  };
//---
input ENUM_PATTERN_TYPE    InpPatternType          = PATTERN_TYPE_STRING;  // pattern type
input uchar                InpLenNumerical         = 3;                    // length of the pattern (use only if pattern "numerical")
input string               InpsMorseCode           = "101";                // string Morse code (max 5 characters)
input ENUM_POSITION_TYPE   InpPosType              = POSITION_TYPE_BUY;    // posinion type
input double               InpLot                  = 0.1;                  // lot
sinput ulong               m_magic                 = 88430400;             // magic number
input ulong                m_slippage              = 30;                   // slippage
//---
string sExtMorseCode="";
int max_string_len=5;         // limitation of the length of the pattern "string"
int i_morse_code=0;           // int Morse code (use only if pattern type=numerical)
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   if(InpPatternType==PATTERN_TYPE_STRING)
     {
      //--- check start mode
      if(MQLInfoInteger(MQL_OPTIMIZATION))
         return(INIT_PARAMETERS_INCORRECT);
      //--- info print
      Print("The type of the pattern \"string\" is set - the parameters \"pattern length\" and \"int Morse code\" are ignored");

      sExtMorseCode=InpsMorseCode;

Und eine kurze Verteidigung: Wenn Sie im Optimierungsmodus einen String-Mustertyp auswählen, gibt der Expert Advisor "INIT_PARAMETERS_INCORRECT" zurück.

 
Vitalii Ananev:


Man muss an alles sofort denken, damit man es später nicht noch einmal machen muss.

....

Wenn wir noch einmal auf das "Evening Star"-Muster zurückkommen, kann es als bullish-small candle-bearish und als bullish-bearish takeover betrachtet werden. Das bedeutet, dass wir ein zusammengesetztes Muster haben, das aus einer bullischen Kerze und einer bearischen Absorption besteht. Und wenn wir alle drei Candlesticks des Musters zusammenzählen, erhalten wir wieder einen Pin Bar.



Lassen Sie mich meine 5 Kopeken einwerfen.

In diesem Fall geht das ursprüngliche Konzept, das als Basis geplant war, verloren: Der Benutzer erstellt eine Sequenz von bullischen und bearischen Candlesticks, und das Programm sucht nach diesen Sequenzen und handelt, warum also fassen wir die Candlesticks in einem Muster zusammen?

 
Pyxis:


Erlauben Sie mir, meine fünf Cent hinzuzufügen.

Das war nicht die Aufgabe, und es ist unmöglich, alles auf einmal zu berücksichtigen. In diesem Fall verlieren wir das ursprüngliche Konzept, das als Hauptkonzept gedacht war: Der Benutzer erstellt eine Abfolge von Hausse- und Baissekerzen, und das Programm sucht nach diesen Abfolgen und handelt, warum also die Kerzen in einem einzigen Muster zusammenfassen?


Warum fassen wir sie zusammen? Nun, zum Beispiel, um das Modell zu vereinfachen. Sie wurde sogar als Beispiel angeführt.

Warum ist das nicht möglich? Alle häufig vorkommenden Kombinationen von japanischen Leuchtern können auf die eine oder andere Weise kodiert werden. Eine andere Sache ist, dass das 1. Bit (ich habe oben darüber geschrieben) nicht ausreicht, man muss mindestens 2 Bits verwenden, und sie sind auch nicht genug, wenn man das Mustermodell nicht zusammenfasst (vereinfacht).

 

Bisherige Morsecode-Version "1.003": Sie können manuell eine Stringbeschreibung des Musters angeben und sogar einzelne Durchläufe im Tester durchführen.

Dateien:
Morse_code.mq5  15 kb
 
Vladimir Karputov:


Das Programm wird von einem Benutzer verwendet, nicht von einem Programmierer (das wurde oben gesagt und nicht nur einmal) - und für ihn sind "101" und "5" zwei verschiedene Zahlen, und für ihn enthält "5" keine Informationen über die relative Position der Kerzen, aber "101" sagt eindeutig "bullish, bearish, bullish".

Ich hab's. Nun, dann - eine Kette von Symbolen und ein Parser. Ich denke, das ist die flexibelste Option.
 
George Merts:

Ich verstehe das nicht ganz - sind das Programmierer oder Trottel?

Warum etwas in etwas übersetzen?

Wenn wir einen Code 101 brauchen, ist das der normale Wert von 5. Das war's. Wo liegt das Problem? Geistig von dezimal nach binär übersetzen?

Ich habe ähnliche Experimente gemacht, nur hatte meine Kerze vier weitere Größen - von klein bis groß. Das ergibt acht verschiedene Kerzengrößen. Und folglich drei Bits. Im Muster schreiben wir die Zahl (ulong) - das Raster ist größer als im Zwanzig-Takt-Muster.

Das Problem ist meiner Meinung nach weit hergeholt.

Erst aussortieren und dann kritisieren. Hier ist eine Aufgabe, über die Sie nachdenken sollten:

Codieren Sie die Zahl int für die folgenden Kombinationen von Leuchtern:

  • 1011;
  • 01011;
  • 001011

Hinweis: Es handelt sich um unterschiedliche Kombinationen.

George Merts:
Ich hab's. Nun, dann - Zeichenkette und Parser. Das scheint mir die flexibelste Option zu sein.
Noch einmal: optimizer_not_optimize_string_parameters. Wie wollen Sie ohne den Optimierer nach einer Kombination von profitablen Mustern suchen?
 
Vasiliy Sokolov:
Noch einmal: der optimizer_will_not_optimize_string_parameters. Wie wollen Sie ohne den Optimierer nach einer Kombination von profitablen Mustern suchen?

Wenn ein Optimierer benötigt wird, sollte der Benutzer meiner Meinung nach "versiert" genug sein, um die Zahl in Binärcode zu übersetzen (zumindest mit einem normalen Windows-Rechner).

Sie, liebe Freunde, haben eine widersprüchliche Bitte. Wenn ein Benutzer so dumm ist, dass er keinen Taschenrechner benutzen kann, um binären Code in dezimalen Code umzuwandeln, kann er ohnehin nicht mit der Optimierung umgehen. Er/sie kann sie höchstens einmal durchführen, um den besten Wert zu finden.

Wenn der Benutzer fortgeschritten genug ist, um den Optimierer zu verwenden, ist es sinnvoll, die Eingabeparameter mit einem regulären unsigned long zu kodieren,

 
Vasiliy Sokolov:

Finden Sie es erst heraus und kritisieren Sie dann. Hier ist eine Aufgabe, die Sie zum Nachdenken anregt:

Verschlüsseln Sie die Zahl int mit den folgenden Kombinationen von Kerzen:

  • 1011;
  • 01011;
  • 001011

Hinweis: Es handelt sich um unterschiedliche Kombinationen.

Außerdem sind sie unterschiedlich lang. Die erste Kombination - umfasst vier sechsstellige Kombinationen.

Die zweite Kombination umfasst zwei Sechs-Bit-Einsen.

Dementsprechend sollten wir bei der Optimierung nur 64 Sechs-Bit-Kombinationen nehmen.

Außerdem ist die letzte Option eine Teilmenge der ersten beiden Optionen, und die vorletzte Option ist eine Teilmenge der ersten Option.

Zum Zeitpunkt der Registrierung der letzten Kombination müssen wir also gleichzeitig die zweite und die erste Kombination identifizieren. Meiner Meinung nach ist dies eindeutig eine falsche Forderung.

 
Was ist der Zweck dieser Veranstaltung - die profitabelste Reihenfolge zu finden? Sie brauchen dafür keinen Roboter oder Tester - ein Indikator, in dem die Länge der Sequenz und die Regeln für das Schließen der Position (durch TP oder durch das entgegengesetzte Signal oder irgendwo anders) angegeben sind, reicht aus. Der Indikator kodiert alle Varianten innerhalb der angegebenen Länge der Sequenz und einer bestimmten Tiefe der Historie, er sortiert das Ergebnis (einschließlich des Drawdowns) und druckt es aus, wo immer Sie wollen. Aber das Problem scheint in der Tat weit hergeholt zu sein. Nun, wenn es sich nicht um ein Ratespiel wie 0101 handelt, um den Benutzer zu beschäftigen
 
George Merts:

Dementsprechend nehmen Sie bei der Optimierung einfach 64 sechsstellige Kombinationen.

Frage: Wie hoch ist die Wahrscheinlichkeit, dass auf dem Markt eine Kombination auftaucht, die den geforderten 64 Ziffern entspricht? Antwort: (1/2^64)*BarsCount. Das bedeutet, dass mit fast 100-prozentiger Wahrscheinlichkeit keine solche Kombination gefunden wird. Es ist offensichtlich, dass nur eine Zahl int oder long das Muster nicht vollständig beschreiben kann, daher benötigen wir einen zusätzlichen Parameter, der die Länge des Musters angibt.

Wenn Sie in so kleinen Schritten denken, werden Sie bald zu dem kommen, was ich auf der zweiten Seite gesagt habe.

Grund der Beschwerde: