Download MetaTrader 5

MQL5 Wizard: nova versão

21 janeiro 2014, 13:13
MetaQuotes Software Corp.
0
2 855

O terminal MetaTrader 5 continua a ser aperfeiçoado e a incorporar novos recursos. O novo MetaTrader 5 build 439 contém o MQL5 Wizard atualizado, o que permite criar Expert Advisors com base em regras de negociação mais flexíveis. Neste artigo nós descrevemos as novas possibilidades do MQL5 Wizard e explicamos as mudanças na arquitetura dos Expert Advisors que foram geradas utilizando este aplicativo.


Histórico

O MQL5 Wizard foi originalmente projetado como uma ferramenta útil para auxiliar os traders a criarem programas em MQL5 com mais facilidade. Já na primeira versão do MQL5 Wizard, era possível criar rapidamente um Expert Advisor pronto para uso como um conjunto de módulos simples, obtendo o seu código-fonte em MQL5. O mais importante é que não é necessário conhecer a linguagem MQL5 - tudo o que você precisa é ler o artigo Criar o seu próprio Expert Advisor no MQL5 Wizard.

Um Expert Advisor gerado pelo Wizard contém três módulos:

Cada módulo de EA é baseado em uma determinada classe e fornece muitas oportunidades de alteração do comportamento do seu Expert Advisor.

A Biblioteca Padrão inclui uma séria de classes funcionalmente completas, prontas para uso, para implementar diversos mecanismos de gerenciamento de dinheiro, manutenção de posição aberta e geração de sinais de negociação.

Esta abordagem permite criar robôs de negociação baseados em módulos já comprovados e que apresentam bom funcionamento. Você apenas precisa seguir alguns passos e especificar os parâmetros necessários. Entretanto, a experiência demonstra que mesmo bons exemplos, explicando os princípios da escrita de classes personalizadas, não são sempre capazes de auxiliar programadores de MQL5 novatos.

Outra desvantagem da versão anterior do MQL5 Wizard é que para implementar um novo algoritmo de negociação levemente modificado, você precisa escrever uma nova classe.

A partir desta experiência e dos comentários dos usuários, a MetaQuotes decidiu criar uma versão avançada do MQL5 Wizard com ainda mais funções.


Um novo conceito de geração de sinais de negociação

O principal obstáculo da versão anterior do MQL5 Wizard estava ligado aos problemas que poderiam ocorrer ao se criar sinais de negociação próprios. Assim, durante o desenvolvimento da nova versão do Wizard, enfatizou-se a simplificação da criação de sinais de negociação combinados com base em princípios simples.

Para esta finalidade, foram feitas as seguinte mudanças na classe base do gerador de sinais de negociação (doravante referido como "Sinal"):

  • Qualquer Sinal (derivado da classe CExpertSignal) é baseado em previsões de "advisors" que emitem suas opiniões a respeito do possível movimento de preços. Estes advisors, por sua vez, também derivam da classe CExpertSignal e, assim, podem ter os seus próprios advisors. O número de advisors em cada Sinal pode chegar a 64;
  • Novos métodos que implementaram "votação" na direção do movimento de preço foram adicionados à classe CExpertSignal. Além disso, ela contém um novo mecanismo para participação nesta "votação";
  • Para aumentar a flexibilidade da tomada de decisão, cada Sinal envolvido no processo de tomada de decisões (não se esqueça de que os "advisors" também são sinais) agora pode receber informações de seus próprios instrumentos de mercado e/ou de seu próprio período de tempo.

Dessa forma, a decisão de entrar no mercado em uma ou outra direção agora pode ser tomada coletivamente, ou seja, levando-se em consideração a "opinião considerada" de cada advisor.

O Sinal "vota" na direção do movimento de preços com base em algoritmos integrados de detecção de padrões de mercado (específicos deste Sinal). Por exemplo, um sinal baseado em padrões estocásticos é capaz de identificar uma reversão, divergência nos preços, etc.

A Biblioteca Padrão já inclui vinte Sinais prontos para uso baseados em diversos indicadores.


Um novo mecanismo para a tomada de decisões de negociação

O mecanismo para a tomada de decisões de negociação através do Sinal pode ser apresentado na forma das seguintes disposições-chave:

  • Cada Sinal tem o seu próprio conjunto de padrões de mercado (uma combinação de preço e valores de indicador);
  • Cada padrão de mercado tem um valor de peso de 1 a 100. Quanto maior o valor, mais forte é o padrão;
  • Cada padrão gera uma previsão de movimento de preço em uma determinada direção;
  • Ao comparar as previsões recebidas dos padrões aplicados, o mais forte é selecionado e uma previsão é gerada no intervalo de -100 a +100, em que o sinal determina a direção do movimento previsto (negativo — o preço diminuirá, positivo — o preço aumentará). Um valor absoluto corresponde à força do melhor padrão encontrado. Este resultado é enviado à votação geral;
  • A previsão de cada advisor dentro do módulo vai à votação com o fator de ponderação de 0 a 1,0, que é especificado nas suas configurações ("Peso");
  • O resultado da votação é um número de -100 a +100, em que o sinal determina a direção do movimento previsto e o valor absoluto caracteriza a força do sinal. Ele é calculado como a média aritmética de previsões ponderadas de todos os advisors do módulo. Este resultado é uma previsão do Sinal e o valor absoluto é uma indicação da força do Sinal.

A configuração de cada Expert Advisor gerado contém dois parâmetros — o limite para tomar uma decisão de abrir ou fechar uma posição (ThresholdOpen e ThresholdClose) os quais podem ter um valor de 0 a 100. Se a força de um Sinal for superior ao valor limite, toma-se uma decisão de conduzir uma negociação.

O EA criado com o MQL5 Wizard consiste em três partes, das quais a mais importante é o título que contém o módulo para gerar sinais de negociação. Os processos do módulo de sinais podem ser representados da seguinte forma:



A figura mostra que o módulo de Sinal pode conter dois blocos - um bloco de padrões de mercado e um bloco de advisors. O bloco de padrões produz previsões a partir de cada padrão e, após, o mais forte deles é selecionado. As previsões dos advisors (outros Sinais) são multiplicadas pelos pesos correspondentes e os valores resultantes são somados durante a votação para produzir a previsão de média aritmética. Nesse caso, o módulo de Sinal produziu -36,6 = (-100+60-54)/3 para a situação analisada. Isso significa uma previsão de Venda com uma força absoluta de 36,6.

Considere o mecanismo de tomada de decisões em dois exemplos simples.

Imagine que há um Expert Advisor com ThresholdOpen=20 e ThresholdClose=90. Módulos de Sinal baseados em MA com um peso de 0,4 e Estocástico com um peso de 0,8 estão envolvidos na realização de uma tomada de decisão. Considere duas opções de sinais de negociação obtidos:

  • Opção 1.

    O preço cruzou em sentido progressivo um indicador MA crescente. Isto corresponde a um dos padrões de mercado que implicam crescimento de preços, o qual está integrado ao módulo MA. O seu valor é 100. Ao mesmo tempo, o oscilador Estocástico rejeitou e formou uma divergência no preço. Este é um padrão que implica queda de preço, o qual está implementado no módulo Estocástico. O valor deste padrão é 80.

    Calcular o resultado da votação final. A previsão ponderada, obtida do módulo MA, é calculada como 0,4 * 100 = 40. A previsão ponderada do módulo Estocástico é calculada como 0.8 * (-80) = -64. A previsão final é calculada como a média aritmética das duas previsões ponderadas: (40 - 64)/2 = -12. Este é um sinal para vender com a força condicional 12. O valor limite 20 não foi alcançado. Consequentemente, a negociação não será conduzida.

  • Opção 2.

    O preço cruzou em sentido regressivo um indicador MA crescente. Isto corresponde a um dos padrões de mercado que implicam crescimento de preços, o qual está implementado no módulo MA. O seu valor é 10. Ao mesmo tempo, o oscilador Estocástico rejeitou e formou uma divergência no preço. Este é um padrão que implica queda de preço, o qual está implementado no módulo Estocástico. O valor deste padrão é 80.

    Calcular o resultado da votação final. A previsão ponderada, obtida do módulo MA, é calculada como 0,4 * 10 = 4. A previsão ponderada do módulo Estocástico é calculada como 0,8 * (-80) = -64. A previsão final é calculada como a média aritmética das duas previsões ponderadas: (4 - 64)/2 = -30. Este é um sinal para vender com a força condicional 30. O valor limite 20 foi alcançado. Consequentemente, o resultado é um sinal para abrir uma posição a descoberto.



Figura 1. Um exemplo de padrões de mercado no gráfico

A figura mostra os padrões de mercado descritos nos exemplos:

a) A divergência de preço e oscilador Estocástico é utilizada nas opções 1 e 2.
b) O preço cruzou o indicador MA
de baixo para cima - é usado na opção 1.
c) O preço cruzou o MA de cima para baixo - é usado na opção 2.


Combinando sinais no EA

Para criar o nosso próprio Expert Advisor, primeiramente é necessário decidir qual instrumento e em qual período de tempo iremos negociar. Após, devemos selecionar Sinais com base nos indicadores que utilizaremos para a negociação.

Nós adotaremos as seguintes condições para o nosso exemplo:

  1. O símbolo negociado é EURUSD. Nosso período de tempo é M10.
  2. Os Sinais utilizados:
    • EMA('EURUSD',M10,31) - sinais baseados em uma média móvel exponencial;
    • Stochastic('EURUSD',M10,8,3,3) - sinais baseados no oscilador estocástico;
    • EMA('EURUSD',H1,24) - sinais baseados em uma média móvel exponencial de um período de tempo diferente;
    • Stochastic('EURJPY',H4,8,3,3) - sinais baseados no oscilador estocástico de símbolo e período de tempo diferente;
    • IntradayTimeFilter - um filtro de horário do dia e número do dia da semana.


Criar um robô de negociação com o novo MQL5 Wizard

O código-fonte do Expert Advisor é gerado com a utilização do MQL5 Wizard no MetaEditor.

Classes básicas de estratégias de negociação estão localizadas em terminal_data_folder\MQL5\Include\Expert\. Algoritmos de classes de sinais de negociação, classes de rastreamento de posições abertas e classes de gerenciamento de risco e dinheiro prontos para uso estão localizados nos subdiretórios de Sinal, Rastreamento e Dinheiro. O MQL5 Wizard analisa e utiliza os arquivos destes diretórios para gerar o código do Expert Advisor.

Classes base para MQL5 Wizard

Figura 2. Classes base para MQL5 Wizard

Para iniciar o MQL5 Wizard, você precisa clicar em "Novo" na barra de ferramentas ou selecionar "Novo" no menu "Arquivo" (ou pressionar Ctrl+N):

Figura 2. Iniciando o MQL5 Wizard

Figura 3. Iniciando o MQL5 Wizard

Em seguida, selecione o tipo de programa que você deseja criar. Em nosso caso, selecione a opção "Expert Advisor (gerar)":

Figura 3. Selecionando o tipo de programa

Figura 4. Selecionando o tipo de programa


Passo 1. Propriedades gerais do Expert Advisor

Em seguida, a caixa de diálogo abrirá e você poderá definir as propriedades gerais do Expert Advisor:

Figura 4. Propriedades gerais de um Expert Advisor

Figura 5. Propriedades gerais de um Expert Advisor

Especifique o nome do seu Expert Advisor, o nome do autor e o link para o seu website nos campos "Nome", "Autor" e "Link" (respectivamente).

O Expert Advisor também possui os seguintes parâmetros de entrada:

  • Symbol (o tipo de string) - O símbolo que o EA está seguindo;
  • TimeFrame (o tipo de ENUM_TIMEFRAMES) - O período de tempo que o EA está seguindo.

De forma padrão, as duas opções estão definidas como "atual" (ou seja, o Expert Advisor será testado e negociará em qualquer símbolo/período de tempo).

Mas será que isso é sempre bom? Por exemplo, você executa acidentalmente um Expert Advisor, configurado para negociação intra-dia em EURUSD (além disso, ele utiliza confirmação de par cruzado), em um gráfico semanal de AUDNZD. Não parece nada bom.

Dessa forma, seria melhor estabelecer os parâmetros necessários. No próximo passo, selecione o tipo de sinais de negociação em que o EA negociará. Para selecionar o símbolo, clique em "Próximo".


Passo 2. Selecionar os módulos de sinais de negociação

O algoritmo de abertura e fechamento de posições é determinado pelos módulos de sinais de negociação. Os módulos de sinais de negociação contêm regras de abertura/fechamento/reversão de posições.

Um Expert Advisor pode usar simultaneamente até 64 diferentes (ou os mesmos, mas com configurações diferentes) módulos de sinais de negociação.

Figura 5. Parâmetros de sinais de EA (início).

Figura 6. Parâmetros de sinais de EA (início)

A Biblioteca Padrão possui Módulos de sinais de negociação prontos para uso:

  1. Sinais do indicador 'Oscilador Acelerador';
  2. Sinais do indicador 'Média Móvel Adaptativa';
  3. Sinais do indicador 'Oscilador Maravilhoso';
  4. Sinais do oscilador 'Bears Power';
  5. Sinais do oscilador 'Bulls Power';
  6. Sinais do oscilador 'Índice de Canal de Commodities';
  7. Sinais do oscilador 'DeMarker';
  8. Sinais do indicador 'Média Móvel Exponencial Dupla';
  9. Sinais do indicador 'Envelopes';
  10. Sinais do indicador 'Média Móvel Fractal Adaptativa';
  11. Sinais do filtro intra-dia;
  12. Sinais do oscilador 'Convergência/Divergência de Média Móvel';
  13. Sinais do indicador 'Média Móvel';
  14. Sinais do indicador 'SAR Parabólico';
  15. Sinais do oscilador 'Índice de Força Relativa';
  16. Sinais do oscilador 'Índice de Vigor Relativo';
  17. Signais do oscilador 'Estocástico';
  18. Signais do oscilador 'Média Exponencial Tripla';
  19. Sinais do indicador 'Média Média Exponencial Tripla';
  20. Sinais do oscilador 'Variação Percentual Williams'.


Figura 6. Selecionando sinais

Figura 7. Selecionando sinais

De acordo com nossos "Termos de Referência", primeiramente selecionamos "Sinais do indicador 'Média Móvel''.

Configure os parâmetros necessários (PeriodMA e Method). Faça um clique duplo sobre o campo "Nome" para excluir todos os parâmetros da otimização exceto Peso (de forma padrão, todos os parâmetros estão marcados como parâmetros de entrada).

Aqui nós precisamos mencionar os campos "Symbol" e "TimeFrame". Estes campos devem ser preenchidos caso as configurações adequadas do sinal sejam diferentes dos parâmetros atuais. Para um sinal, as configurações atuais são aquelas da "inteligência superior" (neste caso, do Expert Advisor).

Figura 7. Configuração dos parâmetros de sinal

Figura 8. Configuração dos parâmetros de sinal

Adicione os sinais restantes e configure os parâmetros necessários. Para a otimização, deixe apenas o parâmetro Peso para todos os sinais.

Configuração de sinais completa. Clique em "Próximo" para continuar.

Figura 8. Parâmetros dos sinais EA (fim)

Figura 9. Parâmetros dos sinais EA (fim)


Passo 3. Selecionar o módulo de rastreamento de posições abertas

O próximo passo é selecionar o algoritmo de rastreamento de posições abertas (Trailing Stop). A utilização do rastreamento permite que você armazene lucros obtidos.

A configuração deste módulo está descrita em detalhes no artigo MQL5 Wizard: Criar Expert Advisors sem programação. Em nosso caso, não usaremos rastreamento.

Figura 9. Selecionar o algoritmo de rastreamento de posição

Figura 10. Selecionar o algoritmo de rastreamento de posição


Passo 4. Selecionar o módulo de gerenciamento de risco e dinheiro

No último passo, você precisa selecionar o sistema de gerenciamento de risco e dinheiro que será utilizado em seu Expert Advisor. A configuração deste módulo está descrita em detalhes no artigo MQL5 Wizard: Criar Expert Advisors sem programação. Em nosso caso, utilizaremos um lote fixo.


Figura 10. Selecionar o algoritmo de gerenciamento de dinheiro

Figura 11. Selecionar o algoritmo de gerenciamento de dinheiro

É isso aí. Clique em "Finalizar".


Verificar o Expert Advisor no Provador de Estratégia do MetaTrader 5.

Se todos os componentes da Biblioteca Padrão estiverem presentes, o código do Expert Advisor gerado será compilado com êxito. O melhor conjunto de parâmetros de Expert Advisor pode ser encontrador após a otimização no Provador de Estratégia do MetaTrader 5.

Para otimização do EA, selecione o período de 01.01.10 a 01.01.11 e execute em duas etapas.

A primeira etapa: "Seleção de pesos de sinal, limites para disparo de condições de entrada/saída e níveis de negociação".

Figura 11. Parâmetros de otimização do Expert Advisor

Figura 12. Parâmetros de otimização do Expert Advisor

Este é o resultado da melhor série de otimização.

Figura 12. Resultados da otimização do Expert Advisor

Figura 13. Resultados da otimização do Expert Advisor

Nós já obtivemos bons resultados (em termos de lucro e valor máximo de desembolso). Nós não devemos nos esquecer de que estávamos "negociando" com um lote fixo.

Mas vamos tentar melhorar ainda mais os resultados. Para isso, temos outro sinal (ainda não utilizamos as configurações dele). Os valores encontrados através da otimização dos parâmetros descrevem um padrão de mercado reconhecido pelo Expert Advisor.

Mas vamos sugerir que o padrão de mercado resultante nem sempre funciona igualmente bem. Vamos tentar aplicar o filtro de tempo aos resultados da otimização.

Para isso, otimizaremos o Expert Advisor de acordo com o parâmetro de "Más horas" dos sinais "IntradayTimeFilter". O parâmetro de "Más horas" é um mapa de bits de 24 bits (o número de horas de um dia). Cada bit da máscara de bits corresponde exclusivamente a uma das horas (o número de bits da máscara e o número de horas do dia são correspondentes). O valor de qualquer bit igual a 1 substituirá qualquer resultado de uma votação caso o número da hora atual seja igual ao número deste bit (ou seja, a hora é considerada má para negociação).

Para verificar todas as possíveis combinações de horas "boas" e "más", nós otimizaremos o parâmetro de 0 a 2^24-1 (na forma natural 16 777 215) em um passo igual a 1.

Figura 13. Parâmetros de otimização do Expert Advisor

Figura 14. Parâmetros de otimização do Expert Advisor

Obtivemos 11 665 415 como resultado da otimização. Para entender o que isso significa, vamos expressar de forma binária:

  • 101100100000000000000111 - ou seja, os números de "má" horas são 0, 1, 2, 17, 20, 21 e 23.

Aqui estão os parâmetros do Expert Advisor após todas as otimizações.

Figura 14. Propriedades do Expert Advisor

Figura 15. Propriedades do Expert Advisor

O relatório de um único teste com os melhores parâmetros é anexado. O lucro é maior e o valor de desembolso é menor. Pode-se concluir que após o filtro de horário, os resultados do sistema de negociação durante o período histórico melhoraram.


Conclusão

A utilização de classes de estratégias de negociação facilita significativamente a criação de robôs para teste de ideias de negociação no próprio MetaEditor com o uso do the MQL5 Wizard. Agora todo o código-fonte do Expert Advisor pode ser construído com base na combinação de módulos prontos para uso da Biblioteca Padrão ou através da utilização de seus próprios módulos.

Traduzido do russo por MetaQuotes Software Corp.
Artigo original: https://www.mql5.com/ru/articles/275

Arquivos anexados |
sample.mq5 (8.75 KB)
Uma rápida inicialização ou um guia breve para iniciantes Uma rápida inicialização ou um guia breve para iniciantes

Olá, caro leitor! Neste artigo, tentaremos explicar e mostrar como você pode facilmente e rapidamente compreender os princípios da criação de Expert Advisors, trabalhar com indicadores, etc. Este artigo é destinado a iniciantes e não apresentará nenhuma dificuldade ou exemplos de difícil entendimento.

Estratégias de ordem. Expert Advisor de propósito múltiplo. Estratégias de ordem. Expert Advisor de propósito múltiplo.

Este artigo centraliza estratégias que usam ativamente ordens pendentes, uma metalinguagem que pode ser criada para formalmente descrever tais estratégias e uso de um Expert Advisor de propósito múltiplo em que a operação baseia-se nestas descrições.

Controles gráficos personalizados. Parte 1: criando um controle simples Controles gráficos personalizados. Parte 1: criando um controle simples

Este artigo cobre os princípios gerais para desenvolvimento de controles gráficos. Vamos preparar ferramentas para um trabalho rápido e conveniente com objetos gráficos, analisar um exemplo de criação de um simples controle para inserir texto ou dados numéricos, bem como os meios para usá-los.

Controles gráficos personalizados. Parte 2. Biblioteca de controles Controles gráficos personalizados. Parte 2. Biblioteca de controles

O segundo artigo da série "Controles gráficos personalizados" apresenta uma biblioteca para manusear os principais problemas que surgem da interação entre um programa (Expert Advisor, script, indicador) e um usuário. A biblioteca contém um grande número de classes (CInputBox, CSpinInputBox, CCheckBox, CRadioGroup, CVSсrollBar, CHSсrollBar, CList, CListMS, CComBox, CHMenu, CVMenu, CHProgress, CDialer, CDialerInputBox, CTable) e exemplos de seu uso.