Morseschrift - Seite 3

 

Machen Sie zwei Parameter. Eine für Menschen - string, die zweite für Maschinen - int. Die dritte Variable dient der Typenauswahl. Wenn der Indikator startet, wird in jedem Fall die zweite Option der Kombinationskodierung gedruckt. Wenn Konsequenz auf 100 gesetzt ist, dann drucken Sie zusätzliche Informationen - von wie viele bis wie viele können den Parameter int.

Bei einer Kerze mit gleicher Öffnung und Schließung können wir davon ausgehen, dass sie die Richtung der nächstgelegenen Kerze mit ungleicher Öffnung und Schließung hat. Wenn ein Candlestick mit drei Zahlen kodiert wird, 0- für gleiche Eröffnungs- und Schlusszahlen, dann gibt es zu viele seltene Sequenzen.

 

Der Optimierer benötigt zwei Parameter: die Kombinationslänge und den Zähler. Angenommen, unsere Kombinationslänge ist 4, dann ist 2^4 = 16. Das bedeutet, dass der Zähler zwischen 0 und 15 liegen sollte. Wenn wir sie im Optimierer durchgehen, erhalten wir alle Kombinationen von 4-stelligen Mustern.

Um den Benutzer nicht zu verwirren, müssen Sie die Struktur ENUM_PATTERN_TYPE hinzufügen, die den Mustertyp festlegt: numerisch oder String. Wenn Sie ein Zeichenkettenmuster auswählen, verwenden Sie keine Zähler und keine Länge der Kombinationen. Umgekehrt wählen Sie den numerischen Mustertyp, wenn Sie im Optimierer arbeiten wollen.

 

Ich habe so etwas schon einmal gesehen, man kann es auf Yandex nach "Kerzencode" suchen.

 
Vasiliy Sokolov:

Der Optimierer benötigt zwei Parameter: die Kombinationslänge und den Zähler. Angenommen, unsere Kombinationslänge ist 4, dann ist 2^4 = 16. Das bedeutet, dass der Zähler zwischen 0 und 15 liegen sollte. Wenn wir sie im Optimierer durchgehen, erhalten wir alle Kombinationen von 4-stelligen Mustern.

Um den Benutzer nicht zu verwirren, müssen Sie die Struktur ENUM_PATTERN_TYPE hinzufügen, die den Mustertyp definiert: numerisch oder String. Wenn Sie ein Zeichenkettenmuster auswählen, verwenden Sie keine Zähler und keine Länge der Kombinationen. Umgekehrt wählen wir den numerischen Mustertyp, wenn wir im Optimierer arbeiten wollen.


Ich habe die Struktur ENUM_PATTERN_TYPE hinzugefügt, wobei ich vorschlage, den Parameter "int", der den Typ der Candlestick-Kombination definiert, vor dem Benutzer zu verbergen:

  • der Typ "int" ist ohnehin eine Zahl und entspricht in keiner Weise dem binären Typ eines String-Parameters
  • Der Typ "int" wird nur während der Optimierung benötigt.

sondern lassen nur diese Parameter stehen:

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 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)
     {

Eingänge Morsecode 1.002

 

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? Übersetzen Sie geistig das Dezimalsystem in das Binärsystem?

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. In das Muster schreiben wir die Zahl (ulong) - das Raster ist größer als bei einem zwanzigtaktigen Muster.

Das Problem ist meiner Meinung nach weit hergeholt.

 
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? Übersetzen Sie geistig das Dezimalsystem in das Binärsystem?

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. In das Muster schreiben wir die Zahl (ulong) - das Raster ist größer als bei einem zwanzigtaktigen Muster.

Das Problem ist meiner Meinung nach weit hergeholt.


Normale Benutzer können Dezimalzahlen nicht mental in Binärzahlen umwandeln :)
 
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. In das Muster schreiben wir die Zahl (ulong) - das Raster ist größer als bei einem zwanzigtaktigen Muster.

Das Problem ist meiner Meinung nach weit hergeholt.


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

 

Wie codieren Sie das Ausweichen?

Zum Beispiel kann das "Abendstern"-Muster bullish-dodge (oder wolf oder pin bar)-bear sein. Wenn Sie das Ausweichmanöver (Wolf oder Pin Bar) ignorieren, wird das Muster nicht korrekt erkannt. Ich denke, dass 1 Bit für die Codierung einer Kerze nicht ausreicht, 2 Bits für 1 Kerze.

Die Bullenkerze hat beispielsweise den Wert 01, die Bärenkerze den Wert 10 und die anderen Kerzen den Wert 11. Dann wäre der "Abendstern" 01 11 10 und der "Morgenstern" 10 11 01.

....

Ich habe auch nachgedacht. Wie codiert man ein Übernahmemuster? Eine einfache Bullish-Bearish-Kombination sagt uns nichts, aber eine Bullish-Big-Bearish-Kombination sagt uns bereits etwas über eine Bullish-Bearish-Übernahme. Alternativ könnten wir diese beiden Kerzenständer zu einem summieren und einen Pin Bar erhalten und diesen summierten Kerzenständer als 11 codieren.


 
Vitalii Ananev:

Wie codieren Sie das Ausweichen?

Das "Abendstern"-Muster kann zum Beispiel bullish-dodge (oder wolf oder pin bar)-bear sein. Wenn Sie das Ausweichmanöver (Wolf oder Pin Bar) ignorieren, wird das Muster nicht korrekt erkannt. Ich denke, dass 1 Bit für die Codierung einer Kerze nicht ausreicht, 2 Bits für 1 Kerze.

Die Bullenkerze hat beispielsweise den Wert 01, die Bärenkerze den Wert 10 und die anderen Kerzen den Wert 11. Der "Abendstern" ist dann 01 11 10, der "Morgenstern" ist 10 11 01


Die Schatten sind in keiner Weise kodiert (zumindest in diesem Stadium). Vielleicht später ...
 
Vladimir Karputov:

Die Schatten sind in keiner Weise kodiert (zumindest in diesem Stadium). Vielleicht später...


Wir sollten alles auf einmal betrachten, um zu vermeiden, dass wir es später noch einmal tun müssen.

....

Kehren wir noch einmal zu dem "Evening Star"-Muster zurück, so kann es als bullish-small candle-bearish und als bullish-bearish takeover betrachtet werden. Das heißt, es handelt sich um ein zusammengesetztes Muster, 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.