English Русский 中文 Español Deutsch 日本語 한국어 Français Italiano Türkçe
O algoritmo de geração de pontos (ticks) dentro do examinador de estratégia da plataforma MetaTrader 5

O algoritmo de geração de pontos (ticks) dentro do examinador de estratégia da plataforma MetaTrader 5

MetaTrader 5Testador | 5 março 2014, 15:28
7 920 0
MetaQuotes
MetaQuotes

Criando Conselheiros Especialistas - sistemas de negociação automatizados no MQL5

A plataforma MQL5 contém um ambiente de desenvolvimento integrado para o desenvolvimento de estratégias totalmente automatizadas (robôs de negociação) que podem realizar negociações sem qualquer intervenção humana. Um outro nome para esses robôs de negociação é Conselheiros Especialistas. Os Conselheiros Especialistas. e os indicadores técnicos para a plataforma MetaTrader 5 são escritos usando a linguagem MQL5, a qual abrange todas as vantagens das linguagens de programação modernas.

  • velocidade de execução;
  • suporte da programação orientada ao objeto (OOP);
  • capacidade de depurar.

A capacidade de depurar programas no MQL5 permite criar um código com o máximo nível de segurança possível, mas apesar de necessária, esta não é a única condição exigida para o desenvolvimento de um sistema de negociação lucrativo. Os sistemas de negociação, os quais são capazes de demonstrar resultados positivos ao longo de um grande intervalo de dados históricos, são chamados de robustos que é derivado da palavra inglesa "robust" que significa tolerante a falhas e erros.


Testando as estratégias de negociação

Antes de confiar seu capital a um Conselheiro Especialista, você deve se certificar que suas regras de abertura e fechamento das posições, assim como as regras de administração do dinheiro, permitem a expectativa de lucro. A maneira mais fácil de testá-lo é simular o trabalho do Advisor usando os dados históricos disponíveis.

A plataforma do cliente MetaTrader 5 possui um componente integrado especial, um examinador de estratégia para obter os resultados do trabalho do Advisor com os dados históricos. O processo de funcionamento de uma execução do Conselheiro Especialista em um intervalo de datas é chamado de teste do Conselheiro Especialista. Esse teste de uma vez nos fornece uma ampla quantidade de informações úteis, necessárias para tirar conclusões sobre a robustez do Conselheiro Especialista.

Mas para ser capaz de confiar nesses resultados, o processo de teste deve exemplificar o ambiente atual real, no qual o Conselheiro Especialista é executado, o mais perto possível. O examinador MetaTrader 5 utiliza a modelagem de preços ponto a ponto (tick by tick), usando os valores históricos das diversidades para cada instrumento, nos quais a operação de negociação acontece.


Uma pequena história sobre o examinador de estratégia


MetaTrader 3

O primeiro examinador de estratégia apareceu inicialmente na plataforma MetaTrader 3. Esse era um examinador relativamente simples pelos padrões modernos; ele realizava testes baseado em três modelos de desenvolvimento de preços na barra:
  • O modelo de quatro preços - o preço consecutivamente passava pelos estágios de Abertura, Baixa, Alta e Fechamento para a vela em alta, e para a vela em baixa ele passava pela Abertura, Alta, Baixa e Fechamento;
  • O modelo "Every 1 point" (a cada 1 ponto) - utiliza um modelo de onda 3-5-3 no qual o preço vai consecutivamente através de uma onda três, então uma onda cinco, e então outra onda três, com um aumento de 1 ponto;
  • O modelo "Spread / 2" (diferença) - utiliza o mesmo modelo do "Every one point", mas o aumento do preço é metade da diferença, indicado pelo usuário.

A modelagem de preço tem sido sempre baseada nas barras do período de tempo testado, a informação dos períodos mais baixos não era utilizada. O examinador da plataforma MetaTrader 3 tem muitas falhas, incluindo a velocidade de teste lenta, baixa precisão, e a ausência de otimização do Conselheiro Especialista pelos parâmetros de entrada.

MetaTrader 4

A plataforma MetaTrader 4 substituiu a terceira plataforma e incluiu uma nova linguagem compilada MQL4 (o anterior MQL-II foi interpretado), assim como pegou uma abordagem para teste absolutamente nova. Agora o teste poderia ser realizado em três modos:

  • Cada ponto (Cada tick) - geração dos pontos dentro da vela, permite uma modelagem mais próxima possível do trabalho do Conselheiro Especialista para a negociação real, dentro do ambiente de teste;
  • Pontos de verificação (pontos de controle) - um compromisso entre a precisão e a velocidade do teste;
  • Pela abertura dos preços (preço de abertura) - o lançamento do Conselheiro Especialista é feito apenas na abertura da vela, isso permite uma avaliação muito rápida da estratégia.

Uma diferença importante do examinador da terceira plataforma era que a estratégia de teste da plataforma MetaTrader 4 utilizava os dados de preço do mais novo quadro de tempo disponível para a simulação de negociação. Portanto, com a presença do histórico de minuto, durante todo o intervalo testado, os resultados do teste são o mais próximo possível dos resultados obtidos online. Na ausência dos quadros de tempo subjacentes, a simulação do desenvolvimento do preço dentro da barra é gerada da mesma forma que na plataforma de teste do MetaTrader 3.

Além disso, obtivemos uma oportunidade de realizar otimização pela enumeração direta dos parâmetros de entrada, bem como a utilização de uma algoritmo genético. Isso nos deu a oportunidade de acelerar significativamente o processo de otimização, especialmente para as estratégias com um amplo número de parâmetros de entrada. é possível agora conduzir o teste real no regime visual. Esse foi um grande passo, que foi reconhecido pelos negociadores.

A nova plataforma MetaTrader da 5ª geração é baseada na experiência adquirida do modelo das plataformas anteriores, e isso se aplica ao examinador de teste. Agora existe uma oportunidade de realizar testes de estratégias pluri monetárias, ou seja, as estratégias que são negociadas simultaneamente em vários instrumentos.

A otimização da estratégia pode agora ser realizada não apenas em todos os núcleos de processador disponíveis, mas também nos agentes remotos, localizados em outros computadores na LAN e na rede mundial de internet. Isso permite desenvolver as potências do examinador e realizar cálculos em nuvem, os quais eram incessíveis anteriormente, diretamente na linguagem do MQL5.

Mas para um entendimento básico do processo de teste na plataforma MetaTrader 5, é fundamental ser capaz de entender como a modelagem de preços no examinador de estratégia ocorre.


Algoritmo de geração de pontos

O examinador de estratégia da plataforma MetaTrader 5 utiliza apenas um modo de modelagem de preço no teste - a geração de pontos na base dos dados históricos existentes nos quadros de tempo de minuto dos símbolos usados. Os modos restantes de simulações no MetaTrader 4 foram removidos, pois apesar de sua alta velocidade, eles falhavam ao fornecer uma alta precisão de teste.

Utilizar um quadro de tempo M1 no examinador permite uma simulação muito precisa do movimento do preço, com um número mínimo de erros, em contraste com a simulação dos pontos com base nos quadros de tempo superiores. Como resultado, os erros na modelagem de preços no examinador de estratégia do MetaTrader 5 são triviais, e as diferenças entre o preço simulado e o preço que ocorreu na realidade, pode apenas estar dentro da escala de uma barra de minuto.

A capacidade de realizar otimização nos agentes locais e remotos, nessa abordagem, pode compensar o aumento no tempo de teste. A geração dos pontos é baseada nas entradas de minuto de cache em um formato inteiro. Portanto, a geração dos pontos é feita rapidamente.

As barras de todos os quadros de tempo necessários são formadas na base de dados histórica do examinador na forma usual (tal como na plataforma do cliente) com o recebimento dos pontos gerados. O volume 1 do tick da barra de minuto não está sujeito a qualquer geração - ele pode ser escrito com o valor de Fechamento.


Uma barra com 2 pontos também não é gerada - primeiro seu valor de ponto é gravado como Aberto, então um ponto com um valor de Fechamento é gravado.

          



Uma barra com 3 pontos é gerada de acordo com um esquema, para as barras de três pontos existem 4 padrões de desenvolvimento da barra:
  1. Foi em uma direção e retornou ao nível de Aberto




  2. Foi para um lado, retrocedeu, e alcançou um nível Aberto




  3. Foi em uma direção, retrocedeu, mas não alcançou o nível de Aberto




  4. Vários pontos em uma direção.




Ponto de apoio

Se a barra tem mais de 3 pontos, então primeiro os pontos de apoio são gerados. O número de pontos de apoio não pode ser maior que o volume do tick. O preço de abertura não é incluído na conta do número de pontos de apoio, já que ele é o ponto de partida. O número máximo de pontos de apoio - 11.

Os pontos de apoio são distribuídos entre a sombra de abertura, a escala da vela, e a sombra de fechamento da vela. 


Dependendo do número de pontos a distribuição dos pontos de apoio é a seguinte (sombra de abertura - escopo da vela - sombra de fechamento):

3 - 5 - 3
2 - 6 - 2
2 - 5 - 2
2 - 4 - 2
2 - 3 - 2
1 - 4 - 1
1 - 3 - 1
1 - 2 - 1
1 - 1 - 1
Se a vela não tem uma das sombras, então os pontos de apoio dessas sombras são dados à magnitude das velas.



O escopo da vela é gerado por um número ímpar de pontos de apoio. Se o escopo tem um número par de pontos de apoio, então um ponto "extra" é dado a uma das sombras sob a condição de que a sombra já tenha dois pontos. Caso contrário, o ponto "extra" simplesmente desaparece.

Os valores dos pontos de apoio representam a diferença entre o preço do ponto de apoio e o preço de abertura das velas. A distribuição ideal (3-5-3) dos pontos de apoio para uma vela em alta (branca) é a seguinte:





Para uma vela em baixa (preta) a geração dos pontos de apoio no padrão 3-5-3 é semelhante:




Se esta vela é uma doji, ou seja, Fechado == Aberto, então as velas anteriores são analisadas, se a vela anterior estava crescendo, então esta doji é considerada como sendo uma vela descendente.



Se a sombra é gerada usando três pontos de apoio e os valores inteiros 3 / 4 do tamanho da sombra e 1 / 2 do tamanho da sombra são iguais (isso acontece quando a diferença entre Aberto e Baixo ou Aberto e Alto não é maior de 2 pontos), então a geração da sombra muda da seguinte forma:

 

Se a sombra é gerada por dois pontos de apoio, então os pontos de controle são organizados da seguinte forma:





A sombra de fechamento é gerada de modo semelhante.


Formação de um solo de pontos de apoio de baixo para cima.

O escopo da vela é gerado pelo impulso das ondas, o número de ondas é calculado assim:

número de ondas = (número de pontos de apoio no escopo + 1) / 2.

Por exemplo, se o número de pontos de apoio no escopo da vela for igual a 5 (Figura 3-5-3), então 3 ondas serão geradas = (5 +1) / 2.

Cada onda de impulso tem um passo de extensão em pontos que é calculado pela fórmula:

passo=(alto-baixo-1)/(quantidade de ondas)+1

Por exemplo, o escopo das velas (Alto - Baixo) = (1.3113 - 1.3100) = 0.0013 é 13 pontos, enquanto o passo do comprimento da onda = (13-1) / 3 +1 = 5 pontos.

Após o impulso os pontos do passo devem ser revertidos por um ponto. Mais adiante no ciclo as posições dos pontos de apoio são calculadas (para uma vela em alta):


prev=baixa
ciclo
  n1=prev+passo
  n2=prev+passo-1
  prev=n2

onde:

  • n1 - o primeiro impulso do ponto de apoio
  • n2 - segundo ponto de apoio - o ponto de recuo.

Vamos atribuir esse algoritmo às velas em alta em um esquema de 3-5-3, onde o número de ondas é igual a 3 e o passo = 5 pontos, ponto = 0.0001:

  1. Primeiro passo: Variável prev = Baixa = 1.3100, entre no ciclo.
  2. Calcule os dados para a primeira onda
    • Calculamos a posição do ponto n1 = prev + passo = 1.3100 + 5 * 0.0001 = 1.3105.
    • Calculamos a posição do ponto n2 = prev + passo-1 = 1.3100 + 5 * 0.0001-1 * 0.0001 = 1.3104;
    • Atribuímos o valor n2: prev = 1,3104 à variável prev;
  3. Calcule os dados para a segunda onda
    • Calcule a posição do ponto n1 = prev + passo = 1.3104 + 5 * 0.0001 = 1.3109.
    • Calculamos a posição do ponto n2 = prev + passo-1 + 5 = 1.3104 * 0.0001-1 * 0.0001 = 1.3108;
    • Atribua o valor de n2: prev=1.3108 à variável prev;
  4. Calcule os dados para a terceira onda
    • Calculamos a posição do ponto n1 = prev + passo = 1.3108 + 5 * 0.0001 = 1.3113.
    • Saia do ciclo, prev = n2 = 1.3112

Todo o exposto acima é demonstrado para maior clareza na imagem:


O cálculo dos pontos de apoio para as velas em baixa é feito da mesma forma.


prev=alta
ciclo
  n1=prev-passo
  n2=prev-passo+1
  prev=n2


A geração dos pontos é realizada com base nos pontos de apoio

Os pontos intermediários entre os pontos de apoio são gerado de acordo com as seguintes regras:
  • Se o número de pontos for maior que o número de pontos entre os pontos de apoio, então uma "serra" é gerada.
  • Se existir um número de pontos entre os pontos de apoio, então uma sequência linear de pontos é gerada.


Verificação da sequência de tick

Para concluir, vamos comparar o histórico do tick, gravado a partir do servidor MetaQuotes-Demo em 13 de maio de 2010 de 13:00 às 13:30, com uma sequência de ponto gerada pelo examinador na plataforma do cliente MetaTrader 5. Um Conselheiro Especialista foi usado para gravar os pontos dentro do registro do agente:

//+------------------------------------------------------------------+
//|                                                  Write_Ticks.mq5 |
//|              Copyright Copyright 2010, MetaQuotes Software Corp. |
//|                                              https://www.mql5.com |
//+------------------------------------------------------------------+

input datetime start=D'2010.05.13 13:00:00';
input datetime end=D'2010.05.13 14:00:00';

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   MqlTick tick;
   datetime time=TimeCurrent();
//---
   SymbolInfoTick(Symbol(),tick);
   Print(time,tick.bid);
//---
   if(time>end) ExpertRemove();
//---
  }

O histórico dos pontos foram coletados online, utilizando o indicador descrito no artigo Criando indicadores de ponto.

Ambas as sequências de ponto - a do examinador e a armazenada em um arquivo - estão representadas no gráfico. Os pontos obtidos durante o teste estão representados pela cor verde, e os pontos obtidos no servidor de negociação MetaQuotes-Demo, e gravados no indicador do arquivo, estão representados pela cor azul.

Você pode apontar o mouse para qualquer ponto no gráfico e ler a informação em cada tick nas janelas que abrirem:

  • origem (examinador ou histórico);
  • tempo do ponto;
  • preço do ponto;

O gráfico mostra claramente que a qualidade dos pontos de simulação no examinador da plataforma do cliente MetaTrader 5 permite um teste adequado dos Conselheiros Especialistas nos dados históricos.

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

Análise técnica: O que analisamos? Análise técnica: O que analisamos?
Este artigo tenta analisar diversas peculiaridades da representação de cotações disponível no terminal cliente do MetaTrader. O artigo é geral, ele não diz respeito à programação.
Utilizando WinInet.dll para a troca de dados entre plataformas via internet Utilizando WinInet.dll para a troca de dados entre plataformas via internet
Este artigo descreve os princípios do trabalho com a Internet por meio do uso de requisições HTTP e troca de dados entre terminais, usando um servidor intermediário. Uma classe de biblioteca MqlNet é apresentada para trabalho com recursos de internet no ambiente MQL5. Preços de monitoramento de diferentes corretores, mensagens de câmbio com outros negociadores sem sair do terminal, busca por informação na Internet - estes são apenas alguns exemplos, analisados neste artigo.
Análise técnica: como analisamos? Análise técnica: como analisamos?
Este artigo descreve brevemente a opinião do autor no redesenho de indicadores, indicadores com múltiplos quadros de tempo e exibição de cotações com candlesticks japoneses. O artigo não contém elementos específicos de programação e possui um caráter geral.
Nota de usuário - MQL5.community Nota de usuário - MQL5.community
Você acabou de registrar e, provavelmente, você tem perguntas como: "Como faço para inserir uma imagem na minha mensagem?", "Como faço para formatar meu código fonte MQL5?", "Onde são mantidas minhas mensagens pessoais?". Você pode ter muitas outras perguntas. Neste artigo, nós preparamos algumas dicas práticas que ajudarão você a se acostumar com o MQL5.community e tirar o máximo proveito de seus recursos disponíveis.