Indicadores: Heikin Ashi Lines

Heikin Ashi Lines:

Uma maneira mais simples de exibir o Heikin Ashi

Heikin Ashi Lines

Author: FMIC

   // Definir macros de sequenciamento do ciclo OnCalculate
      #ifdef __MQL4__   // para MQL4 (como séries)
         #define  MOnCalcNext(  _index          ) ( _index--             )
         #define  MOnCalcBack(  _index, _offset ) ( _index + _offset     )
         #define  MOnCalcCheck( _index          ) ( _index >= 0          )
         #define  MOnCalcValid( _index          ) ( _index < rates_total )
         #define  MOnCalcStart \
            ( rates_total - ( prev_calculated < 1 ? 1 : prev_calculated ) )
      #else             // para MQL5 (como não-série)
         #define  MOnCalcNext(  _index          ) ( _index++             )
         #define  MOnCalcBack(  _index, _offset ) ( _index - _offset     )
         #define  MOnCalcCheck( _index          ) ( _index < rates_total )
         #define  MOnCalcValid( _index          ) ( _index >= 0          )
         #define  MOnCalcStart \
            ( prev_calculated < 1 ? 0 : prev_calculated - 1 )
      #endif

Por que você não está usando o ArraySetAsSeries()? Isso permitiria usar as mesmas macros nas duas versões da linguagem.

Não estou criticando, só estou curioso.

Acho que é simplesmente mais prático para você.

Incrivelmente
[Excluído]
Vladislav Boyko #: Por que você não está usando o ArraySetAsSeries()? Isso permitiria usar as mesmas macros para ambas as versões da linguagem. Não estou criticando, só estou curioso. Acho que é simplesmente mais prático para você.

Eu opto por usar macros para que a decisão seja tomada em tempo de compilação, em vez de usar o ArraySetAsSeries(), que é executado em tempo de execução, em busca de um pouco mais de eficiência.

Nesse caso, como se trata de um indicador muito simples, isso realmente não faz muita diferença, mas para indicadores muito mais complexos, pode fazer.

[Excluído]
Roberto Jacobs #: É incrível

Peço desculpas, mas não entendi muito bem o significado da sua postagem. Você poderia explicar melhor?

Fernando Carreiro #:

Optei por usar macros para que a decisão seja tomada na fase de compilação, em vez de usar o ArraySetAsSeries(), que é executado em tempo de execução, com o objetivo de obter um pouco mais de eficiência.

Nesse caso, como se trata de um indicador muito simples, isso realmente não faz muita diferença, mas, para indicadores muito mais complexos, pode fazer.

Obrigado!

Obrigado, Fernando. Isso foi extremamente útil para um iniciante. Obrigado também pela dica sobre os Projetos Públicos. Eu nem sabia que isso existia. De alguma forma, eu não tinha percebido esse recurso. Espero encontrar alguma documentação sobre como usar esse recurso.
[Excluído]
Vladislav Boyko #: Obrigado!
linfo2 #: Obrigado , Fernando, isso foi incrivelmente útil para um novato. Agradeço também pela dica sobre os Projetos Públicos. Eu nem sabia que isso existia. De alguma forma, eu tinha deixado essa funcionalidade passar despercebida. Espero encontrar alguma documentação sobre como usar essa funcionalidade.

De nada!

Eu estava pesquisando como são feitos os cálculos para o Heiken-Ashi e, em relação aos máximos, eles explicam que se trata do “valor máximo entre a alta, a abertura ou o fechamento do período atual” e, “para os mínimos”, do “valor mínimo entre a baixa, a abertura ou o fechamento do período atual”. Isso não é o mesmo que dizer que as máximas e mínimas coincidem com as barras? Se for assim, sua ideia de mostrá-las como linhas é simples e brilhante: dá para ver a tendência do Heiken-Ashi à primeira vista, sem abrir mão das velas normais.

Tradução automática aplicada pelo moderador. No fórum em inglês, por favor, escreva em inglês.

[Excluído]
@Daniel Eduardo San Martin #: Isso não é o mesmo que dizer que as máximas e mínimas coincidem com as barras?

Na maioria das vezes, sim, mas quando a abertura do Heikin Ashi (média móvel) está além da máxima/mínima da vela normal, então essa passa a ser a máxima/mínima do Heikin Ashi.

Fernando Carreiro #:

Peço desculpas, mas não entendi muito bem o que você quis dizer com sua postagem. Você poderia explicar melhor?

Acho que seu código é muito bom e poderoso. Não baixei o mq5.
Com o código para o MT4 que você compartilhou, basta copiar e colar no MetaEditor MQL5 e salvar como mq5, e tudo funciona perfeitamente.