Experts: New Candle or Bar formation.

 

New Candle or Bar formation.:

Esse Bot detecta a abertura de uma nova vela em qualquer período de tempo definido, facilitando assim a execução de um código único, a realização de negociações e a chamada de outras funções. O código é escrito na função OnTick().

New Candle or Bar formation.

Author: Clinton Dennis Edem

 
Obrigado pelo e-mail code👍🏿. Estou tendo dificuldades para detectar a abertura de novas velas.
 
Fico feliz que o código tenha sido útil para você.
 
Agradável
 
Memunatu Jah #:
Legal

Obrigado.

 
Comente o próximo código que você gostaria que eu escrevesse.
 
jhqy #:
incompetente
teste o código e me diga se ele não está funcionando bem. teste antes de comentar negativamente.
 
Clinton Dennis Edem #:
Teste o código e me diga se ele funciona mal. Teste antes de comentar negativamente.

1. previous_time inicializado incorretamente, o código emitirá um alarme falso imediatamente na inicialização

2. acesso caro ao iTime em cada tick.

3. nem todo tick forma uma barra (raramente, mas um tick pode aparecer em um dia de folga, não é uma negociação - apenas alguns procedimentos internos do servidor)

 
Maxim Kuznetsov # :

1. previous_time inicializado incorretamente, causando alarmes falsos imediatamente após a inicialização do código.

2. acesso dispendioso ao iTime a cada tick.

3. nem todos os ticks formam uma barra (em casos raros, um tick pode ocorrer em um dia de folga e não é uma transação, mas apenas um procedimento interno do servidor).

O trabalho do código é detectar a formação de um novo candle, que só pode ser escrito dentro de uma função Ontick ou OnTimer
 

Não é possível saber quando uma vela se fecha. Somente quando chega um novo tick que inicia uma nova barra é que a barra antiga é fechada, e esse tick pode chegar quase no final da duração de uma barra.

Para um novo teste de barra, Bars não é confiável (uma atualização/reconexão pode alterar o número de barras no gráfico), volume não é confiável (ticks perdidos), Price não é confiável (preços duplicados e O operando == - Fórum de programação MQL4.) Sempre use o tempo.
MT4: New candle - Fórum de programação MQL4 nº 3 (2014)
MT5: Accessing variables - Fórum de programação MQL4 nº 3 (2022)

Não concordo com a criação de uma nova função de barra, porque ela só pode ser chamada uma vez por tick (a segunda chamada retorna falso). Uma variável pode ser testada várias vezes.
Executando o EA uma vez no início de cada barra - Fórum de programação MQL4 (2011)

 static datetime curDT=0; datetime preDT=curDT; curDT=iTime(_Symbol,_Period,0);
 if(curDT != preDT){ … }
 
William Roeder #:

Não concordo com a criação de uma nova função de barra, porque ela só pode ser chamada uma vez por tick (a segunda chamada retorna falso). Uma variável pode ser verificada várias vezes.

Consegui criar uma função genérica IsNewBar(symbol, timeframe), que funciona corretamente em um EA para diferentes combinações de símbolo e timeframe, e pode ser chamada várias vezes no processamento de um tique, retornando a mesma coisa na segunda vez (e nas vezes subsequentes) que na primeira.