Características da linguagem mql5, subtilezas e técnicas - página 27
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
Fórum sobre negociação, sistemas de negociação automatizados e testes de estratégia de negociação
Bugs, bugs, perguntas
fxsaber, 2017.02.07 13:41
SymbolInfoTick em indicadores funciona de forma bastante diferente do que em EAs.
Em um indicador ele sempre retorna o tique que foi o iniciador da chamada OnCalculate. E esses ticks iniciadores no indicador não devem ser pulados - esta é a ideologia dos desenvolvedores. O problema está na formação da fila destes carrapatos.
No Expert Advisor, SymbolInfoTick no OnTick não retorna o tick que iniciou a chamada do OnTick, mas faz uma solicitação completa para o estado atual.
Em outras palavras:
O indicador mostrará o primeiro tick de todo o pacote quando um tick batch chegar, enquanto o EA mostrará o último tick.
Estou a ler isto bem?
Em outras palavras:
O indicador mostrará o primeiro tick de todo o pacote quando um pacote de ticks chegar, enquanto o EA mostrará o último tick.
Estou a perceber bem?
Sim. A OnCalculate não será chamada a cada toque do pacote na ordem da fila.
Em cada tique? Porque você NÃO escreveu...
Acontece que com a chegada de um pacote de carrapatos, o indicador começará na ordem dos carrapatos no pacote de entrada?
Pergunto-me, se o pacote foi recebido na abertura de uma nova barra, quantas vezes, durante este pacote de carrapatos, o indicador fará o recálculo completo?
Em cada tique? Porque você NÃO escreveu...
Provavelmente não escreveu muitas coisas.
Acontece que com a chegada de um pacote de carrapatos, o indicador será iniciado na ordem dos carrapatos no pacote de entrada?
Pergunto-me, se o pacote chegou na abertura de um novo bar - quantas vezes durante este pacote de carrapatos o indicador fará um recálculo completo?
O evento de cálculo é gerado em TODOS os tick. Portanto, há uma fila de carrapatos para os indicadores. Se atingir um determinado montante, o log exibe um aviso de que o indicador está muito lento.
As próprias barras são indicadores por natureza e são formadas por eventos de cálculo. Portanto, se a TF M1 e são 10:15:00.020 e um pacote de 50 ms chega, então o primeiro tick ainda tem tempo 10:14:59.970. E todos os indicadores são chamados primeiro neste evento Calcular evento - primeiro o indicador de série temporal e depois indicadores personalizados com estas séries temporais. Ou seja, neste layout, a barra 10:15 ainda não está formada como a barra zero. E a barra de zero é 10:14.
Então, quando o pacote começar a desenrolar-se através de Calcular eventos, a barra 10:15 também aparecerá. Acho que já o soletrei em pormenor.
Deve haver muita coisa que eu não escrevi.
O evento Calculate é gerado em TODOS os tick. Portanto, há uma fila de carrapatos para os indicadores. Se atingir um determinado montante, há um aviso no log de que o indicador é demasiado lento.
As próprias barras são indicadores por natureza e são formadas por Calcular eventos. Portanto, se TF M1 e são 10:15:00.020 e um pacote de 50 ms está chegando, então o primeiro tick ainda tem tempo 10:14:59.970. E todos os indicadores são chamados primeiro neste evento Calcular evento - primeiro o indicador de série temporal e depois indicadores personalizados com estas séries temporais. Ou seja, neste layout, a barra 10:15 ainda não está formada como a barra zero. E a barra de zero é 10:14.
Então, quando o pacote começar a desenrolar-se através de Calcular eventos, a barra 10:15 também aparecerá. Acho que já o soletrei em pormenor.
Como consequência, é bastante normal que a EA receba um carrapato de uma barra que ainda não se formou. Mas este é um ponto tão sutil que mesmo reproduzi-lo de propósito exigiria muito esforço. Em geral, é mais teórico do que prático.
Se somos paranóicos quanto à velocidade, o uso de indicadores (e barras, é claro) não é uma opção. Está tudo na EA.
fxsaber:
Então, quando o pacote começar a desenrolar-se através de Calcular eventos, a barra 10:15 também aparecerá. Acho que já o soletrei em pormenor.
Existe alguma forma de determinar que uma embalagem chegou, ignorar os primeiros tiquetaques dela e levar apenas o último tique para processamento?
Existe alguma forma de detectar que uma embalagem entrou, ignorar os primeiros carrapatos e levar apenas o último carrapato para processamento?
Em OnCalculate via CopyTicks.