O POE para crianças em idade escolar. - página 9

 
Dmitry Fedoseev:

Se o indicador é calculado da esquerda para a direita, então se algo acontece, por exemplo, se forma um fractal, você deve armazenar o índice da barra com este evento (para usá-lo para outra coisa). Se a indexação for da direita para a esquerda, devemos calcular n=Bars-i e lembrar n, e depois fazer o inverso: i=Bars-n. Mas se você fizer o índice da esquerda para a direita, você deve apenas salvar o índice e usá-lo, ele não vai mudar. Como em indicadores mais ou menos complicados isto é sempre necessário, a indexação da esquerda para a direita é uma grande ajuda para os desenvolvedores de indicadores.

Assim que comecei a escrever um indicador em mql4, escrevi 1/3 dele, outra parte 1/3 foi baseada nos resultados do primeiro e a terceira parte foi baseada nos valores do segundo terço. Eu enfrentei um grande problema ao calcular a barra com o valor necessário. Mas aconteceu que o cliente desapareceu e eu ainda não terminei de escrevê-lo. E quando a indexação à direita o número de barras não é alterado, basta escrever o número de barras na matriz auxiliar e apenas esta matriz deve ser executada para construir a segunda e a terceira partes...

 
Dmitry Fedoseev:

Se o indicador é calculado da esquerda para a direita, então se algo acontece, por exemplo, se forma um fractal, você deve armazenar o índice da barra com este evento (para usá-lo para outra coisa). Se a indexação for da direita para a esquerda, devemos calcular n=Bars-i e lembrar n, e depois fazer o inverso: i=Bars-n. Mas se você fizer o índice da esquerda para a direita, você deve apenas salvar o índice e usá-lo, ele não vai mudar. Como em indicadores mais ou menos complicados isto é sempre necessário, a indexação da esquerda para a direita é uma grande ajuda para os desenvolvedores de indicadores.

Que tal. E depois o terminal descarrega o histórico e o quê?
 
Ihor Herasko:

Aqui está um exemplo.

Obrigado, mas

  1. Infelizmente, é tudo quatro.
  2. Eu gostaria de um exemplo claro de conexão de um indicador desse tipo sem iCustom )))
 
Vladimir Simakov:
Caramba! E depois o terminal descarrega o histórico e o quê?

Não é nada de mais. Você só tem que esquecer a abordagem de quatro vias

   int counted_bars=IndicatorCounted();
   int i,r,limit;

   if(counted_bars<0) return(-1);
   if(counted_bars>0) counted_bars--;
         limit = Bars-counted_bars;
         if (ArrayRange(working,0) != Bars) ArrayResize(working,Bars);

   //
   //
   //
   //
   //
        
   for(i=limit, r=Bars-i-1; i >= 0; i--,r++)

E faça assim.

if(rates_total-prev_calculated > 1)
 {
  // Если это первый запуск или подгрузилась история пересчитаем весь индикатор.
 }
if(rates_total-prev_calculated >= 0)
 {
  // Пересчитаем только последнее изменение.
 }
 
#include <Indicators/Indicators.mqh>

CiADX adx;

int OnInit()
  {

   if(!adx.Create(Symbol(),Period(),14)){
      return(INIT_FAILED);
   }

   OnTick(); // это только для этого примера, чтобы на выходных сработало

   return(INIT_SUCCEEDED);
  }

void OnTick()
  {
   double buf[];
   
   if(adx.GetData(0,1,0,buf)==-1){
      return;
   }

   Comment(buf[0]);
   
  }
 
Vladimir Simakov:
Ah, sim. E depois o terminal baixou o histórico e o quê?

De onde você é e por que você está aqui? Você já escreveu um único indicador para MT4 ou MT5? Ao menos você deve conhecer o básico de indicadores de escrita para MetaTrader.

 
Dmitry Fedoseev:

Como eles nunca escreveram indicadores complexos, mas rápidos, caso contrário a indexação da esquerda para a direita teria sido uma solução muito importante.

Se você precisar de um indicador rápido para uma EA, é melhor colocar a parte de cálculo diretamente na EA.

 
Alexey Volchanskiy:

Se você precisar de um indicador rápido para a EA, é mais rentável inserir a parte de cálculo diretamente na EA.

De jeito nenhum... Conte para suas namoradas sobre isso, em nome da brutalidade.

 
Dmitry Fedoseev:

De onde você é e por que você está aqui? Você já escreveu um único indicador para MT4 ou MT5? Você deve ao menos conhecer os fundamentos da escrita de indicadores para MetaTrader.

Dimitri está com raiva, ele ainda não bebeu))))

 
Fixou-o um pouco. GetData() deve ser verificado quanto à desigualdade -1.