É 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
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
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