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
Obrigado pela resposta. Isso é muito estranho, estou de fato usando o modo de ticks reais e não sabia que havia uma opção de spread fixo no MT5, portanto, tenho certeza de que não estou usando (estou mais familiarizado com o MT4).Não tinha percebido que os spreads eram os mesmos para cada barra; na verdade, analisando o arquivo completo, parece que eles só mudam nos limites de 1 minuto. Presumo que estou certo ao pensar que as chamadas para SymbolInfoDouble() devem retornar os preços para o tick que está sendo processado como resultado da chamada do evento OnTick() - e não algum tipo de valor M1?
Tentei imprimir o que eu esperava ser o tempo real do tick com milissegundos usando o código abaixo, mas o valor de milissegundos é sempre zero...
EDIT: Como eu disse, sou relativamente novo em MQL5 - acabei de encontrar o SymbolInfoTick(), talvez eu devesse usá-lo em vez do que estou fazendo! Vou tentar isso e ver o que acontece...
Ok, isso não fez nenhuma diferença, exatamente os mesmos resultados, mas nenhum deles está vinculado à caixa de diálogo "Symbol Ticks" no terminal. Eu estava errado ao dizer que o valor de milissegundos era sempre zero - ele é diferente de zero por exatamente um minuto, ou seja, um minuto antes da meia-noite!
Esse me parece ser um problema muito importante. Meu EA de negociação espera receber ticks com preços que correspondam aos dados de tick importados da fonte (como qualquer outra pessoa faria!).Anexei um arquivo zip com o EA de teste, uma planilha de resultados para a hora de cada lado da meia-noite e algumas capturas de tela das configurações e dos ticks.
Receio que não esteja claro como você criou seu símbolo personalizado. Os arquivos csv anexados são os mesmos (aliás, não sei por que você precisa de duas cópias com nomes diferentes), e ambos têm o formato errado: os arquivos de ticks devem ter as seguintes colunas para serem importados para o símbolo personalizado do MT5: data, hora, compra, venda, último, volume. Portanto, atualmente não é possível criar um símbolo personalizado a partir de seus ticks sem manipulações adicionais.
Seria mais simples se você postasse imagens de ticks importados na interface do usuário do MT5 e o registro do seu EA lado a lado. As imagens apresentadas acima estão incompletas e os ticks parecem diferentes entre as imagens e em comparação com os arquivos csv.
Receio que não esteja claro como você criou seu símbolo personalizado. Os arquivos csv anexados são os mesmos (aliás, não sei o motivo pelo qual você precisa de duas cópias com nomes diferentes) e ambos têm o formato errado: os arquivos de ticks devem ter as seguintes colunas para serem importados para o símbolo personalizado do MT5: data, hora, compra, venda, último, volume. Portanto, atualmente não é possível criar um símbolo personalizado a partir de seus ticks sem manipulações adicionais.
Seria mais simples se você postasse imagens de ticks importados na interface do usuário do MT5 e o registro do seu EA lado a lado. As imagens apresentadas acima estão incompletas e os ticks parecem diferentes entre as imagens e em comparação com os arquivos csv.
Os dados de ticks foram importados para o MT5 como um símbolo personalizado de uma exportação do meu MT4 'Tick Data Suite' usando dados da Dukascopy (arquivos CSV com cerca de 8 GB de tamanho).
Os arquivos CSV que enviei não se destinam, de forma alguma, a serem importados como dados de tick; eles são as saídas do meu EA de teste (que foi anexado), que está registrando os preços de compra e venda e a hora de cada evento OnTick recebido. Os dois são simplesmente derivados por métodos diferentes - um usando SymbolInfoDouble(...) para obter os preços de compra e venda, e o outro usando SymbolInfoTick(...). O fato de serem iguais está simplesmente provando para mim mesmo que não há diferença entre os métodos.
O quequero dizer é que os preços e horários de compra e venda nos arquivos CSV registrados pelo EA de teste não correspondem à imagem dos ticks importados na interface do usuário do MT5 (que eu também enviei). Então...
Parece-me que há algo interferindo nos dados de ticks do símbolo personalizado em seu caminho entre o repositório e o evento OnTick do EA.
Abaixo, tentei combinar, o mais próximo possível, uma parte dos dados registrados pelo EA de teste (à esquerda) e pela interface do usuário do MT5 (à direita). É impossível alinhá-los com precisão porque há menos ticks registrados pelo EA do que os existentes na interface do usuário do MT5. Observe também que o valor de milissegundos registrado pelo EA de teste é zero até 23:59.
O evento destacado provavelmente é o mesmo tick, mas observe que o EA de teste registra preços diferentes da interface do usuário...
Você tem muitos "porquês", mas é difícil dar uma resposta (sem especulações). Há um problema em seu procedimento ou código-fonte.
O que você poderia fazer é publicar uma pequena parte de 8 Gb do histórico de ticks, que é fácil de importar para um símbolo personalizado e verificar seu código.
Normalmente, o SymbolInfoTick deve receber exatamente os mesmos ticks (incluindo o tempo de milissegundos) que você vê na GUI do MT5 para o mesmo símbolo personalizado.
Alguns ticks podem ser ignorados em seu EA se for necessário muito tempo para processar o tick anterior. Esse "muito" pode ser muito curto, pois os ticks podem surgir muito rapidamente. Se quiser ter certeza de que todos os ticks estão disponíveis no histórico, você deve chamar a função CopyTicks para o período desde o tick processado anteriormente. Mas esse não é o problema que você deve resolver agora - primeiro você deve descobrir o que há de errado com a abordagem atual.
Os dados de ticks foram importados para o MT5 como um símbolo personalizado de uma exportação do meu MT4 'Tick Data Suite' usando dados da Dukascopy (arquivos CSV com cerca de 8 GB de tamanho).
Os arquivos CSV que enviei não se destinam, de forma alguma, a serem importados como dados de tick; eles são as saídas do meu EA de teste (que foi anexado), que está registrando os preços de compra e venda e a hora de cada evento OnTick recebido. Os dois são simplesmente derivados por métodos diferentes - um usando SymbolInfoDouble(...) para obter os preços de compra e venda, e o outro usando SymbolInfoTick(...). O fato de serem iguais está simplesmente provando para mim mesmo que não há diferença entre os métodos.
O quequero dizer é que os preços e horários de compra e venda nos arquivos CSV registrados pelo EA de teste não correspondem à imagem dos ticks importados na interface do usuário do MT5 (que também enviei). Então...
Parece-me que há algo interferindo nos dados de tick do símbolo personalizado em seu caminho entre o repositório e o evento OnTick do EA.
Abaixo, tentei combinar, o mais próximo possível, uma parte dos dados registrados pelo EA de teste (à esquerda) e pela interface do usuário do MT5 (à direita). É impossível alinhá-los com precisão porque há menos ticks registrados pelo EA do que os existentes na interface do usuário do MT5. Observe também que o valor de milissegundos registrado pelo EA de teste é zero até 23:59.
O evento destacado provavelmente é o mesmo tick, mas observe que o EA de teste registra preços diferentes da interface do usuário...
Os ticks que seu EA está coletando parecem ser ticks simulados e não ticks reais. Verifique os registros do Strategy Tester.
Obrigado, Alain, concordo plenamente. Os dados de ticks estão na interface do usuário, mas, quando chegam ao EA, parece que ele pega o primeiro par Bid/Ask que encontra e aplica esse spread durante o próximo minuto - ou algo assim.
De qualquer forma, dei uma olhada no log (em anexo), mas não tenho muita certeza do que espero ver, portanto, ficaria grato se você pudesse dar uma olhada e ver se consegue identificar o que está acontecendo de errado.
Muito obrigado, David.
Obrigado, Alain, concordo plenamente. Os dados de ticks estão lá na interface do usuário, mas quando chegam ao EA, parece que ele pega o primeiro par Bid/Ask que encontra e aplica esse spread durante o próximo minuto - ou algo assim.
De qualquer forma, dei uma olhada no log (em anexo), mas não tenho muita certeza do que espero ver, portanto, ficaria grato se você pudesse dar uma olhada e ver se consegue identificar o que está acontecendo de errado.
Muito obrigado, David.
Seu registro diz "every tick generating", o que significa ticks artificiais. Deveria ser "gerando com base em ticks reais". Consulte a documentação do testador.
Novamente, se quiser que outra pessoa teste seu símbolo personalizado, forneça um arquivo CSV compatível, não em seu próprio formato.
Seu registro diz "every tick generating", o que significa ticks artificiais. Deveria ser "generating based on real ticks" (gerando com base em ticks reais). Consulte a documentação do testador.
Novamente, se quiser que outra pessoa teste seu símbolo personalizado, forneça um arquivo CSV compatível, não em seu próprio formato.
Obrigado, Stanislav, agradeço a ajuda de todos, mas não estou chegando a lugar algum.
Verifiquei a documentação e não encontrei nada que me dissesse por que o testador geraria ticks artificiais quando ele tem um conjunto completo de dados de ticks disponíveis! Na verdade, ele afirma...
Repito que os arquivos CSV são a saída do meu EA de teste, que está simplesmente escrevendo os preços dos ticks que recebe e não tem nada a ver com os dados de ticks que importei para o símbolo personalizado - portanto, seu formato é completamente irrelevante.
Ok, o que eu fiz...
Porque você não selecionou"Every tick based on real ticks " nas configurações do testador:
Também me deparei com "HistoryCache: erro de leitura do cabeçalho do contêiner [0]" seguido de "HistoryBase: contêiner inválido (1970.01.01) encontrado".
Isso remove o histórico de janeiro de 2022 do histórico da ferramenta personalizada, obtendo uma lacuna de 31 de dezembro até hoje.
Isso ocorre apenas em dois computadores, os recursos são suficientes.
@Slava, quais detalhes você precisa para reproduzir?
Aconteceu novamente. Parece que foi durante a meia-noite:
Para que lado cavar?
Porque você não selecionou"Every tick based on real ticks " nas configurações do testador:
Aa, finalmente :-)
Como eu disse, estou muito mais familiarizado com o MT4 (cerca de 8 anos) e não tinha percebido que havia duas opções "£Every Tick" no MT5. Eu simplesmente o iniciei, vi que estava definido como "Every Tick" e presumi que, se houvesse ticks reais, ele os usaria.
Tinha que ser algo simples e agradeço novamente por tê-lo detectado.
David.