Como pular 1 candle ?

 

Prezados,

Em meus estudos vi que o bloco abaixo, comum em alguns EA´s da biblioteca, é responsável por só abrir ordens no término da formação do candle vigente.

Pergunto: O que devo acrescentar de forma mais simples ou modificar para sempre 'pular' 1 candle ? ou seja, se o candle vigente é 1, o EA abrirá ordem no seu fechamento, mas depois quero que só abra nova ordem no fechamento do candle 3, depois no candle 5, depois 7, 9, 11 e assim por diante. Sempre pulando 1 candle.


//--- we work only at the time of the birth of new bar

   static datetime PrevBars=0;

   datetime time_0=iTime(0);

   if(time_0==PrevBars)

      return;

   PrevBars=time_0;


Grato

 

É só criar um contador de velas puladas e retornar enquanto ele não atingir o número de velas que vc quer pular:

// no inicio do programa você pode definir um parâmetro com a quantidade de velas a serem puladas
// pode ser uma constante fixa, como abaixo, ou uma variável do tipo "input", se preferir

#define NUMBER_OF_CANDLES_TO_BE_SKIPPED   1    // numero de velas a serem puladas

   // logo antes do trecho do programa que vc postou, vc declara o contador de velas puladas

   static int SkippedCandles = 0;

   // trecho original que vc postou:

   static datetime PrevBars=0;
   datetime time_0=iTime(0);
   if(time_0==PrevBars)
      return;
   PrevBars=time_0;

   // logo em seguida, vc testa o contador de velas puladas:

   // se ainda nao atingiu a qtde de velas a serem puladas,
   // incrementa o contador de velas puladas e retorna

   if ( SkippedCandles < NUMBER_OF_CANDLES_TO_BE_SKIPPED )
   {
      SkippedCandles++;
      return;
   }

   // se não retornou, reinicia o contador com zero

   SkippedCandles = 0;

 

Perfeito Patinhas,

Muito grato

Razão: