Como criar uma Especificação de Requisitos para solicitar um robô de negociação

13 setembro 2018, 09:13
MetaQuotes Software Corp.
0
1 575

Índice

Pré-requisitos para solicitar um robô de negociação

Robôs de negociação são programas que operam de acordo com os algoritmos subjacentes. Um algoritmo é um conjunto de ações que precisam ser executadas em resposta a determinados eventos. Por exemplo, a tarefa mais comum dos algoritmos de negociação é a identificação do evento "Nova Barra". Quando o evento ocorre, o robô verifica o surgimento dos sinais de negociação e age de forma correspondente.

Antes de decidir programar ou solicitar um robô de negociação, você precisa formular um sistema de negociação com regras claras para definir os momentos favoráveis ​​para a realização das operações de negociação. O desenvolvimento de qualquer sistema de negociação, mesmo o mais complexo, começa com as coisas básicas, como a definição dos sinais de negociação para a compra e venda. Além disso, você poderá adicionar várias opções para gerenciar e encerrar as negociações.

Você não precisa ter muitos anos de experiência trabalhando com o terminal de negociação para desenvolver uma estratégia de negociação. Você pode escolher entre centenas de ideias comprovadas disponíveis na web. Mesmo se você não tiver certeza sobre suas habilidades de programação, isso não é um obstáculo. O serviço Freelance irá ajudá-lo a encontrar um desenvolvedor adequado.

Abaixo estão os artigos recomendados, que você pode querer ler antes de prosseguir com as técnicas de negociação dos algoritmos:

Por que é importante ter uma Especificação de Requisitos bem preparada?

Ao encomendar ou desenvolver um robô de negociação, você precisa formular os requisitos: tarefas a serem executadas pelo robô, condições sob as quais ele irá operar, resposta a incidentes e situações de emergência, métodos de controle necessários, etc. Os robôs de negociação são programas, que devem seguir estritamente a lógica subjacente. Para programar um algoritmo de ações/rotinas, você deve preparar sua descrição detalhada.

A descrição de uma estratégia de negociação é fornecida na forma de Especificação de Requisitos. Quanto mais detalhes você fornecer, ocorrerá menos mal-entendidos entre você (o Cliente) e o programador (o Desenvolvedor da solicitação).

A parte importante da Especificação de Requisitos para um Expert Advisor é a apresentação das regras de negociação de forma bem clara. Mesmo que você não esteja solicitando um EA, mas queira desenvolver um, você deve começar com a definição dessas regras. Prepare a Especificação dos Requisitos e inclua os pontos relacionados ao teste/otimização do EA. Adicione hipóteses, na qual você usará para verificar a qualidade e a estabilidade de sua estratégia de negociação, descreva critérios para selecionar os parâmetros ideais e explique por que os considera importantes.

Inclua todos os estágios de desenvolvimento do EA na Especificação de Requisitos — isso tornará a ideia do algoritmo clara para o Desenvolvedor e ajudará você a recapitular os detalhes após semanas, meses ou mesmo anos mais tarde. A negociação algorítmica não é um hobby, mas um caminho de pesquisa minucioso, em que todos os estágios precisam ser documentados adequadamente. Um diário de desenvolvimento do sistema de negociação será muito útil sempre que você precisar testar uma nova ideia.

Exemplos de Especificação de Requisitos

Aqui está um exemplo de Especificação de Requisitos para o desenvolvimento do Expert Advisor Sample MACD, que está disponível no pacote padrão da MetaTrader 5.

1. A ideia do sistema de negociação é a seguinte: são realizadas as entradas à mercado quando a linha principal e de sinal do MACD se cruzam na direção atual da tendência.

2. A tendência é determinada com base na Média Móvel Exponencial com o período especificado (InpMATrendPeriod). Se o valor atual da EMA for maior que a anterior, a tendência é vista como de alta (ema_current > ema_previous). Alternativamente, se a EMA atual estiver abaixo da anterior, a tendência é considerada de baixa (ema_current < ema_previous).

3. Sinais de Negociação:

  • Sinal de compra: a linha principal do MACD cruza a linha de sinal para cima (macd_current>signal_current && macd_previous<signal_previous).
  • Sinal de venda: a linha MACD principal cruza a linha de sinal para baixo (macd_current<signal_current && macd_previous>signal_previous). A figura abaixo mostra os casos de Compra e Venda.


4. As posições são encerradas em sinais opostos: as posições de Compra são encerradas nos sinais de Venda e as posições de Venda são encerradas nos sinais de Compra.

5. As posições são abertas à preço de mercado, quando surge uma nova barra. O Expert Advisor deve ser testado usando os preços de abertura (Open), portanto, não há necessidade de adicionar funções para desabilitar as operações dentro da barra.

6. Filtros adicionais para abrir uma posição:

O valor absoluto da linha principal do MACD será usado para filtrar os sinais fracos: o sinal só é confirmado se esse valor for maior que open_level (em pontos). As condições de confirmação do sinal são as seguintes:

  • Confirmação de um sinal de compra: Abs(macd_current)>open_level
  • Confirmação de um sinal de venda: macd_current>open_level

7. Filtros adicionais para encerrar uma posição:

O valor absoluto da linha principal do MACD também será usado para confirmar o encerramento da posição: o sinal é confirmado se este valor for maior que close_level (em pontos). As condições de confirmação do sinal de encerramento são as seguintes:

  • Confirmação para encerrar as posições de Compra — macd_current>close_level
  • Confirmação para encerrar as posições de Venda — Abs(macd_current)>close_level

8. Encerramento por Take Profit — durante a abertura da posição, um nível de Take Profit é definido a uma distância fixa do preço de abertura, especificado em pontos. O valor é definido no parâmetro de entrada InpTakeProfit.

9. Gestão de posição

O TrailngStop é usado para proteger o lucro. O Stop Loss é definido se o lucro em pontos exceder o valor especificado no parâmetro InpTrailingStop. Se o preço continuar a se mover na direção do lucro, o Stop Loss deve ser arrastado na distância determinada. O Stop Loss não pode ser movido para a direção oposta (da perda), ou seja, o valor de Stop Loss não pode ser aumentado. Se nenhuma das ordens de proteção (Take Profit ou Stop Loss) for acionada, a posição deve ser fechada por um sinal oposto. Nenhum outro método de saída de posição está disponível.


O que está contido na Especificação de Requisitos?

Ideia de negociação

Descreva a ideia geral subjacente na primeira parte da Especificação de Requisitos. Exemplo: "Se o preço aproximar-se do nível de resistência duas vezes e reverter, na próxima vez é provável que ele quebre a resistência." Aqui você pode adicionar um gráfico com as linhas de suporte/resistência, indicadores e notas explicativas. Números exatos ou algoritmos de cálculo não são necessários na descrição da ideia. Então, neste exemplo, nós não precisamos explicar como determinar:

  • nível de resistência,
  • nível de rompimento,
  • o conceito de "é provável que".

Alguma abstração no estágio inicial ajudará a focar na ideia e não nos detalhes técnicos. Dessa forma, você pode gerar várias modificações de sua estratégia de negociação, substituindo ou combinando blocos de estratégia, indicadores e filtros. Com a ideia geral comum, você usará parâmetros de entrada diferentes para os seus robôs de negociação.

Em seguida, você precisa descrever todos os termos e conceitos contidos na descrição da ideia. Se a tendência for importante para a sua estratégia, defina claramente qual indicador deve ser usado para determinar a direção e a força da tendência. As características numéricas dessas definições formam a base dos parâmetros de entrada do Expert Advisor, sendo possível a sua otimização no Testador de Estratégia. Portanto, a primeira seção da Especificação de Requisitos é "A Ideia de Negociação".

Termos e definições

Recomenda-se criar uma seção separada na Especificação de Requisitos para explicar os termos e definições relacionadas. Explique os termos em parágrafos separados. Use a fonte negrito para destacar os principais conceitos da sua estratégia de negociação. Você pode adicionar uma imagem quando aplicável. Os parâmetros de entrada do EA desejado podem ser escritos em itálico.

Sinais de negociação

Esta é a seção mais importante da Especificação de Requisitos. Ela fornece a descrição de condições, estados do mercado e valores dos indicadores, sob os quais uma operação de Compra deve ser executada. Para descrever cada condição necessária para gerar um sinal de Compra, escolha o parâmetro numérico que afeta o surgimento de um sinal. Por exemplo, este pode ser o tipo de suavização e o período para uma Média Móvel. Esses parâmetros importantes serão usados ​​como os parâmetros de entrada do seu Expert Advisor.

Forneça uma descrição separada das condições de venda, mesmo que sejam opostas à compra. Isto pode ter características específicas, que o programador pode interpretar erroneamente. Por exemplo, sua condição de Compra pode ser definida como "Valor > 0". Certifique-se de indicar uma condição exata para a venda, como "Valor < 0" ou "Valor <= 0".

As condições e filtros adicionais são frequentemente usados ​​para confirmar ou cancelar os sinais de negociação. Use as capturas de tela para várias situações do mercado com uma explicação visual dos indicadores e configurações. No futuro, essa visualização pode ajudá-lo a analisar situações, quando o seu EA ignorar um sinal aparentemente óbvio ou realizar uma operação em um momento desfavorável.

Capturas de tela e fluxogramas

Você pode usar qualquer um dos programas gratuitos para criar as capturas de tela e fluxogramas. Dicas sobre quais programas escolher e como usá-los são fornecidos no artigo Como criar uma Especificação de Requisitos para solicitar um indicador. Além disso, o artigo fornece recomendações sobre como solicitar um indicador de seta gerando sinais de compra e venda. Esse indicador, que executa separadamente do Expert Advisor, facilita a verificação e o monitoramento do robô de negociação durante a operação em tempo real e no teste visual.

O tempo de vida dos sinais/ordens/posições

A segunda parte importante de uma estratégia de negociação é sair de uma posição em aberto e excluir as ordens pendentes. Os sinais de negociação também podem ser cancelados após algum tempo ou sob certos eventos. Portanto, você precisa descrever as condições para encerrar uma posição de compra/venda, remover uma ordem pendente ou cancelar um sinal.

Gestão de posições abertas e ordens pendentes

Se a sua estratégia de negociação implica no encerramento por Stop Loss e Take Profit, descreva o algoritmo de cálculo. Opcionalmente, você pode solicitar um mecanismo de acompanhamento para uma modificação flexível desses níveis. Nesse caso, você precisa descrever as condições e algoritmos do Trailing Stop. A modificação do SL/TP pode ser realizada na abertura da barra ou em cada tick. Especifique a opção desejada na Especificação de Requisitos. Além disso, as diferentes opções influenciam os testes da estratégia. Certifique-se de ler o artigo Teste de estratégias de negociação em ticks reais.

Onde eu obtenho a Especificação de Requisitos se eu não posso criá-la?

Uma especificação de requisitos mal redigida ou sua ausência geralmente indica que as regras do sistema de negociação não foram formuladas. Então, o que o cliente chama de sistema de negociação é, na verdade, apenas uma ideia. Todas as nuances e ausência de descrições lógicas necessárias serão reveladas durante o processo de desenvolvimento. O desenvolvedor terá que pensar em possíveis opções, que não foram fornecidas pelo Cliente.

O desenvolvedor pode programar um robô de negociação por sua conta e risco nesse caso. Mas é provável que você perca muito tempo discutindo cada problema possível. Se o comportamento do robô difere das expectativas do Cliente devido à falta de uma descrição apropriada, tal solicitação pode ser enviada para a Arbitragem. Os clientes geralmente acusam o Desenvolvedor pela programação incorreta do robô. No entanto, a decisão de Arbitragem será baseada na Especificação de Requisitos. De acordo com as Regras Freelance, qualquer outra correspondência não será levada em consideração durante as disputas:

Durante a arbitragem, a base para a tomada de decisão é apenas a Especificação de Requisitos.

Às vezes, um cliente pode ter regras de negociação claras, mas pode não conseguir criar a Especificação de Requisitos por alguns motivos. Podem surgir problemas com a descrição correta, fórmulas matemáticas, rede neural ou problemas relacionados à programação da máquina e outros aspectos. Nesse caso, a criação da Especificação de Requisitos pode ser solicitada. Isso pode ser feito nas seções "Assessoria de programação" ou "Outros" do serviço Freelance.

Escolha uma dessas categorias, crie uma solicitação chamada "Criação da Especificação de Requisitos para a solicitação de um robô de negociação" e especifique o custo inicial do trabalho. Um desenvolvedor experiente de sistemas de negociação ajudará você a descrever suas regras de estratégia de forma clara e fácil de entender. Use as capturas de tela para mostrar as configurações de seus sinais de negociação com base em gráficos, indicadores e objetos gráficos que você usa.

O programador tentará entender o seu sistema de negociação e ajudá-lo a preparar uma descrição do algoritmo de negociação. Se você não pode formular nenhum conceito (por exemplo, "momentum" ou "rebote do nível"), o programador pode sugerir ideias prontas com base em sua experiência. Como regra geral, qualquer situação de mercado pode ser descrita logicamente (e depois programaticamente) por algum modelo simples com parâmetros variáveis. Essa variação pode ser expressa por um determinado parâmetro, que você otimizará posteriormente em seu Expert Advisor.

Padrões perfeitos não existem, porque o mercado nunca se repete. No entanto, situações semelhantes podem ser encontradas no histórico. Sua cooperação deve resultar em uma Especificação de Requisitos pronta, que você pode usar para solicitar um robô de negociação.

Termos de uso

Frequentemente, os sistemas de negociação contêm vários conceitos-chave ou termos que descrevem o estado do mercado ou o comportamento dos preços. Mesmo se você acha que usa os conceitos geralmente aceitos e simples na Especificação de Requisitos, é melhor fornecer uma descrição mais clara. Adicione um parágrafo de descrição para cada termo.

Por exemplo, de acordo com Bill Williams, uma tendência de alta ocorre quando todas as três linhas do indicador Alligator aparecem na seguinte ordem de baixo para cima: azul, vermelho, verde.


Outra definição clássica de tendência de alta foi sugerida por Larry Williams: cada novo topo é maior que o topo anterior e cada novo fundo não é menor que o anterior.


Você também pode usar as capturas de tela dos gráficos como descrições de termos. Use fontes em negrito para o termos na Especificação dos Requisitos para ajudar o programador a encontrá-los no texto sempre que necessário.

Não coloque links para outros recursos (como sites, publicações, tópicos de fóruns, etc.) em vez de explicações. Uma explicação detalhada completa de todos os pontos deve estar disponível diretamente na Especificação de Requisitos. Tome o seu tempo para descrever todos os termos usados ​​- isso economizará o tempo de desenvolvimento do robô.

Como escrever uma descrição de solicitação na seção Freelance

Ao criar uma solicitação, descreva a essência geral de sua ideia de negociação, de modo que os possíveis desenvolvedores entendam o que você precisa. Não revele as regras do sistema de negociação nem os detalhes dos indicadores na descrição da solicitação.

A descrição pode ser assim:

Desenvolver um Expert Advisor de reversão de tendência. Os sinais de reversão serão gerados com base nos padrões de Price Action. A tendência será determinada com base no ADX, Alligator e MACD. A seleção do indicador deve estar disponível nos parâmetros de entrada do EA.

A ideia geral de uma estratégia de negociação

Você pode mencionar os símbolos a serem negociados, os especificidades de identificação das tendências e outras informações. Para os EAs seguidores de tendências, especifique os métodos de entrada - durante uma reversão, em um rompimento ou em outros métodos.

Geralmente, existem dois grandes tipos de estratégias de negociação financeira: esperar a continuação do movimento ou o retorno ao seu valor médio. Sua ideia de negociação deve estar relacionada a um desses dois tipos. Explique como os negócios devem ser abertos: à mercado, após a confirmação de uma rompimento/reversão ou a um preço mais adequado.

Descrição de uma configuração que precede o sinal

Os sinais simples podem ser facilmente descritos usando algoritmos. Por exemplo, os padrões simples e populares incluem o "Engolfo" e "Pin bar". No entanto, é praticamente impossível criar uma estratégia lucrativa baseada em tais formações simples. Esses padrões são usados ​​para determinar os pontos de inversão de tendência. A configuração para aguardar o padrão Engolfo de Baixa é a presença de uma tendência de alta.

Portanto, além de descrever o sinal de negociação, você deve explicar uma configuração apropriada na Especificação de Requisitos.

Descrição do sinal

Um sinal de compra ou venda surge quando uma determinada condição é atendida. Por exemplo, um sinal clássico de Compra aparece quando o preço cruza a Média Móvel para cima. Você deve indicar os seguintes parâmetros nesta descrição de sinal:

  • Tipo da Média Móvel - SMA, EMA, VIDYA, etc.
  • Período da Média Móvel
  • Parâmetros adicionais que podem ser necessários para algumas Médias Móveis, como a AMA.

Além disso, a frase "o preço cruza a Média Móvel" precisa de explicação, porque não é tão simples quanto parece. Um sinal pode surgir no exato momento do cruzamento. Alternativamente, você pode optar por aguardar a vela romper a MA e fechar acima dela. Isso afeta o código do seu Expert Advisor, bem como o modo da geração do tick a ser usado durante o teste.

Portanto, você precisa explicar claramente os conceitos de tendência, nível, rompimento, cruzamento e outros, ou seja, escolher entre operações com ticks, barras e preços de fechamento (Close). Forneça descrições formais e parâmetros numéricos que você otimizará no Testador de estratégia. Por exemplo, a força da tendência pode ser medida usando o indicador ADX, enquanto que o Ichimoku Kinko Hyo não é adequado para este fim.

Quanto mais condições e filtros seu sistema de negociação precisar, mais complexo será o robô. Além disso, as estratégias complexas normalmente têm um grande número de parâmetros de entrada, o que pode exigir muitos passos durante a otimização. Embora o Testador de Estratégia da MetaTrader 5 permita acelerar o tempo de otimização através do uso do algoritmo genético e a MQL5 Cloud Network, o volume de dados resultantes também será enorme.

Portanto, nós recomendamos seguir algumas regras de desenvolvimento e depuração do EA.

  • Para habilitar o teste visual do sinal e sua depuração, o EA deve exibir os sinais emergentes como rótulos/objetos no gráfico. Além da depuração sob os dados do histórico, você será capaz de visualizar a formação dos sinais no gráfico. Às vezes, pode ser difícil entender algoritmos complexos. A exibição visual dos sinais fornece uma maneira conveniente de monitorar a abertura das negociações.
  • Outra solução conveniente é começar com a criação de um indicador que exibe os sinais de Compra/Venda como setas no gráfico. Essa é uma solução mais conveniente, que permite depurar duas aplicações separadamente. Deixe o robô negociar e o indicador ser plotado. Nesse caso, o código do Expert Advisor conterá apenas a funcionalidade necessária. Além disso, pode haver mais sinais do que operações executadas. Por exemplo, o EA recebe um sinal de compra e entra no mercado. De acordo com o algoritmo, outros sinais de compra não são mais verificados. Se você estiver usando um indicador separado, ele mostrará todos os sinais de compra, independentemente da presença de uma posição em aberto.
  • Além de fornecer as descrições separadas para os sinais de Compra e Venda na Especificação de Requisitos, é recomendável depurá-los separadamente. Os sinais de Compra e Venda geralmente estão inter-relacionados, ou seja, quando há uma posição de compra, todos os sinais de venda são ignorados (a menos que os sinais de venda sejam usados ​​para fechar as posições de compra). Testes separados de sinais de Compra e Venda permitem que você verifique a exatidão da lógica subjacente em sua forma pura.

Além disso, você pode otimizar os parâmetros da estratégia separadamente para compra e venda e, em seguida, combinar os algoritmos em um único robô de negociação. Dessa forma, a busca por parâmetros ótimos será executada mais rapidamente com menos erros. No entanto, neste caso, você precisará pagar adicionalmente pela criação dos indicadores e Expert Advisors intermediários. Mas uma boa ideia de negociação vale a pena, não é?

Tempo de vida do sinal

Em alguns sistemas de negociação, uma posição não é aberta imediatamente após o surgimento de um sinal. Esse sistema pode exigir confirmação por sinais adicionais. Por exemplo, após a quebra do nível de resistência, você pode querer esperar até que o preço retorne ao nível quebrado, para entrar no mercado em melhores condições. Você deve definir o parâmetro de tempo aqui: por quanto tempo o sinal de Rompimento do Nível será válido. Os sistemas podem esperar por 5 barras ou até o final da sessão de negociação, após o qual o sinal é cancelado.

Adicione o parâmetro Lifetime para usar filtros adicionais, o que pode melhorar a qualidade do sistema de negociação.

Colocação de ordens e abertura de posições

Você pode fornecer funções adicionais com antecedência, ao desenvolver as funções de envio de ordens de negociação. Por exemplo, você pode usar diferentes MagicNumbers e comentários para análise posterior de resultados de negociação e otimização. Você pode usar o MagicNumber com base na hora e no dia de entrada, um número padrão de negociação e outros detalhes, que permitem uma análise adicional. Assim, você pode implementar várias estratégias de negociação em um Expert Advisor e otimizar todas elas, para encontrar os melhores parâmetros para o seu robô de negociação. Se você quiser solicitar tal funcionalidade, descreva o algoritmo de cálculo do MagicNumber para cada padrão/setup/sinal.

Uma ordem de negociação nem sempre é executada com sucesso. É necessário prever situações em que a posição não possa ser aberta/fechada durante a primeira tentativa. Como o EA deve lidar com tal situação: deve fazer uma pausa ou esperar por um novo tick? Quantas tentativas são permitidas? Quais informações devem ser gravadas nos logs? Em que formato as informações devem ser escritas? Será que uma notificação deve ser enviada para o trader? Com que frequência as mensagens devem ser enviadas para evitar situações de ataque DDoS?

Use os comentários nas ordens de negociação para análise rápida do histórico de negociação. Às vezes, os servidores de negociação escrevem comentários específicos nesse campo. Portanto, seu robô também pode escrever seu próprio diário de operações de negociação.

Se sua estratégia de negociação usa níveis de Stop Loss e Take Profit, descreva um algoritmo para seus métodos de cálculo e colocação. Por exemplo, o Stop Loss pode ser definido somente quando o preço se move por um número especificado de pontos na direção do lucro. Se o SL e TP forem definidos após uma abertura de posição bem sucedida, descreva o procedimento para verificar a abertura de posição imediatamente após o envio de uma ordem de negociação ou no próximo tick.

Gestão de posições/ordens da negociação

A regra básica do trader: deixe seus lucros correrem e reduza suas perdas. Em termos algorítmicos, isso significa que você deve definir um Stop Loss protetor para cada posição sem limitar os seus lucros em potencial pelas ordens de Take Profit.

O tamanho da ordem de stop pode afetar muito os resultados da negociação. Muitas vezes, os traders tentam encontrar as melhores distâncias de SL/TP para maximizar os lucros. Tente encontrar os algoritmos de cálculo de distância que levem em consideração a volatilidade do mercado, a direção da tendência e os níveis de suporte/resistência.

Você pode estudar os sistemas de negociação existentes para encontrar uma ideia adequada de SL/TP. Muitos programadores têm bibliotecas prontas, que podem ser usadas ao criar um robô de negociação baseado em sua ideia.

Considere e descreva os seguintes pontos na Especificação de Requisitos:

  • uso dos níveis de Stop Loss e Take Profit, algoritmo de cálculo de distância;
  • uso de Trailing Stop, condições para gatilho, algoritmos de cálculo de passo;
  • Se as ordens pendentes forem usadas para entradas, mencione se elas devem ser rastreadas e descreva o algoritmo apropriado;
  • a necessidade de monitorar o lucro/perda flutuante de uma posição em aberta, para encerrar uma posição ao atingir o nível de lucro/prejuízo especificado;
  • etc.

Cancelamento das ordens e fechamento de posições

Outro método de gestão de posição e ordem se baseia nos sinais opostos e de tempo. Você pode descrever as opções adicionais de fechamento e remoção, como:

  • com base no valor do lucro ou prejuízo flutuante;
  • quando o preço se move na distância especificada do nível atual da ordem pendente em aberto (o que pode significar que a oportunidade foi perdida);
  • na hora especificada;
  • após um número especificado de barras;
  • após o intervalo de tempo especificado;
  • no caso de um sinal oposto;
  • se a configuração/padrão favorável desaparecer.

Cálculo do lote da ordem

Alguns traders incluem algoritmos de cálculo de lote de negociação no primeiro estágio da criação do robô. No entanto, não é recomendado incluir os algoritmos de gerenciamento de capital para calcular o lote neste estágio, uma vez que os parâmetros adicionais de entrada podem levar a um overfitting no histórico durante a otimização do EA.

Melhor testar sua primeira versão do EA usando um lote fixo. Somente o teste avançado usando dados históricos e negociações reais de vários meses permitirão que você revele os pontos fracos e fortes de seu algoritmo, após o qual você pode adicionar os métodos de gerenciamento de capital.

Aqui estão algumas abordagens para calcular o tamanho do lote da posição:

  • volume fixo, independentemente do lucro ou perda;
  • volume dependendo do tamanho do saldo ou patrimônio líquido;
  • com base no lucro/prejuízo obtido;
  • com base nos últimos N negócios (diferentes técnicas de martingale e anti-martingale);
  • dependendo do risco em % com o Stop Loss especificado;
  • outros cálculos baseados em risco, como o Método de Vince.

De qualquer maneira, antes de adicionar os algoritmos de cálculo de lote ao Expert Advisor, certifique-se de que seu sistema de negociação tenha uma vantagem sobre a negociação aleatória. Caso contrário, você só vai se enganar. Um sistema perdedor não pode ser transformado em lucrativo apenas por meio de métodos de gerenciamento de capital.

Processando erros de negociação e o estado do ambiente

Um robô de negociação é um programa autônomo, que opera 24 horas por dia. Portanto, forneça mecanismos para controlar as suas operações. As ações do seu Expert Advisor podem ser gravadas na aba Experts usando a função Print(). Em geral, recomenda-se registrar o surgimento dos sinais, padrões e configurações, o preço do mercado atual e os parâmetros da solicitação de negociação antes de enviar uma ordem para execução.

Se a execução da solicitação de negociação falhar, seus resultados também deve ser escritos no log. Analise os códigos de retorno do servidor de negociação para entender o motivo da falha para corrigi-lo. Descreva o seguinte na Especificação de Requisitos:

  • as situações, nas quais o EA deve escrever as mensagens para o registro;
  • quais parâmetros devem ser incluídos na mensagem;
  • formato de entrada necessário, como especificação de hora, números, separadores, etc.

Os registros detalhados das ordens de negociação e os resultados da execução permitirão identificar rapidamente os erros de negociação e economizar o seu dinheiro.

Um ponto importante, muitas vezes esquecido pelos algo traders iniciantes, é o reinício do terminal e a perda da conexão com a Internet ou o servidor. Nesses casos, você pode solicitar a possibilidade de notificação via funções de mensagens ou email.

Diferença entre a negociação na abertura da barra e intra-barra

Com cada mudança no preço, o robô inicia o processamento do evento NewTick pela função OnTick(). Muitos ticks podem ser recebidos durante a vida útil da barra, portanto, o EA executará sua lógica em cada barra de entrada. Se a sua estratégia produz sinais apenas na abertura da barra, então você precisa decidir o seguinte:

  1. como calcular os sinais de negociação, obter valores do indicador e o estado do ambiente de negociação apenas no primeiro tick, ignorando os próximos;
  2. o que fazer se as ações necessárias não puderem ser executadas no primeiro tick.

Vamos analisar um exemplo simples: um sinal na intersecção das médias móveis. Se o seu EA verificar um sinal a cada tick, pode haver uma situação em que o sinal aparece e depois desaparece. Como resultado, o EA irá abrir e fechar a posição várias vezes durante uma barra. Isso pode causar problemas durante a negociação online.

Para evitar esses problemas, teste o Expert Advisor no modo "Cada Tick" ou no "Cada Tick Baseado em Ticks Reais". Se você vir muitas operações similares em uma barra, revise o código do seu robô. Certifique-se de executar o teste visual do Expert Advisor e dos indicadores usados, para verificar sua operação em diferentes intervalos do histórico diretamente no gráfico.

Estratégias de Tick/scalping

Se você é um iniciante, escolha os sistemas operando na abertura de uma nova barra. Tais estratégias são mais fáceis de desenvolver e depurar, enquanto você só precisará fornecer um tratamento adequado do evento Nova Barra. Você pode verificar a exatidão do Expert Advisor sendo negociado na abertura da barra: os resultados do teste no "Somente Preços de Abertura" devem corresponder aos resultados no modo "Cada Tick"/"Cada Tick Baseado em Ticks Reais".

Os sistemas de negociação que operam dentro de uma barra são mais difíceis. Nós recomendamos ler o artigo Como desenvolver e depurar rapidamente uma estratégia de negociação na MetaTrader 5, que contém a descrição de todas as etapas necessárias para criar, depurar e otimizar o código de uma estratégia com base na análise contínua do fluxo de ticks.

Ao desenvolver um robô scalper, observe que tais estratégias são extremamente sensíveis ao spread, taxas, atrasos de rede, qualidade do histórico e desempenho. Qualquer piora nas condições de negociação pode "matar" essa estratégia.

Não confunda estratégias scalper que tentam entrar rapidamente no mercado e pegar lucros pequenos e garantidos, com as estratégias chamadas de pipsing. A estratégia pipsing pode ser alvo de alguns pips e tolerar um rebaixamento de dezenas e centenas de pips. Desenvolvedores de tais sistemas acreditam que o preço é susceptível a passar vários pontos na direção da posição em aberta do que 50-100-300 pontos em uma direção desfavorável. Como resultado da otimização, eles podem alcançar resultados impressionantes no histórico, com 90-99% de negócios vencedores. Quando você executar esse robô em uma conta real, a estratégia pode mostrar lucros esperados por algum tempo. Mas o mercado pode fazer um movimento brusco em algum momento, e tudo o que foi ganho será perdido.

Grid, martingale, preço médio e o lado negro dessas técnicas

Às vezes, os algo traders tentam melhorar os resultados aumentando o número de ordens/posições em uma direção e manipulando o valor do lote dependendo do nível de preço/rebaixamento/perda (soluções técnicas), ao invés de melhorar a qualidade dos sinais (soluções estratégicas).

Adições na forma de grids de ordens, elementos de martingale/anti-martingale e técnicas de preço médio da posição complicam o código e aumentam a possibilidade de erro do programa. Além disso, esses parâmetros adicionais aumentam o risco de overfitting. O uso de tais métodos não aumenta a estabilidade ou a lucratividade de um sistema de negociação, mas pode apenas atrasar o seu colapso.

Em vez de usar esses truques, nós recomendamos escolher outro caminho:

  • primeiro, crie um portfólio de diferentes sistemas de negociação não correlacionados em um símbolo;
  • então, você pode gradualmente criar um conjunto de portfólios em diferentes instrumentos.

Um portfólio de sistemas de negociação simples será mais resistente a mudanças do mercado do que um sistema complexo com múltiplos parâmetros de entrada otimizáveis.

Aspectos importantes da escolha de um desenvolvedor

Então, você quer implementar seu sistema de negociação na forma de um Expert Advisor: você criou uma solicitação na seção Freelance e recebeu aplicações de diferentes desenvolvedores. Como escolher o desenvolvedor ideal em termos de custo e qualidade?

Um desenvolvedor experiente não informará sobre a complexidade dos sistemas desenvolvidos anteriormente ou variações do sistema de negociação, mas fará perguntas sobre a sua Especificação de Requisitos. Em outras palavras, ele não tentará impressionar você. Profissionais apreciam o tempo, então eles geralmente não o desperdiçam em discussões filosóficas sobre a natureza da negociação ou dificuldades de programação.

O desenvolvedor pode solicitar mais detalhes, além da breve descrição fornecida. Se a solicitação estiver clara, o programador fornecerá informações sobre o custo e prazo.

Um desenvolvedor responsável apontará para pontos obscuros em sua Especificação de Requisitos. Se o sua solicitação não tiver detalhes, você poderá esclarecê-los mais tarde com o programador, bem como pagar pelos serviços de consultoria, aumentando o tempo e o custo da solicitação.

Um bom programador aprecia o tempo, então ele tentará esclarecer pontos pouco claros para começar a trabalhar com uma Especificação de Requisitos claramente e completamente preparada.

O que o programador não pode fazer por você

Pode acontecer do robô de negociação baseado no seu sistema mostre perdas durante o teste, embora tenha sido verificado manualmente e tenha certeza de que a estratégia seria lucrativa. Como regra geral, o motivo é que o Cliente pôde verificar o sistema manualmente usando um curto intervalo de tempo. O Testador de Estratégia permite obter resultados de negociação para qualquer intervalo disponível do histórico. O que pode ser feito neste caso? Um programador não pode fazer uma estratégia lucrativa a partir de uma perdedora, mas ele pode sugerir algumas ideias para melhorar a qualidade das entradas. Por exemplo, você pode adicionar alguma tendência, volume ou outros filtros para evitar os sinais falsos.

Além disso, sua estratégia pode funcionar melhor com outros parâmetros que podem se adequar melhor às condições de mercado. Otimize o EA para estudar a dependência dos valores ideais no ano, a volatilidade e outros fatores. Isso ajudará você a identificar pontos fracos ou limitações do seu sistema. Mas você terá que fazer isso sozinho, porque o desenvolvedor é apenas um programador de código, não um analista de sistema de negociação.

A última parte diz respeito aos erros do programador. É quase impossível desenvolver um programa sem erros. Estes podem incluir erros de código, quando um código errado é escrito para um algoritmo correto, assim como erros lógicos. Em ambos os casos, você terá que encontrá-los sozinho.

  • Você deve entender os códigos de retorno do servidor de negociação, assim como os erros em tempo de execução.
  • Certifique-se de indicar na sua Especificação de Requisitos a necessidade de processar os resultados de cada operação importante e de registrar os códigos de erro. Além disso, você pode enumerar essas operações importantes: envio de solicitações de negociação, cálculo do Stop Loss e de outras operações.
  • Tais mensagens devem usar as substituições de macro predefinidas, que irá ajudá-lo a encontrar o motivo e a localização exata do comportamento errado.

Essas três regras ajudarão você a analisar a situação e se comunicar com o desenvolvedor.

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

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.

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.

O monitoramento da conta de negociação é uma ferramenta essencial do trader O monitoramento da conta de negociação é uma ferramenta essencial do trader

O monitoramento da conta de negociação é um relatório detalhado de todas as transações concluídas. Todas as estatísticas de negociação são coletadas automaticamente e fornecidas a você na forma de diagramas e gráficos amigáveis.

Análise comparativa de 10 estratégias de fase de correção Análise comparativa de 10 estratégias de fase de correção

O artigo explora as vantagens e desvantagens de negociar durante movimentos laterais. São criadas e testadas 10 estratégias que se baseiam no acompanhamento do movimento de preços dentro do canal. Cada estratégia possui um mecanismo de filtragem para eliminar sinais falsos de entrada no mercado.