Código Morse - página 3

 

Haz dos parámetros. Uno para humanos - cadena, el segundo para máquinas - int. La tercera variable es para la selección del tipo. En cualquier caso, al iniciar el indicador, imprima la segunda opción de codificación de la combinación. Si la consecuencia se establece en 100, entonces imprime la información adicional - de cuántos a cuántos puede cambiar el parámetro int.

Para una vela con apertura y cierre iguales podemos suponer que tiene la dirección de la vela más cercana con apertura y cierre desiguales. Si una vela se codifica con tres números, 0- para la apertura y el cierre iguales, entonces habrá demasiadas secuencias raras.

 

El optimizador necesita dos parámetros para poder competir: la longitud de la combinación y el contador. Supongamos que nuestra longitud de combinación es 4, entonces 2^4 = 16. Significa que el contador debe ir de 0 a 15. Repasándolo en el optimizador obtendremos todas las combinaciones de patrones de 4 dígitos.

Para no confundir al usuario, debe añadir la estructura ENUM_PATTERN_TYPE, que establece el tipo de patrón: numérico o de cadena. Si selecciona un patrón de cadena, no utilice los contadores y la longitud de las combinaciones. Y viceversa, si desea ejecutar en el optimizador, seleccione el tipo de patrón numérico.

 

Ya he visto algo así, se puede buscar en Yandex por "candlecode"

 
Vasiliy Sokolov:

El optimizador necesita dos parámetros para funcionar: la longitud de la combinación y el contador. Supongamos que nuestra longitud de combinación es 4, entonces 2^4 = 16. Significa que el contador debe ir de 0 a 15. Repasándolo en el optimizador obtendremos todas las combinaciones de patrones de 4 dígitos.

Para no confundir al usuario, debe añadir la estructura ENUM_PATTERN_TYPE, que establece el tipo de patrón: numérico o de cadena. Si selecciona un patrón de cadena, no utilice los contadores y la longitud de las combinaciones. Y viceversa, si queremos ejecutar en el optimizador, seleccionamos el tipo de patrón numérico.


He añadido la estructura ENUM_PATTERN_TYPE, aunque sugiero ocultar al usuario el parámetro de tipo "int" que define el tipo de combinación de velas:

  • de todos modos el tipo "int" es un número y no se correlaciona de ninguna manera con el tipo binario de un parámetro de cadena
  • El tipo "int" sólo es necesario durante la optimización.

pero deja sólo estos parámetros:

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

Entradas Código Morse 1.002

 

No lo entiendo del todo: ¿son programadores o imbéciles?

¿Por qué traducir algo en algo?

Si necesitamos un código 101 - es el valor normal de 5. Eso es. ¿Cuál es el problema? ¿Traducir mentalmente el decimal a binario?

Hice experimentos similares, sólo que mi vela tenía cuatro tamaños más, de pequeño a grande. Eso hace que haya ocho tamaños de velas diferentes. Y, en consecuencia, tres bits. En el patrón escribimos el número (ulong) - la cuadrícula es más grande que para un patrón de veinte barras.

El problema es, en mi opinión, inverosímil.

 
George Merts:

No lo entiendo del todo: ¿son programadores o imbéciles?

¿Por qué tenemos que traducir algo en algo?

Si necesitamos un código 101 - es el valor normal de 5. Eso es. ¿Cuál es el problema? ¿Traducir mentalmente el decimal a binario?

Hice experimentos similares, sólo que mi vela tenía cuatro tamaños más, de pequeño a grande. Eso hace que haya ocho tamaños de velas diferentes. Y, en consecuencia, tres bits. En el patrón escribimos el número (ulong) - la cuadrícula es más grande que para un patrón de veinte barras.

El problema es, en mi opinión, inverosímil.


Los usuarios normales no pueden convertir mentalmente el decimal en binario :)
 
George Merts:

No lo entiendo del todo: ¿son programadores o imbéciles?

¿Por qué traducir algo en algo?

Si necesitamos un código 101 - es el valor normal de 5. Eso es. ¿Cuál es el problema? ¿Traducir mentalmente de decimal a binario?

Hice experimentos similares, sólo que mi vela tenía cuatro tamaños más, de pequeño a grande. Eso hace que haya ocho tamaños de velas diferentes. Y, en consecuencia, tres bits. En el patrón escribimos el número (ulong) - la cuadrícula es más grande que para un patrón de veinte barras.

El problema es, en mi opinión, inverosímil.


El programa será utilizado por un usuario normal, no por un programador (ya se ha mencionado anteriormente y más de una vez) - y para él "101" y "5" son dos números diferentes, mientras que para él "5" no contiene ninguna información sobre la posición relativa de las velas, pero "101" dice claramente "alcista, bajista, alcista".

 

¿Cómo se codifica la esquiva?

Por ejemplo, el patrón de la "estrella vespertina" puede ser alcista-doble (o barra de lobo o de espiga) - osado. Si se ignora la esquiva (barra de lobos o de pines) entonces el patrón no se identifica correctamente. Creo que 1 bit para codificar una vela no será suficiente 2 bits por 1 vela.

Por ejemplo, la vela del toro es 01, la vela del oso es 10 y las otras velas son 11. Entonces, "estrella de la tarde" sería 01 11 10, "estrella de la mañana" sería 10 11 01.

....

También estaba pensando. ¿Cómo se codifica un patrón de toma de posesión? Una simple combinación alcista-bajista no nos dice nada, pero una combinación alcista-grande bajista ya nos habla de una toma de posición alcista-bajista. O alternativamente podríamos sumar estas dos velas en una y obtener una barra pin y codificar esta vela sumada como 11.


 
Vitalii Ananev:

¿Cómo se codifica la esquiva?

Por ejemplo, el patrón de la "estrella vespertina" puede ser alcista-doble (o barra de lobo o de espiga) - osado. Si se ignora la esquiva (barra de lobos o de pines) entonces el patrón no se identifica correctamente. Creo que 1 bit para codificar una vela no será suficiente 2 bits por 1 vela.

Por ejemplo, la vela del toro es 01, la vela del oso es 10 y las otras velas son 11. Entonces la "estrella de la tarde" será 01 11 10, la "estrella de la mañana" será 10 11 01


Las sombras no están codificadas de ninguna manera (al menos en esta etapa). Tal vez más tarde ...
 
Vladimir Karputov:

Las sombras no están codificadas de ninguna manera (al menos en esta etapa). Tal vez más tarde...


Deberíamos considerar todo de una vez para evitar rehacerlo después.

....

De nuevo, si volvemos a la pauta de la "Estrella de la Tarde", se puede ver como una vela alcista-bajista y una toma alcista-bajista. Es decir, resulta ser un patrón compuesto formado por una vela alcista y una absorción bajista. Y si sumamos las tres velas del patrón, volvemos a tener una barra de pin.