Serviços , nova funcionalidade no arquiteto do MT5, o funeral do MT4 está prestes a ser inaugurado. - página 8
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
do Eng.
dados
feed
datafeed -- fonte de dados (embora a palavra "fonte" não esteja muito correta)
alimentador -- alimentador, alimentador, alimentador
О датафидах. Сколько встречал этот термин, сложилось ощущение, что этим словом обозначают источник данных (котировок). Буквально "заполнитель данных". Когда речь идет о собственных инструментах, понимаю так, что мы сможем вычислять котировки, например, никем не котируемого MXNRUB по известным курсам MXNUSD и USDRUB, выгруженным из терминала в .csv формат, и легализовать для терминала новые котировки, указав файл .csv как новый датафид. Возможно, будет реализовано и более изящное решение, без выгрузки в файлы, путем онлайновых операций */ над тиками (MXNRUB = MXNUSD * USDRUB). И это будет новый датафид.
Não resta nenhum link para uma discussão, relatório de bug ou algo parecido? Ou apenas um sentimento de que havia um, mas ainda não o verificou agora?
Até onde me lembro, os carrapatos coletados na OnCalculate correspondiam aos solicitados via CopyTix.
Agora, como eu suspeitava, foi verificado de propósito... mas não aquele que eu esperava :)
OnBookEvent() captura carrapatos com bandeira 0...
E isto é o que eu esperava ver:
Como você pode ver, ao solicitar o último tique em cada chamada para OnCalculate() com SymbolInfoTick() - há um pulo em alguns dos tiquetaques que CopyTicks() retorna.Código a ser verificado:
Código a ser testado:
Eu deixaria apenas carrapatos para registrar quando a OnCalculate for chamada, para ter certeza (não para testar OnBookEvent e CopyTicks, masOnCalculate, como pretendido).
E então por roteiro teria gerado o mesmo arquivo, obtendo os carrapatos através de CopyTicks. A diferença seria mais óbvia, e indicaria ou carrapatos perdidos na OnCalculate ou trabalho incorreto do CopyTicks.
Para ter certeza (não para testar OnBookEvent e CopyTicks, mas OnCalculate, como pretendido), eu deixaria apenas carrapatos escritos para o arquivo quando OnCalculate for chamado.
E então por script teria gerado o mesmo arquivo, obtendo os carrapatos através de CopyTicks. A diferença seria mais clara e indicaria ou pulo de carrapatos no OnCalculate ou trabalho incorreto do CopyTicks.
Com um cálculo tão simples, não vejo a utilidade de se preocupar. Há uma comparação específica de duas chamadas: SymbolInfoTick() e CopyTicks(). E todas as chamadas do SymbolInfoTick() são claramente mostradas. E pode ser visto claramente que o CopyTicks() devolveu o tick, que não foi recebido em SymbolInfoTick() chamada da OnCalculate(). E pode haver duas razões para o erro aqui: 1. Ou OnCalculate() perde um carrapato, ou 2. SymbolInfoTick() devolve a coisa errada em algum lugar.
Sim, isto faz parte do tronco, que está sendo construído há cerca de 30 segundos. então imagine o número de carrapatos que faltam.
Nosso diálogo com a central de serviço:
Procure não se perder:https://www.mql5.com/ru/forum/190129/page8#comment_5081300 e os próximos 2 postos.
CopyTicks do indicador dá um sinal de que o indicador não entra no OnCalculate (nem antes nem depois).
OnCalculate é chamado a cada tique.
Os bilhetes são adicionados ao banco de dados em uma linha separada. Ou seja, de forma assíncrona. Não é um fato que com CopyTicks você terá o mesmo carrapato que chamou OnCalculate.
Não se trata disso.
Com CopyTicks é possível obter um carrapato, que não estava na OnCalculate (aprendemos sobre isso na OnCalculate em um carrapato, que é mais longo do que o tempo perdido).
Dê uma olhada nos troncos.
É exatamente disto que estamos falando.
Chegou um lote de carrapatos. Dois fios começam a processar este pacote - um fio no laço executa o OnCalculate em cada carrapato do pacote; outro fio coloca o pacote inteiro em um banco de dados de carrapatos. Estes dois fios não estão sincronizados entre eles de forma alguma e não se sabe qual fio processará um pacote de carrapatos mais rapidamente
Mas cada carrapato da embalagem deve ser processado pela OnCalculate. E isto não está acontecendo.
Não há nenhum tiquetaque com esse tempo. Há um tique com menos tempo, e um tique com mais tempo. E não há nenhuma chamada OnCalculate no meio.
komposter
Mas cada carrapato da embalagem tem que ser tratado pela OnCalculate. E isto não está acontecendo.
Não há nenhum tiquetaque com esse tempo. Há um tique com menos tempo, e um tique com mais tempo. E não há nenhuma chamada de OnCalculate entre eles.
Cada carrapato da embalagem é processado na OnCalculate. Lá não há saltos. É assim que o laço é escrito.
Para descobrir qual carrapato é processado na OnCalculate, useSymbolInfoTick- tudo está claro aqui. O tick é aplicado às informações do símbolo e então todos os indicadores deste símbolo são chamados, todos em um único fio
Por favor, dê uma olhada no log no link.
O SymbolInfoTick da OnCalculate não vê o tick, que pode ser obtido no CopyTicks.
É por isso que eu escrevi
Precisamos fazer exatamente como você sugeriu emhttps://www.mql5.com/ru/forum/190129/page8#comment_5082755
Eu, para ter certeza (para testar OnCalculate ao invés de OnBookEvent e CopyTicks, como pretendido), deixaria apenas a escrita de carrapatos para o arquivo quando OnCalculate for chamado.
E então por script teria gerado o mesmo arquivo, obtendo os carrapatos através de CopyTicks. A diferença seria muito mais clara e indicaria ou pular carrapatos no OnCalculate ou um trabalho incorreto do CopyTicks.
E nós verificamos exatamente desta forma, de uma só vez, a exatidão do CopyTicks. Os roteiros de teste e os indicadores são deixados, vamos verificá-los novamente.
Fórum sobre comércio, sistemas automatizados de comércio e testes de estratégia comercial
Bichos, insetos, perguntas
fxsaber, 2017.02.07 13:41
SymbolInfoTick em indicadores funciona de forma bem diferente do que em EAs.
Em um indicador ele sempre retorna o tique que foi o iniciador da chamada OnCalculate. E estes carrapatos iniciadores no indicador não devem ser pulados - esta é a ideologia dos desenvolvedores. O problema está na formação da fila desses carrapatos.
No Expert Advisor, o SymbolInfoTick no OnTick não retorna o tick que iniciou a chamada do OnTick, mas faz um pedido completo para o estado atual.
Fórum sobre comércio, sistemas automatizados de comércio e testes estratégicos
Características da linguagem mql5, sutilezas e truques
fxsaber, 2017.03.29 22:32
O evento de cálculo é gerado em TODOS os tick. Portanto, há uma fila de carrapatos para os indicadores. Se atingir um certo número, há um aviso no registro de que o indicador é muito lento.
As próprias barras são indicadores por natureza e são geradas por eventos de cálculo. Portanto, se TF M1 e são 10:15:00.020 e chega um pacote de 50ms, o primeiro tick ainda tem tempo 10:14:59.970. E todos os indicadores são chamados primeiro sobre este evento Calcular - 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 zero é 10:14.
Então, quando o pacote começar a se desenrolar via Calcular eventos, a barra 10:15 também aparecerá. Acho que já o descrevi em detalhes.
Fórum sobre comércio, sistemas automatizados de comércio e testes estratégicos
Características da linguagem mql5, sutilezas e truques
fxsaber, 2017.03.29 22:41
Como conseqüência, é bastante normal que uma EA receba um carrapato de uma barra que ainda não se formou. Mas este é um ponto tão sutil que é preciso esforço até mesmo para reproduzir de propósito. Em geral, é mais teórico do que prático.
Se formos paranóicos quanto à velocidade, o uso de indicadores (e barras, é claro) não é uma opção. Tudo está na EA.
Nosso diálogo com o Service Desk:
O Service Desk está, infelizmente, em seu repertório. Eles não precisam lançar um link quando se trata de discussão. Mas para dar um exemplo concreto, em seus dedos. Não é sobre isso que eles estão falando. Nomeadamente, eles dizem, que SymbolInfoTick() retorna o tick atual para ser verificado, e como OnCalculate() lida com cada tick - afinal, essa saída deve ser de cada tick. E CopyTicks() nos diz o contrário. Bem... E eles dizem, não olhe para CopyTicks() :). Sobre dois fios eles me explicaram também, quando estavam consertando CopyTicks() no final do ano. Só que não é a questão aqui (embora, talvez também nela, eu não saiba).
Não lhes perguntou sobre carrapatos com bandeira 0 quando recebidos da OnBookEvent()?