Construtor de estratégia visual. Criação de robôs de negociação sem programação

14 agosto 2018, 22:01
Andrey Barinov
6
2 333

Conteúdo


Introdução

O Algotrading e a capacidade de verificação das idéias de negociação com os dados históricos no testador de estratégia são as funções mais importantes da plataforma de negociação MetaTrader5.

Mas para usar a estratégia de negociação no modo de negociação automática em um gráfico em tempo real ou no testador de estratégia, ela precisa ser programada e compilada em um arquivo executável (arquivo do Expert Advisor - EA). Nem todo trader possui habilidades de programação ou recursos para dominá-los.

Este artigo apresenta uma solução para este problema — o construtor visual de estratégia Mission Automate. Com a ajuda dele, qualquer um pode automatizar suas operações e verificar a estratégia em dados históricos sem escrever uma única linha de código. Os Links para as versões gratuitas do programa podem ser encontradas abaixo. Existem 5 Expert Advisors gratuitos, que foram incluídos, baseados nas estratégias mais populares. Eles são projetados na forma de modelos e podem ser usados ​​como base para outras estratégias.

Para MetaTrader4: Mission Automate Demo MT4

Para MetaTrader5: Mission Automate Demo MT5

Embora exista a palavra Demo no nome da versão gratuita, ela tem todas as funcionalidades da versão completa e não contém restrições significativas. Ela tem apenas alguns "inconvenientes". Os links para as versões completas e pagas do programa podem ser encontradas nas descrições das versões gratuitas em suas páginas no Mercado MQL5.

Esse construtor de estratégia visual foi projetado para os "não-programadores", podendo ser útil para uma ampla gama de usuários. Qualquer trader pode criar robôs de negociação totalmente funcionais depois de ter gasto um pouco de tempo para conhecê-los e dominar os princípios de seu trabalho.

Este artigo fornece uma visão geral das funcionalidades do construtor de estratégias com exemplos de criação de Experts de negociação como na vida real.


Características

O aplicativo Mission Automate permite que qualquer pessoa transforme suas idéias em robôs de negociação prontos. Uma interface gráfica intuitiva com a tecnologia "arraste e solte" torna o processo fácil e agradável. A criação de um Expert Advisor se parece com a montagem de um esquema a partir dos blocos (elementos) existentes e conectá-los com os links lógicos. Quando o esquema é criado, ele pode ser executado imediatamente ao vivo ou convertido automaticamente para o código fonte em MQL5 para uso posterior no testador de estratégia ou em gráficos em tempo real.

Uma parte dos elementos disponíveis está listada abaixo.

  • Todos os indicadores padrão presentes na plataforma MetaTrader.
  • Indicadores personalizados.
  • Negociação (grupo trades) Abrir / Encerrar / Modificar.
  • Configuração / cancelar / modificar uma ordem pendente (grupo orders).
  • Gerenciamento de negociações: calculadora de lotes, break-even, trailing stop.
  • Acesso ao histórico de negociação (informações sobre as posições encerradas).
  • Elementos para obter várias informações sobre o histórico de preços.
  • Dados dos últimos ticks para vários instrumentos.
  • Várias operações aritméticas e transformações de preços.
  • Operações lógicas.
  • Variáveis ​​/ Switches.
  • Operações com os dados de horário.
  • Várias informações sobre os instrumentos de negociação.
  • Informações sobre a conta (saldo, patrimônio líquido, margem livre, etc.).
  • Notificações: Alerta, Registro, Push e Comentário no gráfico.
  • Elementos para a criação de parâmetros de entrada do Expert Advisor que são visíveis em suas configurações e podem ser otimizados no testador de estratégias.

Um grande conjunto de elementos forma um grande número de combinações possíveis, permitindo a qualquer pessoa criar uma variedade de tipos de robôs e utilitários de negociação. Abaixo está uma lista incompleta do que pode ser criado usando a ferramenta de construção de estratégia Mission Automate.

  • Expert Advisors baseados em Indicadores Técnicos.
  • Estratégias de Price Action.
  • EAs de Padrões de Velas.
  • Estratégias baseadas em níveis de Suporte e Resistência.
  • Diferentes tipos de sistemas Grid.
  • Sistemas usando métodos de Martingale.
  • Utilitários para Gestão de Negociações.
  • Sistemas de Alertas e Notificações.
  • Ferramentas para Gestão de Capital.

No construtor de estratégia e neste artigo, as palavras "trade" e "position" são usados ​​como sinônimos. Um trade/position pode ser o atual, ainda não fechado, ou histórico, ou seja, já fechado no passado. A palavra "order" no texto deve ser lida como "ordem pendente". Uma ordem pode se tornar uma posição ou pode ser cancelada e movida para o histórico.


Visão global

Em geral, o processo de converter uma ideia em um robô de negociação consiste de várias etapas.

  1. Formar uma estratégia de negociação na mente de um trader - trabalho criativo.
  2. Reformular a estratégia como um conjunto de regras "no papel" - a formalização da estratégia, ou a preparação das especificações do EA.
  3. Transformar essas regras em código de máquina e em um arquivo executável do robô de negociação - programação do Expert Advisor.

A maioria dos traders pode realizar com sucesso os passos #1 e #2 por conta própria. O produto descrito neste artigo permite realizar o passo #3, o que torna a negociação algorítmica disponível para qualquer trader.

O construtor de estratégia Mission Automate permite que você crie suas próprias estratégias a partir do zero ou de um dos modelos / exemplos prontos, o que é muito mais simples.

O vídeo abaixo mostra todo o processo de criação de um novo EA a partir do zero. Neste exemplo, é construído uma estratégia clássica baseada em duas médias móveis.

O vídeo mostra as etapas a seguir (elas serão descritas em mais detalhes posteriormente).
  • Montagem do esquema a partir dos elementos.
  • Conexão dos elementos com os links lógicos.
  • Ajuste dos parâmetros dos elementos e links.
  • Geração automática do arquivo do EA com extensão .mq5.
  • Compilação do código e obtenção do arquivo executável .ex5.
  • Execução e teste do Expert Advisor no testador de estratégias.



As estratégias são montadas a partir de blocos / módulos. Esses blocos são chamados de elementos.

Todos os elementos disponíveis estão localizados na barra de elementos.

Elementos podem ser conectados com as ligações lógicas.

As combinações frequentemente usadas dos elementos e links podem ser salvas como snippets.

Todos os snippets criados estão localizados na barra snippets.

Os elementos são movidos no modo de "arrastar e soltar".

Um grupo de elementos e links formam um esquema.

Um novo esquema pode ser criado usando um modelo.

Todos os modelos disponíveis estão localizados na barra de modelos.

Visão global


Um novo esquema pode ser criado a partir de um dos modelos disponíveis ou completamente do zero.

Para criar um esquema a partir de um modelo, selecione o modelo apropriado no painel e arraste-o para o espaço de trabalho. Uma breve descrição do modelo aparece depois de clicar no seu ícone.

Quando o esquema é criado, seu ícone aparece na barra de esquemas. Os ícones de esquemas são usados ​​para acessar rapidamente as possíveis ações com o esquema. O painel de controle do esquema aparece após um único clique no ícone. Se você clicar duas vezes no ícone, o esquema selecionado será movido para o centro da tela. Cada esquema pode receber um nome. Você pode mover livremente o esquema pelo espaço de trabalho.

Criação do Esquema


Para adicionar novos elementos ao esquema, eles devem ser arrastados para dentro dele a partir da barra de elementos.

Se um elemento da barra de elementos for arrastado para um espaço limpo, um novo esquema contendo apenas esse elemento será criado. Cada elemento pode receber um nome.

Após o clique de um elemento, o painel de configurações é exibido. Você pode alterar os valores dos parâmetros do elemento ou defini-los como valores padrão. Além de definir os parâmetros, também estão disponíveis as opções para clonar um elemento, excluí-lo, redefinir as configurações e acessar uma descrição resumida de um elemento e seus parâmetros.

Elementos

Depois de clicar em um elemento na barra de elementos, sua janela de configurações irá aparecer. Nesse caso, se você alterar os parâmetros de um elemento do painel, eles serão usados ​​posteriormente para todas as novas cópias desse elemento.

Os elementos podem ser divididos em três grupos.

  1. Os elementos para realizar certas ações (abertura de novas posições, notificações, modificação de posições existentes, etc.) quando certas condições ocorrerem. A condição necessária para executar uma ação é chamada de trigger (gatilho).
  2. Elementos do tipo objeto (tick, barra, símbolo, posição, ordem pendente, indicador). Primeiro, você precisa criar um objeto e configurar os seus parâmetros, e só então você pode obter as informações sobre ele.
  3. Os elementos para obter informações sobre o objeto (preço atual, informações sobre o estado da conta, histórico de negociação, etc.).
Os parâmetros dos elementos e os dados dos objetos podem ser de tipos diferentes. Por exemplo, as taxas de câmbio têm o tipo de número decimal, e o comentário de posição é especificado como uma string. O número da barra é do tipo inteiro, e o momento de sua abertura é do tipo horário.

Elementos podem ser conectados com as ligações lógicas. Um link transfere os dados de um elemento para outro.

Somente os elementos e parâmetros dos mesmos tipos ou aqueles, que se transformam em outros tipos sem perda de dados, podem ser conectados aos links.

Para criar um novo link, "arraste" a borda do elemento. Após o clique no link, aparecerá uma janela com as suas configurações.

Conexão dos elementos


A figura acima mostra como seria o utilitário "notificação de alerta da nova barra".

Os links podem conectar apenas os elementos e parâmetros do mesmo tipo ou os tipos que podem ser inter-convertidos sem perda de dados.

Algumas ações podem ser aplicadas a um grupo de elementos selecionados.

Para criar um grupo de elementos, selecione a seção do esquema, mantendo pressionada a tecla Ctrl. Todos os elementos que se enquadram nessa zona serão selecionados. Além disso, o elemento é destacado se você clicar nele enquanto mantém pressionado a tecla Ctrl.

Após o clique em um elemento no grupo selecionado, a janela de configurações do grupo é exibida. O grupo selecionado pode ser clonado, excluído ou salvo em um arquivo. Além disso, você pode criar um snippet consistindo de elementos no grupo. Um novo snippet aparecerá na barra de snippets e estará disponível para adição nos novos esquemas. Usando a barra de snippets, você pode alterar os parâmetros dos elementos de qualquer snippet.

Snippets


As outras características do programa serão revisadas com exemplos de construção de Expert Advisors reais.


Exemplo #1: Expert Advisor "Moving Averages Crossover"

Considere uma estratégia de negociação clássica baseada no cruzamento de duas médias móveis.

A estratégia pode ser descrita resumidamente da seguinte maneira.

Nós compramos quando a média móvel rápida (MA) cruzar a MA lento para cima. Nós vendemos quando a MA rápido cruzar o lenta para baixo. Nós fechamos as posições quando ocorrer o sinal oposto, assim como com o Stop Loss e Take Profit.

Agora vamos descrever a estratégia de uma maneira mais formal como um conjunto de regras / condições.

  • As Médias Móveis devem ser construídas usando as velas de preços de fechamento. Nós trabalhamos apenas com as barras formadas. Todas as ações de negociação são realizadas na abertura da barra após a aparição do sinal.
  • Os períodos das médias móveis rápidas e lentas devem ser ajustáveis ​​nos parâmetros de entrada do EA.
  • O sinal de Buy (e close sells) é o estado em que a MA rápida está mais baixa que a lenta na barra anterior e se tornou mais alta do que na barra atual.
  • Sinal para vender (e fechar compra) é o estado em que a MA rápida estava acima da lenta na barra anterior e ficou abaixo na barra atual.
  • Apenas uma posição pode existir em qualquer momento.
  • Todos os negócios devem ter tamanhos fixos de lote. O tamanho do lote deve ser ajustável nas configurações de entrada do EA.
  • Os valores de Stop Loss e Take Profit em pontos devem ser ajustáveis ​​nos parâmetros de entrada do EA.
  • O EA deve funcionar apenas com o símbolo do gráfico em que ele é colocado. O tempo gráfico para o cálculo dos indicadores deve corresponder ao período do gráfico atual.
  • Deve ser possível que vários EAs trabalhem na mesma conta usando um identificador exclusivo de Número Mágico. Este parâmetro deve ser definido nas configurações de entrada do EA.
  • Deve ser possível especificar um comentário personalizado para as negociações do Expert Advisor.

Esse conjunto de regras é bom o suficiente para servir como especificação do EA. Vamos começar a desenvolver este robô de negociação com o construtor de estratégia visual.

Os períodos das médias móveis devem ser criados como parâmetros de entrada do Expert Advisor.

Para fazer isso, use um dos elementos de Input. Existe um elemento separado para diferentes tipos de parâmetros de entrada.

O período do indicador é um inteiro. Nós vamos usar o elemento correspondente. Vamos criar um novo esquema e adicionar dois elementos, dar nomes e ajustar os seus valores. Para a MA rápida, nós definimos o valor padrão para 14 e para a MA lenta = 28. Esses valores podem ser ainda mais otimizados no testador de estratégias.

Períodos da MA


Nossa estratégia usa um indicador padrão, mas com dois períodos diferentes.

Nós precisamos de dois elementos chamados Moving Average.

Vamos adicioná-los ao nosso esquema e conectar os elementos dos períodos do indicador aos parâmetros do Período do Indicador. Após isso, o esquema ficará assim:

Indicadores


Por padrão, os indicadores usam o símbolo e o período de tempo do gráfico atual. Isso é exatamente o que nós precisamos. O período para o cálculo dos indicadores será retirado dos elementos correspondentes.

Agora, para determinar as condições para os sinais de compra / venda, nós precisamos obter dois valores para cada indicador - para a barra anterior e para a barra atual.

Para obtermos o valor do indicador, o elemento Indicator Value deve ser usado. Vamos adicionar 4 elementos desse tipo ao nosso esquema e criar os links correspondentes.

As barras são numeradas do presente para o passado. A barra incompleta atual tem o número igual a 0. A de número 1 é atribuído à barra formada anteriormente, a de número 2 à barra anterior a ela e assim por diante.

Apenas as barras formadas são usadas em nossa estratégia. Assim, para a barra atual usamos value = 1, e para a barra anterior usamos value = 2. Os valores correspondentes são definidos para todos os quatro elementos.

Valores das MAs


Agora nós precisamos comparar os valores dos indicadores e verificar se as condições de entrada foram atendidas ou não.

Para comparar os números, use o elemento Compare. Este elemento produz o valor "true" se dois números satisfizerem a relação especificada, e o valor "false" se não. Vamos adicionar dois elementos desse tipo ao nosso esquema. No primeiro, vamos verificar se a MA rápida está acima da lenta na barra anterior. No segundo elemento, nós verificamos se a MA rápida se tornou maior que a lenta na barra atual. Vamos criar os links apropriados e configurar os parâmetros para esses elementos de comparação.

Comparação de valores


O sinal de compra é a satisfação simultânea de duas condições:

  • a MA rápida NÃO estava acima da MA lenta na barra anterior
  • a MA rápida se tornou maior que a MA lenta na barra atual

Para verificar o satisfação simultânea dessas condições, use o elemento "AND lógico". Este elemento produz o valor "true" se TODAS as condições são atendidas e o valor "false" se pelo menos uma delas não é cumprida.

Adicione dois desses elementos ao esquema e conecte os dois elementos Compare a cada um deles.

Ao fazer isso, nós precisamos "reverter" alguns dos links. O elemento Compare gera "true" se a MA rápida for maior que a MA lenta na barra anterior, mas nós precisamos verificar se ela NÃO foi superior. Portanto, nós vamos inverter o valor de saída ajustando os links correspondentes nos parâmetros dos elementos. Os links invertidos são desenhados com a cor vermelha no esquema.

Sinais


Vamos prosseguir com a implementação das operações de negociação. Antes de abrir uma nova posição, nós devemos verificar o estado atual e ignorar o sinal se a negociação na direção desejada já estiver aberta, ou fechar a posição se ela estiver aberta na direção oposta. Para fazer isso, nós precisamos saber o número de posições de Compra e Venda existentes no momento atual.

Para acessar as informações de negociações, use o elemento Trades Group. Este elemento forma um grupo de negociações que satisfazem certos critérios. As negociações podem ser filtradas por vários parâmetros, como símbolo, número mágico, comentário etc.

Nós precisamos de um desses elementos para compras e um para vendas. Vamos adicionar esses dois elementos ao esquema e configurá-los adequadamente:

Trades Groups

Para obter informações sobre um grupo de negociações (nós precisamos saber o número de negociações), nós usaremos o elemento Trades Group Information (Inteiro) . Vamos adicionar dois elementos desse tipo ao nosso esquema. Seus valores de saída serão comparados com zero usando os elementos Compare.

Trades numbers


Agora nós precisamos formar as condições finais - gatilhos para as operações de negociação. Cada gatilho contém duas condições.

  1. Gatilho para abrir uma compra - (1) não há nenhuma posição de compra aberta no momento e (2) um sinal de compra
  2. Gatilho para abrir uma venda - (1) não há nenhuma posição de venda aberta no momento e (2) um sinal de venda
  3. Gatilho para fechar uma compra - (1) uma posição de compra em aberto e (2) um sinal de venda
  4. Gatilho para fechar uma venda - (1) uma posição de venda aberta e (2) um sinal de compra

Como nós precisamos verificar o cumprimento de várias condições, nós usaremos os elementos AND lógico novamente, um para cada gatilho. Adicione 4 elementos desse tipo ao esquema e crie os links correspondentes.

Observe que, para os gatilhos abrir as posições, os links dos elementos Compare devem ser revertidos.

Gatilhos


Os gatilhos estão prontos. A única coisa que resta é adicionar os elementos de negociação.

Para abrir uma posição, use o Open Trade. Nós precisamos de um para abrir as compras e outro para abrir as vendas.

Para o encerramento de posição, use o elemento Close Trades Group. Aqui nós também precisamos de um elemento para fechar as vendas e outro para fechar as compras.

Além dos gatilhos, nós também precisamos conectar os próprios grupos de negociações aos elementos Close Trades Group. Depois de adicionar esses elementos e criar os links apropriados, o esquema ficará assim:

Elementos de negociação


A lógica de negociação do EA está completamente pronta. Agora, nós precisamos nos certificar de que o tamanho do lote de negociação, o número mágico, o comentário de negociações e os valores de Stop Loss / Take Profit podem ser ajustados a partir dos parâmetros de entrada do Expert Advisor. Para fazer isso, nós precisamos novamente dos elementos do grupo Input Parameters.

O lote de negociação é dado por um número decimal, o comentário de negociação é uma string, enquanto o número mágico, stop loss e take profit são inteiros. Adicione esses elementos ao esquema e anexe-os aos parâmetros correspondentes dos elementos de negociação.

Vista pronta do esquema


O esquema está pronto. Agora você precisa criar um arquivo executável do EA.

Se você quiser que os parâmetros de entrada do EA estejam em uma ordem específica, você pode usar a opção Arrange Inputs. Isso listará todos os elementos responsáveis ​​pelos parâmetros de entrada e eles poderão ser movidos para cima / baixo, especificando sua ordem de aparecimento na janela de configurações do EA.

Organizando os parâmetros de entrada do EA

Nós estamos prontos para gerar o código-fonte e criar um arquivo do Expert Advisor. Todo o processo é mostrado na figura abaixo e consiste nos seguintes passos.
  1. A geração de arquivos do EA usando o navegador de arquivos do construtor de estratégia.
  2. A abertura do arquivo de código fonte do EA criado (.mq5) no programa MetaEditor.
  3. A compilação do Expert Advisor e obtenção do arquivo executável do EA (.ex5).

Criação do arquivo do EA

Após a compilação bem sucedida, um arquivo do EA com extensão .ex5, com mesmo nome que o arquivo do código-fonte, aparecerá na mesma pasta em que o arquivo de origem (.mq5) está localizado.

Este arquivo do EA deve ser colocado na pasta Experts do terminal de negociação e, em seguida, estará disponível para uso no terminal de negociação.

Se executarmos o Expert Advisor criado no testador de estratégia, nós veremos a seguinte imagem:

Verificação no modo visual

O EA está pronto e está em total conformidade com as regras originais da estratégia de negociação!


Exemplo #2: Expert Advisor "Reversing Martingale"

Vamos considerar outra estratégia de negociação muito popular baseada no sistema Martingale. A estratégia pode ser descrita da seguinte maneira.

Nós abrimos uma posição em qualquer direção com o tamanho inicial do lote. Nós definimos os mesmos valores de Stop Loss e Take Profit. Se a posição for encerrada com lucro, a próxima será aberta com o tamanho do lote inicial. Se a posição for encerrada com prejuízo, a próxima operação deverá ter um tamanho de lote maior, de modo que o lucro final compense as perdas anteriores.

A especificação técnica para tal robô pode se parecer com isso.

  • A primeira negociação deve ser aberta na direção definida pelo usuário (parâmetro de entrada) e com o tamanho inicial do lote (parâmetro de entrada).
  • Para qualquer posição aberta, os mesmos níveis de stop loss e take profit são definidos em pontos (parâmetro de entrada).
  • Se a negociação fechar em lucro, a próxima posição é aberta na direção oposta com o tamanho inicial do lote.
  • Se a negociação for encerrada com prejuízo, a próxima posição é aberta na direção oposta com um tamanho de lote maior (Multiplicador de Lote - parâmetro de entrada).
  • Deve ser possível especificar um comentário para todas as negociações do EA (parâmetro de entrada).
  • Deve ser possível executar vários EAs simultaneamente (Número Mágico - parâmetro de entrada).
  • O EA deve negociar o instrumento do gráfico ao qual está anexado. O tempo gráfico não importa.

Vamos começar a criar este Expert Advisor usando o construtor de estratégia visual.

Para implementar a estratégia, nós precisamos ter informações sobre o estado atual (a presença de posições abertas) e o histórico do negociações (nós precisamos saber a direção, o lucro e o tamanho do lote da negociação anterior).

Formar dois grupos de negociação: um com posições fechadas (histórico) e outro com posições atuais (atual). Adicione também o elemento Input Parameter para o número mágico.

Grupos de negociação

Se não houver uma posição em aberto, ela deve ser aberta. Como no exemplo anterior, determine o número de posições em aberto usando o elemento Trades Group Information e compare o valor obtido com o valor zero. Se não houver posições, isso será um gatilho para abrir um novo negócio. Em nosso caso, esse link deve ser revertido.

Abrindo o próximo negócio

Se houver uma posição em aberto, nós precisamos definir o Stop Loss e Take Profit.

No exemplo anterior, isso foi feito imediatamente no momento em que o negócio foi aberto, mas nem todos os modos de execução / corretoras permitem fazer isso. Portanto, considere o caso de abrir uma posição sem SL e TP e sua colocação no futuro.

A colocação (modificação) dos níveis de SL e TP é realizada pelo elemento Modify Trades Group.

Além disso, inclua os elementos para o parâmetro de entrada com os comentários de negociação e para os parâmetros de entrada com os valores SL e TP em pontos.

Definição dos stops

Para determinar o tipo da próxima negociação, nós precisamos saber a direção da última posição fechada. Para acessar as informações sobre a posição, use o elemento Trade Information. Para fazer isso, nós precisamos saber o ticket da última negociação. Nós podemos obtê-lo usando o elemento Trades Group Information.

Última negociação

Vamos pegar o tipo da última negociação e descobrir se foi uma compra ou uma venda. Para fazer isso, use o elemento Equal. Ele permite comparar os números com diferentes tipos de dados e gera "true" se forem iguais.

Tipo da última negociação

Usando o elemento Variable, cria um tipo para a próxima negociação. Esse elemento produz valores diferentes quando diferentes condições são satisfeitas, servindo como um tipo de switch.

Se a negociação anterior foi uma compra, a próxima será uma venda e vice-versa. Se o tipo da última negociação for desconhecido (se nenhuma posição tiver sido aberta ainda), será usado o tipo das configurações de entrada. Crie-o com a ajuda do elemento correspondente.

Próximo tipo de negócio

Agora nós precisamos calcular o volume para a próxima negociação. Para fazer isso, nós precisamos saber o resultado da última posição fechada e seu volume. O lucro e volume do negócio é obtido usando o elemento Trade Information. O lucro será comparado com o valor zero para determinar se o negócio foi encerrado no lucro ou prejuízo.

Lucro do última negociação e volume

Se esta for a primeira negociação ou se a última posição foi encerrada com lucro, nós iniciamos um novo ciclo com o lote inicial.

Para determinar a condição para um novo início de ciclo, use o elemento OR lógico. Ele retorna "true" se pelo menos uma das condições for satisfeita e "false" se todas as condições não forem satisfeitas. Nós precisamos verificar duas condições. (1) A condição para o encerramento da negociação com lucro é retirada do elemento Compare, que verifica se o lucro foi menor que zero (essa conexão ao elemento OR deve ser revertida). (2) Para verificar se esta é a primeira negociação, use o elemento AND, onde nós conectamos os valores invertidos dos elementos Equal. Afinal, se a negociação anterior não for nem uma compra nem uma venda, isso significa que essa é a situação em que simplesmente não há uma posição anterior.

Novo ciclo

Se houve uma posição anterior, nós precisamos calcular o próximo volume de negociação. Para fazer isso, use o elemento Arithmetic. Ele executa várias operações matemáticas com dois números. Neste caso, nós multiplicamos o lote da negociação anterior pelo parâmetro Lot Multiplier, criado usando o elemento Input Parameter. Para nossa estratégia, defina seu valor padrão igual a 2.

Cálculo do lote

Para o cálculo final do próximo tamanho do lote de negociação, use o elemento Variable, semelhante a determinação do próximo tipo de negociação. Pois, se começarmos um novo ciclo, nós precisamos usar o lote inicial, mas se continuarmos o ciclo após uma negociação com prejuízo, nós precisaremos usar o tamanho do lote da próxima negociação, calculado na etapa anterior.

Além disso, adicione um elemento para o tamanho inicial do lote (parâmetro de entrada). O esquema completo ficará assim:

Próximo lote de negociação

Para uma visão geral e rápida dos parâmetros de todos os elementos do esquema / estratégia, você pode usar a função Parameters Layout view.

Nesse caso, o esquema mudará sua aparência e será dividido em duas áreas. O primeiro lista todos os parâmetros que estão presentes no esquema, e a segunda parte lista todos os elementos que contêm cada um dos parâmetros. Neste layout, nós podemos verificar as configurações de cada um dos parâmetros em todos os elementos.

Vamos nos certificar de que todos os elementos usem o símbolo atual do gráfico no qual o Expert está executando. Para fazer isso, mude o esquema para o modo Parameter Layout e selecione o parâmetro Symbol Name na lista do lado esquerdo. Em seguida, na área do lado direito, você pode ver que esse parâmetro está presente em três elementos do esquema e está definido como Símbolo Atual em cada um deles, o que significa usar o instrumento do gráfico atual. Se necessário, esse valor pode ser alterado para o nome de qualquer outro par de moedas na Observação do Mercado.

Visualização do Parameters Layout

Vamos verificar nosso Expert Advisor completo no testador de estratégia. Para fazer isso, como no exemplo anterior, nós precisamos gerar um arquivo de código-fonte e compilá-lo no programa MetaEditor.

Verificação no testador

A estratégia é arriscada, mas funciona de acordo com o algoritmo fornecido! Há ainda muito espaço para melhorar mais a estratégia, otimizando seus parâmetros e reduzindo os riscos. Você pode adicionar diferentes filtros de entrada, adicionar um filtro de spread, desativar o início de um novo ciclo na sexta-feira antes do final de semana, limitar o tamanho máximo do lote ou o número máximo de negociações em um ciclo ou sugerir outra coisa.


Exemplo #3: Utilitário "Closing a Trades Group on Total Profit"

Usando este construtor de estratégia visual, é possível criar não apenas estratégias de negociação, mas também ferramentas mais simples - utilitários de negociação.

Agora nós vamos criar um utilitário que fecha um grupo de posições quando o nível de lucro especificado for atingido.

O utilitário deve atender aos seguintes requisitos.

  • Ele NÃO deve abrir nenhuma posição.
  • Ele deve rastrear as posições atuais na conta com um determinado número Mágico (parâmetro de entrada).
  • Quando esses negócios atingem um determinado nível de lucro total (parâmetro de entrada), todas as posições devem ser encerradas.
  • A ferramenta deve gerar um alerta ao fechar um grupo de negociações, indicando o lucro total e o número de tentativas para fechar todo o grupo de negociações.

O último ponto dos requisitos se deve ao fato de que nem sempre é possível fechar a posição na primeira tentativa. As razões para isso podem ser diferentes. A mais frequente é a expiração do preço solicitado (requotes). Quanto maior o número de posições em um grupo fechado, maior a probabilidade de que um deles não seja encerrado na primeira tentativa, especialmente em momentos de maior volatilidade.

O gatilho para encerrar um grupo de posições será a condição de que essas posições atinjam um certo nível de lucro. Portanto, nós precisamos acessar esse grupo de posições e seus parâmetros.

Crie um grupo de negociações (o elemento Trades Group) com o número mágico especificado (elemento Input Parameter), descubra o número de posições nele e compare o valor obtido com o valor zero para determinar se há pelo menos uma posição a ser monitorada.

Grupo de negociações

Obtenha o lucro total atual desse grupo de negociações (elemento Trades Group Information) e compare esse valor com o nível de lucro fornecido para o encerramento (elemento Input Parameter).

Lucro do grupo de negociações

Agora nós podemos usar o elemento Compare como um gatilho para encerrar imediatamente o grupo inteiro, mas faremos isso de uma maneira um pouco diferente. O fato é que Expert Advisors são executados a cada tick - uma vez para cada tick. E na negociação real a seguinte situação é possível. A condição para encerrar todos as posições foi satisfeita, o utilitário começou a encerrá-las, mas por algum motivo, apenas uma parte dessas posições poderia ser encerrada durante este tick, e algumas foram deixadas em aberto. No próximo tick, a ferramenta verificará a satisfação da condição novamente, mas ela pode não ser mais satisfeita, porque uma parte das posições foi fechada no tick anterior e elas não fazem mais parte do grupo considerado.

A solução é "lembrar" o fato de satisfazer a condição de fechar o grupo inteiro no elemento Variable. O EA fechará todas as posições nos seguintes ticks se esta variável mantiver o valor "true", até que todas sejam fechadas com sucesso. Depois que todas as negociações estiverem fechadas, redefina a condição para fechar (defina o valor como "false") e aguarde o fechamento do novo gatilho.

O fechamento de posições é implementado com o elemento Close Trades Group.

Grupo de encerramento de posições


A lógica de negociação do utilitário está pronta e já pode totalmente funcional. Agora nós adicionamos a funcionalidade para contar as tentativas de encerrar um grupo de posições.

Para fazer isso, nós usamos o elemento Variable novamente, mas desta vez ele serve como um contador. Nós redefinimos o valor para 0 quando não há posições em aberto no grupo e aumentamos o valor em 1 (usando o elemento Arithmetic) sempre que tentamos encerrar um grupo de posições.

Além desses dois elementos, nós também precisamos de um elemento para converter um número decimal em um inteiro (Transformação), porque nós usamos uma variável do tipo inteiro para o contador, e o elemento Arithmetic retorna o valor do tipo decimal. Se nós usássemos uma variável do tipo decimal, essa transformação poderia ter sido evitada.

Adicione os elementos ao diagrama e configure-os, conforme mostrado abaixo:

Tentativas do contador

A única coisa que resta é formar o texto da mensagem e criar uma alerta com ele no momento do fechamento das posições. O texto da mensagem pode ser formada usando o elemento Combine String, que combina as partes da mensagem em uma única string.

A funcionalidade de alerta padrão do MetaTrader5 é implementada usando o elemento Alert.

Alerta

Vamos rever mais uma funcionalidade neste exemplo. Cada esquema pode conter vários finais - ações que devem ser executadas como resultado da execução do esquema e que não acionam quaisquer outras ações. Neste esquema, é a alerta e o encerramento do grupo de posições.

Se você quiser que estas ações sejam realizadas em uma determinada ordem, por exemplo, para criar um alerta antes do fechamento das posições - você precisa usar a opção Arrange Ends. Em seguida, uma caixa de diálogo é exibida, como no caso de organizar os parâmetros de entrada, onde é possível mover os elementos para cima e para baixo, especificando sua sequência de execução.

Arranging Ends


Nosso utilitário está completamente pronto. Como este Expert Advisor não abre nenhuma ordem e é apenas um assistente de negociação, não há necessidade de testá-lo no testador de estratégia.

O esquema pode ser imediatamente executado ao vivo, mesmo sem gerar o código-fonte e criar um arquivo do EA (embora isso possa ser feito e o EA pronto possa ser executado em um gráfico separado no terminal). Para iniciar a operação ao vivo do esquema, pressione o botão Iniciar / Parar a Execução. Quando ele é clicado, o esquema começa a ser executado da mesma forma como se o arquivo do EA fosse lançado em um gráfico separado. Esta opção pode ser usada para a execução simultânea de vários utilitários simples sem a necessidade de gerar código-fonte para eles e sem executá-los em gráficos separados.

Execução do esquema ao vivo


Conclusão

Este artigo contém uma visão geral do construtor de estratégia visual Mission Automate. Usando os exemplos, ele mostra como qualquer pessoa pode criar robôs de negociação sem programação.

Baixar o aplicativo no Mercado e testá-lo é fácil e gratuito. Estão incluídos 5 Expert Advisors prontos, baseados nas estratégias mais populares.

Para MetaTrader4Mission Automate Demo MT4

Pata MetaTrader5Mission Automate Demo MT5

Eu tenho grandes planos para o desenvolvimento deste projeto, então eu realmente aprecio quaisquer comentários e sugestões para melhorar o programa.

Vamos tornar o algotrading acessível a todos!

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

Últimos Comentários | Ir para discussão (6)
Andrey Barinov
Andrey Barinov | 28 dez 2018 em 06:34
flavio_125:

Ola Colega!

Muito boa a ferramenta. Vai me ajudar muito e, acredito, a outras pessoas também. Parabéns!

Você poderia me dar uma dica?!

Penso em fazer um Robô que só execute Compras, ou seja, ele abre uma compra e de acordo com alguns parâmetros de Stop Loss e Take Profit ele fecharia essa posição, abrindo outra em seguida.

Você teria algum exemplo desse tipo estrategia que pudesse ser construído com essa ferramenta?  

Desde já, lhe agradeço muito!

Sds,

Flávio

Hello,

there are some built-in examples. They do both buys and sells but if you need to do only buys you can remove selling part of the scheme. 

Please, study the built-in schemes and the article above. Let me know if you have any specific questions along the way!

Best Regards.

Andrey.

Joscelino Celso de Oliveira
Joscelino Celso de Oliveira | 28 dez 2018 em 18:25
flavio_125:

Ola Colega!

Muito boa a ferramenta. Vai me ajudar muito e, acredito, a outras pessoas também. Parabéns!

Você poderia me dar uma dica?!

Penso em fazer um Robô que só execute Compras, ou seja, ele abre uma compra e de acordo com alguns parâmetros de Stop Loss e Take Profit ele fecharia essa posição, abrindo outra em seguida.

Você teria algum exemplo desse tipo estrategia que pudesse ser construído com essa ferramenta?  

Desde já, lhe agradeço muito!

Sds,

Flávio

Flavio,


Sua estrategia eh relativamente simples de ser codificada. Voce ja programa na linguagem MQL5?

Se não, e quer implementação rapida, sugiro buscar na área de freelance: https://www.mql5.com/en/forum/260957.

Se nao tem pressa, pode estudar a linguagem e desenvolver. Sugiro começar com os seguintes artigos e documentos:


https://www.mql5.com/pt/articles/367

https://www.mql5.com/pt/articles/240

https://www.mql5.com/pt/docs/basis


[]´s

flavio_125
flavio_125 | 29 dez 2018 em 20:10
Andrey Barinov:

Hello,

there are some built-in examples. They do both buys and sells but if you need to do only buys you can remove selling part of the scheme. 

Please, study the built-in schemes and the article above. Let me know if you have any specific questions along the way!

Best Regards.

Andrey.

Thank you for your attention, Andrey!

Yes, I will study!

Best Regards.

Flávio.

flavio_125
flavio_125 | 29 dez 2018 em 20:58
Joscelino Celso de Oliveira:

Flavio,


Sua estrategia eh relativamente simples de ser codificada. Voce ja programa na linguagem MQL5?

Se não, e quer implementação rapida, sugiro buscar na área de freelance: https://www.mql5.com/en/forum/260957.

Se nao tem pressa, pode estudar a linguagem e desenvolver. Sugiro começar com os seguintes artigos e documentos:


https://www.mql5.com/pt/articles/367

https://www.mql5.com/pt/articles/240

https://www.mql5.com/pt/docs/basis


[]´s

Olá Joscelino!

Infelizmente, não programo em MQL5.

Séria uma coisa simples sim. Só um start de compra, de acordo com alguns parametros de entradas, sem uso de indicatores.

Vou dar uma olhada nesses artigos e forum que você indicou.

Obrigado pela ajuda!

Sds,

Flávio

Joscelino Celso de Oliveira
Joscelino Celso de Oliveira | 30 dez 2018 em 00:48
flavio_125:

Olá Joscelino!

Infelizmente, não programo em MQL5.

Séria uma coisa simples sim. Só um start de compra, de acordo com alguns parametros de entradas, sem uso de indicatores.

Vou dar uma olhada nesses artigos e forum que você indicou.

Obrigado pela ajuda!

Sds,

Flávio

Ola Flavio,

Mesmo sem saber programar eh possível desenvolver um EA no Metatrader, se sua estrategia englobar indicadores padronizados. De qualquer maneira, terá de ler a documentação.

Caso queira contratar um desenvolvedor, sugiro também o artigo abaixo.

Sucesso!

[]'s

EA com interface gráfica: Fornecendo funcionalidade (Parte II) EA com interface gráfica: Fornecendo funcionalidade (Parte II)

Esta é a segunda parte do artigo sobre criação de um EA multissímbolo de sinal para negociação manual. Nós já criamos uma interface gráfica. Neste artigo, vamos falar sobre como vinculá-la à funcionalidade do programa.

Floresta de Decisão Aleatória na Aprendizagem por Reforço Floresta de Decisão Aleatória na Aprendizagem por Reforço

A Floresta Aleatória (RF), com o uso de bagging, é um dos métodos mais poderosos de aprendizado de máquina, o que é ligeiramente inferior ao gradient boosting. Este artigo tenta desenvolver um sistema de negociação de autoaprendizagem que toma decisões com base na experiência adquirida com a interação com o mercado.

Redes Neurais Profundas (Parte VI). Ensemble de classificadores de redes neurais: bagging Redes Neurais Profundas (Parte VI). Ensemble de classificadores de redes neurais: bagging

O artigo discute os métodos de construção e treinamento de ensembles de redes neurais com estrutura de bagging. Ele também determina as peculiaridades da otimização de hiperparâmetros para classificadores de redes neurais individuais que compõem o ensemble. A qualidade da rede neural otimizada obtida no artigo anterior da série é comparada com a qualidade do ensemble de redes neurais criado. São consideradas as possibilidades de melhorar ainda mais a qualidade da classificação do ensemble.

Aplicação do método de Monte Carlo para otimizar estratégias de negociação Aplicação do método de Monte Carlo para otimizar estratégias de negociação

Antes de lançar um robô em uma conta de negociação, geralmente nós realizamos testes e otimizações no histórico das cotações. No entanto, surge uma pergunta razoável: como os resultados passados ​​podem nos ajudar no futuro? O artigo descreve a aplicação do método de Monte Carlo para construir critérios personalizados para a otimização da estratégia de negociação. Além disso, são considerados os critérios de estabilidade do EA.