Código morse - página 3

 

Faça dois parâmetros. Um para humano - corda, segundo para máquina - int. A terceira variável é para a seleção do tipo. Em qualquer caso, quando o indicador começar, imprimir a segunda opção de codificação da combinação. Se a conseqüência for definida como 100, então imprima informações adicionais - de quantos para quantos podem mudar o parâmetro int.

Para um castiçal com abertura e fechamento iguais, podemos assumir que ele tem a direção do castiçal mais próximo com abertura e fechamento desiguais. Se um castiçal é codificado com três números, 0- para abertura e fechamento iguais, então haverá muitas seqüências raras demais.

 

O otimizador precisa de dois parâmetros para poder correr: o comprimento da combinação e o contador. Suponha que nosso comprimento de combinação seja 4, então 2^4 = 16. Isso significa que o contador deve ser de 0 a 15. Ao passarmos pelo otimizador, obteremos todas as combinações de padrões de 4 dígitos.

Para não confundir o usuário, você deve adicionar a estrutura ENUM_PATTERN_TYPE, que define o tipo de padrão: numérico ou de cadeia. Se você selecionar um padrão de corda, não use contadores e comprimento de combinações. E vice-versa, se você quiser correr no otimizador, selecione o tipo de padrão numérico.

 

Já vi algo assim antes, é pesquisável em Yandex por "candlecode".

 
Vasiliy Sokolov:

O otimizador precisa de dois parâmetros para funcionar: o comprimento da combinação e o contador. Suponha que nosso comprimento de combinação seja 4, então 2^4 = 16. Isso significa que o contador deve ser de 0 a 15. Ao passarmos pelo otimizador, obteremos todas as combinações de padrões de 4 dígitos.

Para não confundir o usuário, você deve adicionar a estrutura ENUM_PATTERN_TYPE, que define o tipo de padrão: numérico ou de cadeia. Se você selecionar um padrão de corda, não use contadores e comprimento de combinações. E vice versa, se quisermos rodar no otimizador, selecionamos o tipo de padrão numérico.


Adicionei a estrutura ENUM_PATTERN_TYPE, enquanto sugiro esconder do usuário o parâmetro do tipo "int" que define o tipo de combinação de castiçal:

  • de qualquer forma, o tipo "int" é um número e não se correlaciona de forma alguma com um tipo binário de um parâmetro string
  • O tipo "int" só é necessário durante a otimização.

mas deixar apenas estes 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)
     {

Entrada Código Morse 1.002

 

Não entendo bem - estes são programadores ou otários?

Por que traduzir algo em algo?

Se precisarmos de um código 101 - esse é o valor normal de 5. É isso. Qual é o problema? Traduzir mentalmente o decimal em binário?

Fiz experiências semelhantes, apenas minha vela tinha mais quatro tamanhos - de pequeno a grande. Isso faz oito tamanhos diferentes de velas. E, conseqüentemente, três bits. No padrão nós escrevemos o número (ulong) - a grade é maior do que para um padrão de vinte barras.

O problema, em minha opinião, é rebuscado.

 
George Merts:

Não entendo bem - estes são programadores ou otários?

Por que traduzir algo em algo?

Se precisarmos de um código 101 - esse é o valor normal de 5. É isso. Qual é o problema? Traduzir mentalmente o decimal em binário?

Fiz experiências semelhantes, apenas minha vela tinha mais quatro tamanhos - de pequeno a grande. Isso faz oito tamanhos diferentes de velas. E, conseqüentemente, três bits. No padrão nós escrevemos o número (ulong) - a grade é maior do que para um padrão de vinte barras.

O problema é, em minha opinião, rebuscado.


Usuários normais não podem converter mentalmente o decimal em binário :)
 
George Merts:

Não entendo bem - estes são programadores ou otários?

Por que traduzir algo em algo?

Se precisarmos de um código 101 - esse é o valor normal de 5. É isso. Qual é o problema? Traduzir mentalmente de decimal para binário?

Fiz experiências semelhantes, apenas minha vela tinha mais quatro tamanhos - de pequeno a grande. Isso faz oito tamanhos diferentes de velas. E, conseqüentemente, três bits. No padrão nós escrevemos o número (ulong) - a grade é maior do que para um padrão de vinte barras.

O problema é, em minha opinião, rebuscado.


O programa será usado por um usuário regular, não por um programador (já foi mencionado acima e mais de uma vez) - e para ele "101" e "5" são dois números diferentes, enquanto para ele "5" não contém nenhuma informação sobre a posição relativa das velas, mas "101" diz claramente "em alta, em baixa, em alta".

 

Como se codifica o dodge?

Por exemplo, o padrão "estrela da noite" pode ser "bullish-dodge" (ou barra de lobo ou pino) -bear. Se você ignorar o dodge (barra de lobo ou pino), então o padrão não é identificado corretamente. Acho que 1 bit para codificar uma vela não será suficiente 2 bits por 1 vela.

Por exemplo, a vela de touro é 01, a vela de urso é 10 e as outras velas são 11. Então, "estrela da tarde" seria 01 11 10, "estrela da manhã" seria 10 11 01.

....

Eu também estava pensando. Como você codifica um padrão de aquisição? Uma simples combinação de bullish-bearish não nos diz nada, mas uma combinação bullish-big bearish já nos diz sobre uma aquisição de bullish-bearish. Ou, alternativamente, poderíamos somar estes dois castiçais em um só e obter uma barra de pino e codificar este castiçal somado como 11.


 
Vitalii Ananev:

Como se codifica o dodge?

Por exemplo, o padrão "estrela da noite" pode ser "bullish-dodge" (ou barra de lobo ou pino) -bear. Se você ignorar o dodge (barra de lobo ou pino), então o padrão não é identificado corretamente. Acho que 1 bit para codificar uma vela não será suficiente 2 bits por 1 vela.

Por exemplo, a vela de touro é 01, a vela de urso é 10 e as outras velas são 11. Então "estrela da noite" será 01 11 10, "estrela da manhã" será 10 11 01


As sombras não são codificadas de forma alguma (pelo menos nesta fase). Talvez mais tarde ...
 
Vladimir Karputov:

As sombras não são codificadas de forma alguma (pelo menos nesta fase). Talvez mais tarde...


Devemos considerar tudo de uma só vez para evitar refazê-lo mais tarde.

....

Mais uma vez, se voltarmos ao padrão "Estrela da Noite", ele pode ser visto como uma tomada de controle de um pequeno touro e uma tomada de controle de um grande touro. Isso significa que temos um padrão composto que consiste em uma vela em alta e uma absorção em baixa. E se somarmos os três castiçais a partir do padrão, obtemos novamente uma barra de pino.