English Русский 中文 Español Deutsch 日本語
Verificador no terminal MetaTrader 4: Deve-se saber

Verificador no terminal MetaTrader 4: Deve-se saber

MetaTrader 4Testador | 22 fevereiro 2016, 12:32
1 016 0
MetaQuotes
MetaQuotes

Introdução

É impossível trabalhar em mercados financeiros sem um sistema de trading. Os operadores gastam muito tempo e esforço desenvolvendo regras de posições de abertura e fechamento, estes métodos de modificar posições por paragem de rastreamento são empiricamente selecionados. Conhecimentos de diferentes áreas da ciência são utilizados. E quando a estratégia é criada, a primeira coisa a fazer é testar o sistema de trading mecânico (MTS) em dados do histórico. Isso significa que o dispositivo de teste torna-se o componente mais importante de todo o programa.


Dois tipos de modelagem:

Nem todos os programas de análise técnica (TA) possuem a opção de teste e nem todos os terminais! Mesmo se um programa for indicado de ter um verificador e possui a opção de teste, ele pode ter erros ou restrições de arquitetura e proibições. É por isso que durante o desenvolvimento do verificador para o terminal MetaTrader4 foi muito importante incluir antecipadamente as soluções de arquitetura que dificultam a existência de toda uma classe de estratégias baseadas no conhecimento futuro. Há duas maneiras de testar programas de qualquer estratégia:

  • Com base nas barras já compostas, prepare com antecedência um arquivo de dados que conterá todos os valores necessários de preços, indicadores e outros parâmetros, depois, envie esse arquivo para o verificador (que gera a sequência necessária com possibilidade teórica para mergulhar no futuro). A informação é recebida na forma de barras já compostas sem modelar a formação de barras de preços;


  • prepare um arquivo contendo apenas preços modelados, e envie as mudanças de preço (preço dos créditos) para a entrada do verificado, como na vida real. Aqui o verificador não tem futuro inerentemente.

O triângulo "hora atual" indica um local onde o dispositivo de teste está localizado no ponto de tempo presente. No primeiro caso, vemos o tempo passado (Anterior), onde o verificador processou os dados, e o tempo futuro (Futuro), onde o testador irá operar. Ambos, passado e futuro, já são calculados (indicadores, preço de fechamento, preço de abertura, Alta e Baixa), o verificador apenas segue esta sequência. E se houver uma possibilidade de ver futuro (real ou de erro), os resultados dos testes precisarão de uma verificação completa. O fechamento das possibilidades já conhecidas não garante que não haja outras possibilidades. Isto é, eventualmente, um problema constante para um desenvolvedor de verificador ou para um usuário.

No segundo caso, temos apenas o tempo anterior (Anterior), não há futuro inerentemente (um quadrado escuro). Nesta abordagem temos sempre somente a informação sobre o passado e nenhuma informação sobre o futuro, como no trading real. Em cada crédito novo (alteração de preço) no verificador nos movemos no presente, o triângulo de tempo atual se move para a direita para o novo tempo conhecido e recebe novos preços. Cada crédito novo cria o presente, aumenta a informação sobre o passado e ainda possui um futuro sombrio e desconhecido antes dele. Neste caso o verificador não tem a possibilidade de ver um futuro inerentemente, independentemente dos erros que um operador poderia cometer ao escrever uma estratégia.

Precisamente, esta é a diferença entre as duas abordagens. A primeira abordagem de criação do verificador fornece a simplicidade e a rapidez ilusória do teste, a segundo abordagem dá a certeza de que todas as estratégias escritas se comportarão absolutamente do mesmo modo que no trading em tempo real em mudanças de preços iguais. É por isso que as sequências, modeladas para o verificador são armazenadas como arquivos, contendo retratos do estado da barra (arquivofxt ), que podem ser abertas como um gráfico usual utilizando o menu "Arquivo" - >> "Abrir Offline".


Os arquivos do verificador são marcados por um ícone com a letra G (gerado) e fornecem informações sobre o tipo de modelagem, a faixa de variações de preços modelados, número de barras e calendário:

Por exemplo, se abrirmos o arquivo EURUSD M15, veremos o caminho, um barra de 15 minutos foi modelada para o verificador:



A imagem mostra o progresso de uma barra no intervalo de tempo de 15 minutos. Ao testar um Expert Advisor, o verificador viu esse castiçal de 15 minutos (21/04/2006 10:00) exatamente em tal sequência. O número de mudanças de preços em uma barra de um minuto é igual ao número de castiçais que mudam durante o teste. Assim, em cada ponto de tempo o verificador vê um preço correto de Abertura (que é fixo e e igual a Abertura [0]), preços de máxima e mínima corretos (que podem mudar durante o período de progresso da barra), igual a Alta[0] e Baixa [0] atual, e o último preço de Compra conhecido, igual ao preço atual de Fechamento [0], que muda antes do fechamento da barra. Os volumes também são modelados maximamente e corretamente, o que é evidente a partir do crescente histórico verde de volumes, como em um gráfico simples. A linha vermelha quebrada significa indicador de Média Móvel (média móvel simples) com o período 1. Esta média móvel mostra a posição de Fechamento em cada momento de tempo durante o teste.

Importante! O verificador no MetaTrader 4 processa cada mudança de preço e não deixa maneiras de mergulhar no futuro.


Modelagem em diferentes tempos de um símbolo testado

O verificador no MetaTrader 4 permite ver não só o calendário testado, mas também outros prazos - superiores e inferiores. Assim, se testarmos um Expert Advisor no calendário EURUSD M15, podemos ver os valores dos indicadores para EURUSD H1 ou EURUSD M5. Nós também podemos ver os preços máximos e mínimos da atual barra zero em qualquer calendário EURUSD disponível. Se precisarmos de obter o preço máximo do dia atual, nós simplesmente exibimos o valor iHIGH (NULL, PERIOD_D1,0) É como no trading online. Não faz diferença em que calendário testamos o Expert Advisor ou em que gráfico de qual calendário ele está anexado no modo de tempo real.

Assim, a tarefa do verificador é modelar corretamente não só o calendário atual, mas também todos os outros calendários necessários. Esta tarefa é resolvida no verificador da seguinte forma: o progresso da barra na barra zero atual é modelado assim como todos os outros calendário são modelados da mesma maneira. O recebimento de cada crédito novo modifica a informação sobre a condição da barra zero em cada calendário, tudo é feito de forma sincronizada. Aqui está uma imagem:



A cor azul indica barras completas. A cor verde indica a alteração atual da barra zero. Figuras +1 denotam o recebimento de um novo crédito. Cada crédito é imediatamente recebido por todos os calendários modelados. Para certificar-se, você pode iniciar os testes de um Expert Advisor simples CheckModelling.mq4, que mostra os preços disponíveis para o verificador em cada ponto de tempo.

Todos os calendários solicitados (não apenas os preços, mas também volumes) estão corretamente modelados. O verificador vê o progresso do preço sincronizado em cada calendário, como na vida real:


É claro, que o preço de Baixa para o período de tempo de 15 minutos difere do preço de Baixa de um período de tempo maior. O mesmo acontece com o preço de Alta. No entanto, o preço de Compra em todos os calendários é o mesmo na recepção de um novo crédito.

Importante: todos os calendários dos símbolos testados também são modelados corretamente - Preços de Abertura, de Alta, de Baixa e de Fechamento são modelados 100% corretamente. Volumes de calendários mais altos também são modelados 100% corretamente.


Modelagem de preços em outros símbolos

A quantidade de dados modelados para um teste preciso do histórico às vezes é grande e pode requerer mais recursos da memória e do processador. O verificador no MetaTrader 4 não permite carregar o portfólio do teste, mas as tecnologias de computação são desenvolvidos de modo rápido, que, provavelmente, em breve, seremos capazes de realizar um teste preciso de estratégias complexas com posições abertas em vários símbolos. No entanto, o verificador no MetaTrader 4 permite receber informações sobre preços de outros símbolos, diferente daquele testado. Mas neste caso, a modelização não é carregada, os dados são extraídos como são. A barra zero é simplificada para a introdução no início do seguinte processo: Alta[0]=Baixa[0]=Fechamento[0]=Abertura[0], Volume[0]=1 que permite saber o preço no início da barra, mas sem preço no final. Para se certificar, basta testar um simples Expert Advisor em EURUSD no modo "Cada crédito".

//+------------------------------------------------------------------+
//|                                               CheckModelling.mq4 |
//|                      Copyright © 2007, MetaQuotes Software Corp. |
//|                                        https://www.metaquotes.net/     |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2007, MetaQuotes Software Corp."
#property link      "https://www.metaquotes.net/"
 
//---- input parameters
extern int       DayS=21;
extern int       MonthS=4;
extern int       YearS=2006;
extern int       HourS=10;
extern int       MinuteS=00;
extern int       CounterS=20;
int counter;
int start()
  {
//----
   if (counter>CounterS) return;
   if (Year()<2006) return;
   if (Month()<MonthS) return;
   if (Day()<DayS) return;
   if (Hour()<HourS) return;
   if (Minute()<MinuteS) return;
   Print("My time frame   "," Open=",Open[0],"  High=",High[0],"   Low=",Low[0],
      "  Close=",Close[0],"  Volume=",Volume[0],"  Bid=",Bid);
   Print("30 minute frame "," Open=",iOpen(NULL,PERIOD_M30,0),"  High=",iHigh(NULL,PERIOD_M30,0),
      "   Low=",iLow(NULL,PERIOD_M30,0),"  Close=",iClose(NULL,PERIOD_M30,0),
      "  Volume=",iVolume(NULL,PERIOD_M30,0),"  Bid=",Bid);
   Print("1 hour frame    "," Open=",iOpen(NULL,PERIOD_H1,0),"  High=",iHigh(NULL,PERIOD_H1,0),
      "   Low=",iLow(NULL,PERIOD_H1,0),"  Close=",iClose(NULL,PERIOD_H1,0),
      "  Volume=",iVolume(NULL,PERIOD_H1,0),"  Bid=",Bid);
   Print("4 hour frame    "," Open=",iOpen(NULL,PERIOD_H4,0),"  High=",iHigh(NULL,PERIOD_H4,0),
      "   Low=",iLow(NULL,PERIOD_H4,0),"  Close=",iClose(NULL,PERIOD_H4,0),
      "  Volume=",iVolume(NULL,PERIOD_H4,0),"  Bid=",Bid);
 
   counter++;  
//----
   return(0);
  }
//+------------------------------------------------------------------+

Cálculo de indicadores durante a modelagem

Há dez anos, o desempenho insuficiente de computadores domésticos e estações de trabalho definiam restrições sobre os desenvolvedores de software. Memória operacional limitada, frequência do processador abaixo de 100 MHz - tudo isso permitiu a apenas a utilização de tipos de cálculos e testes de trading eficientes em espaço. O teste Intrabarra não existia, todos os indicadores necessários eram calculados previamente e testados de uma forma pronta e imutável. O teste Intrabarra não existia, todos os indicadores necessários eram calculados previamente e testados de uma forma pronta e imutável. Nesta abordagem recebemos valores corretos dos indicadores apenas para o momento do fechamento da barra, a utilização destes dados na barra zero significou uma imersão no futuro.

O verificador no MetaTrader 4 não recebe quaisquer dados calculados, só recebe progresso de preço modelado, e na base dos novos preços recebidos todos os indicadores necessários são calculados durantes o teste. Isto é, todos os indicadores são calculados da mesma forma que são calculados durante o funcionamento online. Esta é uma vantagem suficiente do verificador, mas se o algoritmo do indicador não é o ideal, um testo do EA podem torná-lo devagar substancialmente. O cálculo do indicador no verificador é tão rápido quanto no terminal, e um algoritmo não otimizado pode ser invisível. Mas no verificador MetaTrader 4 durante o cálculo em milhões de barras ( um histórico de um minuto do EURUSD a partir de 1999 contém quase três milhões de barras) qualquer não-otimização torna-se óbvia. Não esqueça que cada crédito de modelagem de uma barra de minuto não fornece apenas um, mas vários créditos, cada um deles calculado pelo verificador.

Hoje em dia os processadores possuem gigabytes de memória operacional e frequência de vários gigahertz, a arquitetura de 32-bit foi substituída por sistemas de 62 bits, até mesmo surgiu o multiprocessamento. Mas ainda há muitas pessoas que operam com as categorias do século passado e se referem a todas as desvantagens dos programas e desenvolvedores TA da geração anterior para o verificador MetaTrader 4. Essas pessoas temem a modelagem intrabarra, eles consideram que isto é uma operação incorreta do verificador. O verificador no MetaTrader 4 comprova não só a possibilidade de uma modelagem de preço correta em qualquer período de tempo, mas também a necessidade desta abordagem em testes de estratégia baseados no histórico.

Você pode assistir o vídeo e estimar a evolução dos preços e o cálculo de indicadores no verificador.


Importante: o verificador realiza um modelo real de teste que requer certos recursos.


Perguntas frequentes, resultado do desconhecimento da Modelagem correta de preço no verificador

MetaTrader 4 foi lançado oficialmente no dia 1 de julho de 2005, e desde então as mesmas perguntas aparecem em diferentes fóruns, e as questões estão conectadas com a operação incorreta do verificador. Aqui estão as perguntas mais frequentes resultantes dos mitos sobre os verificadores do passado.

  • Por que meu Expert Advisor, utilizando um indicador, abre trades em uma localização errada?

    Após o teste ser concluído, você pode usar o botão "Open Chart" para abrir um gráfico, refletindo todos os pontos de entrada e saída, bem como os indicadores que foram chamados a partir do Expert Advisor. Mas, muitas vezes ignora-se que os valores do indicador, no momento dado, calculados a partir do histórico, podem diferir significativamente dos valores que estavam no momento do teste (na verdade, online). Um bom exemplo é o indicador ZigZag.

    Abrindo o gráfico de teste do EA, onde este indicador foi utilizado, podemos ver claramente todas as quebras do ZigZag. Poderíamos esperar um bom lucro a partir de uma estratégia baseada no acompanhamento de tais quebras na barra zero. Aqueles que não entendem o princípio de funcionamento do verificador MT4 pensam erroneamente que tal estratégia deve mostrar o lucro absoluto no verificador porque em outros programas TA o futuro é visto por tais estratégias. Mas nós não vemos qualquer lucro, além disso os trades são abertos em um local errado! Inicie os testes no modo de visualização, anexe ao gráfico todos os indicadores usados no EA e, assim, as ilusões se dissolverão! Isto não requer conhecimento especial - o verificador exibirá tudo no modo de visualização. Aqui está o exemplo de tal EA - ExpertZigzag:


    Importante: Se não tiver certeza sobre a exatidão da operação testador, utilize o teste de visualização. Você verá o processo de testes como ele realmente é, e não como você pensa que ele seja.


  • Por que os valores do indicador nos testes e os valores do indicador no gráfico online não são iguais?

    Um dos erros durante a escrita do indicador é o cálculo incorreto dos valores dos indicadores e o paralogismo. Como resultado, o indicador começa a "mentir" e recolher os erros. Em outras palavras, ontem o indicador apresentou valores diferentes dos de hoje no mesmo período.

    O erro de tais indicadores também pode ser visto na operação online do indicador. Por exemplo, anexamos o indicador a um gráfico de 15 minutos, aguardamos o aparecimento de 3-4 novas barras e em seguida, anexamos mais um indicador desse tipo, mas usando outras cores. A diferença é muitas vezes vista visualmente. Aqui está um breve exemplo de um indicador incorreto:


    Importante: indicadores são calculados durante o teste, como durante a operação online, por isso, todos os erros na lógica do indicador tornar-se aparente no processo de teste!


  • Por que meu EA vê preços errados de um período de tempo maior apesar de eu ter importado meu próprio histórico profundo?

    Para modelagem, o verificador utiliza dados do arquivo fxt. Normalmente este arquivo fxt é gerado pelo verificador baseado no histórico disponível nos arquivos hst. Mas se o arquivo FXT preparado foi gerado em outro fuso horário, ou em cotações de outra corretora (ou preparado por você mesmo - o formato do arquivo fxt é aberto), e os dados neste arquivo fxt não corresponder com o dados nos arquivos hst correspondentes, podem ocorrer diversos erros. Normalmente, isso pode acontecer depois de uma importação manual e reconversão de cotações de fontes colaterais.

    Por exemplo, o EA chama a função iOpen(NULL, PERIOD_D1,1) ou iHighest(NULL, PERIOD_D1,MODE_HIGH,20,1). iOpen(NULL, PERIOD_D1,1) solicitando o preço de abertura do dia anterior no mesmo símbolo em que o teste é realizado. iHighest(NULL,PERIOD_D1, MODE_HIGH,20,1) fornece o índice da barra diária com o maior valor de Alta dentro de 20 barras a partir da primeira (de ontem). Ambas as funções no verificador são calculadas com base nos dados dos arquivos hst.

    E se o arquivo fxt não corresponder com o histórico dos arquivos hst (neste exemplo, dados sobre EURUSD1440.hst), os preços no verificador serão absolutamente diferentes. Temos dois históricos diferentes - o primeiro está no verificador, o outro está no arquivo EURUSD*hst.

    Importante: um teste correto requer correspondência entre os dados nos arquivos fxt e hst.. É indesejável usar patch de importação de fontes colaterais. Utilize o Centro de Histórico padrão com o histórico de cotações por minuto a partir de 1999. As cotações por minuto do Centro de Histórico são recalculadas automaticamente em todos os calendários e são convertidas para o fuso horário da conta corrente, eliminando o "deslocamento de tempo".


  • Por que após a importação das minhas cotações, os indicadores de períodos de tempo maiores encontram-se no verificador?

    Enquanto apenas os preços da barra zero são modelados, os valores dos indicadores padrão e personalizados em outras barras são calculados com base nos dados dos arquivos hst. Isto é, valores corretos dos indicadores não podem ser calculados sem a fonte de dados correta de outros calendários.

    Importante: antes de iniciar o teste certifique-se que todos os dados necessários de preços de outros calendários sejam fornecidos e que estes dados estejam corretos. O Centro de Histórico padrão providencia a exatidão de todos os prazos pois ele automaticamente recalcula a partir dos dados do minuto todos os outros períodos.


Conclusão

O verificador no MetaTrader 4 é o resultado de uma longa experiência de escrita de várias gerações de terminais de trading desde o ano de 2000. Tudo foi feito para fornecer para os operadores a oportunidade de testar estratégias com a máxima correção possível. Isso elimina a necessidade de um teste de vários meses de ideias de trading em tempo real. Mas saber todas as opções do verificador ajuda a economizar tempo e perceber melhor a importância de indicadores corretos e desenvolvimento do EA.



Traduzido do russo pela MetaQuotes Ltd.
Artigo original: https://www.mql5.com/ru/articles/1490

Arquivos anexados |
CheckModelling.mq4 (2.52 KB)
ExpertZigzag.mq4 (1.46 KB)
Como cortar um Código de EA para uma vida mais fácil e menos erros Como cortar um Código de EA para uma vida mais fácil e menos erros
Um conceito simples descrito no artigo permite que as pessoas que desenvolvem sistemas de trading automatizados em MQL4 simplifiquem os sistemas de trading existentes, bem como reduzir o tempo necessário para o desenvolvimento de novos sistemas devido a códigos mais curtos.
Interação entre o MetaTrader 4 e o Matlab através de arquivos CSV Interação entre o MetaTrader 4 e o Matlab através de arquivos CSV
Instruções detalhadas de como organizar o intercâmbio de dados das matrizes entre o MetaTrader 4 e o Matlab através de arquivos CSV.
Matemática na negociação: Como estimar resultados de trading Matemática na negociação: Como estimar resultados de trading
Nós todos sabemos que "Nenhum lucro obtido no passado garantirá algum sucesso no futuro". No entanto, ser capaz de estimar sistemas de negociação, ainda é muito atual. Este artigo trata sobre alguns métodos simples e convenientes que ajudarão a estimar resultados de trade.
MT4TerminalSync - Sistema para sincronização de terminais MetaTrader 4 MT4TerminalSync - Sistema para sincronização de terminais MetaTrader 4
Este artigo é dedicado ao tema "Ampliando as possibilidades de programas MQL4 utilizando funções de sistemas operacionais e outros meios de desenvolvimento do programa". O artigo descreve um exemplo de um sistema de programa que implementa a tarefa da sincronização de várias cópias de terminais com base num único molde de origem.