Como fazer um pedido de Expert Advisor e obter o resultado desejado

Andrey Khatimlianskii | 5 março, 2014

Introdução

O trading automatizado está ganhando um novo impulso - o lançamento do MetaTrader 5 com o novo MQL5, está completo. Ele passou de forma bem sucedida pelo Automated Trading Championship 2010, e a nova versão da plataforma de trading está sendo ativamente promovida por brokers. O antecessor do MetaTrader 5, - MetaTrader 4 - é ainda ativamente utilizado por centenas de brokers e por milhões de traders ao redor do mundo.

Apesar de tal popularidade (ou especialmente, por causa dela) o nível profissional do trader médio está tornando-se menor - como em qualquer outra área, a quantidade raramente torna-se qualidade. Se nós considerarmos trading automatizado (a conexão de trading e programação), a situação é ainda pior - muitos poucos traders possuem um grau de programação de computadores e, para a maioria das pessoas, mesmo para aquelas com uma mente técnica, a especialização em programação pode ser bastante desafiadora. Não devemos nos esquecer também sobre aqueles que simplesmente não estão interessados em programação. "Nós devemos fazer o que fazemos melhor" - eles dizem, e eu não posso discordar deles.

Tudo nos traz gradualmente ao tópico de nosso artigo. Há uma demanda por serviços de programação com MetaTrader, e esta demanda continua a crescer. Onde há demanda, há um suprimento - esta é a lei do mercado. De fato, há traders suficientes que desejam automatizar sua estratégia, e programadores que desejam ganhar esse dinheiro. Mas, infelizmente, suas comunicações nem sempre resultam em benefício mútuo - há muitos clientes insatisfeitos, também como programadores que estão cansados de explicar os conceitos.

Este artigo lida com o problema que pode surgir durante a comunicação "Cliente - Programador". Primeiramente, ele é destinado para traders, eles frequentemente não possuem a experiência ao lidar com pessoas de uma estrutura mental diferente. Mas não há dúvida que para programadores, este artigo será muito útil - um relacionamento sempre tem dois lados, e o sucesso do empreendimento conjunto depende de ambos.


Conteúdo

  1. Verificar a ideia
  2. Livrar-se de ilusões
  3. Determinar as metas
  4. Sincronizar os vocabulários
  5. Preparar as especificações de requerimento
  6. Selecionar o candidato/desenvolvedor
  7. Proteger você mesmo de ser enganado
  8. Verificar os resultados
  9. Fornecer feedback


1. Verificar a ideia

Verificar a ideiaA causa mais comum de frustração do cliente é a perda de sua estratégia. Tratando-se de um sistema completo de trading, ao invés de um Expert Advisor ou indicador semi-automatizado, o trader espera uma única coisa do Expert Advisor - um trade lucrativo.

E então ele recebe a esperada carta do programador, executa o client terminal, começa a testar... e observa como sua brilhante ideia leva à perda do depósito. Ele verifica novamente os parâmetros, atualiza os dados do histórico... e mais uma vez observa a perda do depósito. Alguns traders imediatamente começam a escrever uma carta furiosa ao programador (é claro que a culpa é dele!), e os mais pacientes testam os resultados e tentam descobrir qual é o problema. Mas isto não muda o fato - a ideia em que eles acreditavam revelou-se não-lucrativa.

A seguir, há um número de diferentes possíveis opções. Alguns culpam o programador de ser desajeitado, e sem pagamento pelo trabalho, começam a encontrar um outro programador. Outros começam calorosamente a tentar descobrir como consertar a situação, e pedem para fazer "algumas pequenas mudanças" (é claro, gratuitamente, pois elas são tão pequenas!). Justamente, eu deveria apontar que há também clientes que aceitam seus erros e não transferem a responsabilidade para o programador. Mas este capítulo não foi escrito para eles, eles têm um bom senso de autocrítica.

Estas são apenas as consequências, não há razão para desmantelá-las, faz muito mais sentido encontrar e eliminar as causas do problema. O problema é que o trader é preguiçoso demais para verificar sua ideia. Para fazer isso, a pessoa precisa escolher um intervalo arbitrário de dados históricos e, cuidadosamente, dia após dia, observar como a estratégia funcionaria e qual seria o resultado. Isto é feito de forma mais fácil e rápida no modo visual de teste (eu tenho certeza que isto logo estará disponível no MetaTrader 5), mas o teste pode ser também feito em tempo real - uma semana ou duas de trabalho em uma conta de demonstração.

Realmente, nem todas as estratégias podem ser testadas nos dados históricos. Eu sei de experiência própria, que a verificação de algumas ideias pode realmente consumir tempo. Eu entendo que às vezes é mais fácil pagar pelo Expert Advisor do que sentar por horas com um lápis sobre as tabelas. Mas esteja ciente que o resultado pode ser uma surpresa bastante desagradável para você ao enviar uma ideia não testada para implementação!

Lembre-se! O programador não é responsável pela lucratividade de sua estratégia, a tarefa dele é escrever um programa que funcionará com o algoritmo que você aprovou.

às vezes, o programador pode dizer a você as fraquezas de seu sistema (você não é o primeiro a ter feito isso), mas isso é baseado somente em boa vontade. Ele não é obrigado a proteger você de erros ou consultar você, e certamente, não é responsável por verificar sua ideia gratuitamente. Ao solicitar um EA, você pode estar completamente confiante em sua estratégia, ou entender que isso é apenas uma tentativa, e não é provável que o resultado irá maravilhar você com sua exclusividade.

Portanto, nossa conclusão intermediária é que é melhor verificar a estratégia por um número de vezes, antes de solicitar sua implementação.


2. Livrar-se de ilusões

O cubo impossível de EscherNós vemos apenas o que nós queremos ver. E nós queremos um iate, uma ilha no oceano e uma mala cheia de dinheiro. Nós olhamos para as tabelas e vemos somente os sinais de indicador bem sucedidos. Nós fechamos nossos olhos e contamos mentalmente o número de zeros no saldo de nossa conta... E o programa funciona apenas baseado no algoritmo, e expõe nossas ilusões.

As causas da segunda maior e mais frequente decepção - confusão e autoilusão. Se você de fato decide dar o primeiro passo e verificar sua ideia, execute o processo de forma crítica. Muitas decepções podem ser evitadas neste estágio - apenas tente remover os óculos cor de rosa e observar a estratégia com sensibilidade.

Uma situação muito comum: você leu na internet (em um fórum, blog, livro online) sobre uma estratégia e decidiu fazer um Expert Advisor pra ela. Observou as tabelas, estimou a exatidão dos cálculos e pensou - "Bem, finalmente, aqui está - o Graal!". A situação é piorada pelo download (ou, Deus me livre! a compra) deste super-indicador pelo qual a estratégia funciona - agora você tem a ilusão que 90% da tarefa já foi completada, e só restou pouco a fazer.

Se metade de vocês neste ponto fizeram a si mesmos uma simples pergunta - "Por que esta estratégia está localizada em um domínio público?" (ou, no caso de uma compra, "por que o autor está vendendo e não utilizando ela?") - Eu teria exatamente a metade do número de clientes que eu tenho agora... Mas nós acreditamos em milagres e não nos convença do contrário! Tudo bem, eu não convencerei. Mas o que previne você de verificar isso, no que você gastará seu dinheiro pessoal?

Aqui vão algumas regras que ajudarão você a evitar cair nestas armadilhas de suas próprias ilusões, ou das más intenções de alguém. Elas podem não resolver todos os possíveis problemas, mas auxiliarão você dos erros mais comuns.

  1. Seja bastante cético quanto a indicadores sem um código-fonte!
    • Você será capaz apenas de ligeiramente entender como eles funcionam, e ninguém será capaz de garantir a imutabilidade de seus comportamentos no futuro.
    • Eles podem conter qualquer coisa - desde os erros de codificação que levam ao novo esboço dos antigos sinais, ou o comportamento inapropriado ao trabalhar com certos instrumentos ou tipos de conta, à uma decepção deliberada (esboço de sinais bem sucedidos esboçados previamente nos dados históricos), ou uma simples restrição do tempo de trabalho ou número de conta.

    Mesmo se você absolutamente não entende de programação, você pode sempre pedir a um programador que você conhece para "examinar" o programa - apenas para ter certeza, ou diretamente antes de solicitar o Expert Advisor.

  2. Observe o trabalho dos indicadores em tempo real!
    • Sem saber como o indicador funciona online, não faz sentido considerar seus sinais no histórico - por ser simplesmente uma bela (mas infelizmente, inútil) imagem.
    • Virtualmente todos os indicadores podem alterar o valor na última barra (não completa) - isto é normal. Deve ser compreendido que no histórico (nas barras formadas), estas alterações não são visíveis, os dados indicadores plotaram nas barras completadas. Isto significa que os sinais (setas, cruzamento de linhas de indicador/preço) podem ser utilizados no sistema (para abrir uma posição) somente na próxima barra após sua aparição. Se nós tentarmos utilizar os sinais (sem esperar pelo fechamento da barra), durante o teste do Expert Advisor, o resultado é que haviam muitas setas e cruzamentos (e, portanto, posições abertas), mas na hora do fechamento da barra, a maioria deles desapareceu. Você verá a posição na tabela, mas não o sinal correspondente - ele é visível apenas ao rastrear a formação da barra.
    • Alguns indicadores podem alterar o valor, não apenas para a última, mas também para várias barras anteriores. às vezes, isso causava a essência do indicador (ex. para a formação de uma fractal, devem haver 2 barras à sua direita, e a última seção do ziguezague pode ser redesenhada por um longo tempo, até as condições de uma nova seção serem atendidas), mas, frequentemente, tal comportamento é evidência de decepção deliberada - muitos indicadores são criados apenas para o desenho bonito nos dados de histórico (no intuito de vendê-los), e é praticamente impossível utilizá-los em trade.

      Se o indicador, no histórico, exibe os sinais para comprar nos fundos mais baixos e para vender - nos maiores picos, isso não é uma indicação de que este é um indicador muito bom, ao contrário - ele está "prevendo o passado".

    • Não é necessário sentar e assistir por horas a tabela online - muitos indicadores podem ser testados em um modo de teste visual. Mas de qualquer forma, a maneira mais confiável de testar - é rodá-lo em uma conta de demonstração e monitorá-lo. Você pode anexar o indicador à tabela, esperar um pouco, e anexá-lo novamente (com os mesmo parâmetros) - se for "real" (não utiliza o novo esboço dos valores anteriores) então a figura em ambas as cópias do indicador devem ser idênticas. Se a nova cópia do indicador exibe sinais diferentes, é inútil analisar seus sinais no histórico.

  3. Verifique a estratégia em diferentes intervalos do histórico!
    • Frequentemente acontece de você inconscientemente escolher um intervalo muito conveniente (para seu sistema) de histórico para teste. Seja a entrada pelo sinal do indicador, uma rede de ordens ou um reconhecedor de padrão - haverá sempre um intervalo, no qual a estratégia ganhará dinheiro. Mas quando você for testar o Expert Advisor em todos dos dados de histórico disponíveis, você observará imediatamente os intervalos mais mal sucedidos. Tente encontrá-los por si só.
    • Selecione alguns intervalos aleatórios do histórico. Por exemplo, pegue janeiro de 2008, outubro de 2009 e agosto de 2010 - escaneie eles com seus olhos e calcule a taxa de lucratividade e sinais de perda. Tente observar a qualidade dos sinais em outros instrumentos e períodos de tempo. Se a ideia possui um núcleo, é mais provável que funcionará em outras condições (possivelmente com parâmetros indicadores ligeiramente modificados ou níveis de parada).
    • Não altere os parâmetros de seu sistema para uma única verificação. Se enquanto você estiver olhando para agosto, você utilizará certos parâmetros indicadores e, tendo mudado para setembro, toma outros parâmetros (que se encaixam melhor) - você está simplesmente enganando a si mesmo. A verificação deve ser feita sob as mesmas condições, de outra forma, você verá apenas o que deseja ver. Eu não estou dizendo que os parâmetros do sistema devem sempre permanecer os mesmos, mas se você deseja alterá-los às presas, você pensar nos critérios para suas alterações. é sempre simples tirar conclusões sobre o histórico, mas, o que acontecerá no futuro?
    • Encontre o intervalo mais complicado no histórico para a estratégia e teste o sistema nele. Tática muito comum - a utilização de canais e a espera pelo movimento retrógrado, frequentemente apoiado pela duplicação do lote na abertura das próximas posições - funciona de forma excelente em alguns intervalos do histórico. Mas o mercado tem movimento a longo prazo no canal e fortes tendências, e ambos os sistemas periodicamente levam à perda do depósito. Encontre o intervalo do histórico que será mais perigoso para seu sistema (uma linha estável longa - para um tática de colapso e um forte movimento de um sentido - para tática baseada em movimento retrógrado), e observe os problemas ao realizar trading neste intervalo.

      E não esqueça - no futuro, você pode ver uma linha estável ainda mais longa, e movimentos de tendência ainda mais extremos, o mercado está constantemente mudando. Sempre reserve uma "margem de segurança".

  4. Considere o gasto adicional (margens, trocas, comissões, requerimentos de margem, espaço livre mínimo para instalação de ordens)!
    • Para a maioria das estratégias a longo prazo, todos estes custos não são importantes, já que um erro por alguns poucos pontos é irrelevante para elas. Mas a tendência em desenvolvimento de trading automatizado mostrou que mais e mais estratégias estão sendo desenvolvidas com pequenos lucros e um trading de alta frequencia, e o aumento da margem por 2 pontos ou o nível de Stops por 10 pontos, podem tornar-se bastante perceptíveis.
    • Lembre-se que todas as tabelas do MetaTrader (a 4ª e 5ª versão) são criadas utilizando o preço de venda, enquanto a abertura da posição longa e fechamento das posições curtas são executadas pelo preço de compra. Quando você faz trade em sua mente, levar a margem em consideração é inconveniente, mas nós podemos sempre pegar o resultado total do trate e subtrair dele, o número de trades, multiplicado pela margem - isto trará os resultados mais próximos da realidade.
    • Ao analisar o histórico, não esqueça que alguns anos atrás, as condições de trading eram muito diferentes. A tabela "felpuda" de 1999 é perfeitamente adequada para estratégias de scalping, se fizermos trade utilizando a margem atual. Mas em 1999, a margem era 3 ou 4 vezes maior! Dos lucros que você virtualmente ganhou, não sobrará nada, se subtrairmos a margem real daquele período de tempo de cada transação. A situação é análoga mesmo com outras condições - alguns anos atrás, a alavancagem máxima disponível era 1:100, e a distância para estabelecer uma ordem pendente era medida em dezenas de pontos.
    • Lembre-se que as condições de trading podem mudar (é claro, para pior) em notícias da imprensa, e a execução de ordens pode ser atrasada e ter deslizes. Não invente "um brilhante novo sistema" no histórico, tente testá-las, pelo menos, na conta micro-real. A sua visão do sistema muda muito se você estiver estimando uma margem de 2 pontos e execução instantânea, mas a posição é aberta após 5 segundos, com um deslize de 10 pontos, e a margem amplia tanto que é difícil fechar a posição pelo menos sem perder.
    • Tenha sempre uma "margem de segurança" em relação às condições de trading. Se seu sistema "quebra" por uma ligeira mudança na margem ou por um atraso da abertura de uma posição por alguns segundos, é improvável que ele sobreviva na "briga de verdade".

      Lembre-se que a margem é a razão de depósito perdido para a maioria das estratégias, ex. a escolha da direção de negociação com probabilidade de exatidão próxima a 50%, portanto tente melhorar a estratégia o máximo possível, para que a margem não afete demasiadamente o resultado.

Se você ainda acredita firmemente em seu sistema após todas estas verificações, e você ainda tem o desejo de automatizá-lo, então nós podemos prosseguir.


3. Determinar as metas

Determinar as metasVocê já imaginou por que você precisa de um Expert Advisor? Você só quer verificar sua ideia no Strategy Tester? Ou, talvez, você deseja experimentar uma estratégia pronta na conta micro-real? Não, eu sei - você tem feito trading em seu sistema por 2 anos e executará o Expert Advisor imediatamente em uma conta real com um depósito de $100.000.

Estas perguntas aparentemente inúteis são raramente feitas. De modo geral, é compreensível - as respostas afetam somente algumas pequenas coisas: os detalhes dos requerimentos técnicos, a escolha do candidato/desenvolvedor e, talvez, o custo do trabalho. Mas se você pensar sobre isso, a diferença entre as diferentes abordagens pode ser bastante substancial.

Na maioria dos casos, o programador não se importa em escrever o Expert Advisor para o Strategy Tester ou não (com um mínimo de verificações e sem manuseio de exceções) ou para o trade real. Se ele escreve em MQL por um longo tempo, e não está recebendo qualquer reclamação sobre a estabilidade de seus programas, então ele muito certamente teve uma base para a implementação de qualquer algoritmo, e não haverá nenhuma diferença nas abordagens para escrever a versão Strategy Tester ou versão para uma conta real.

Mas mesmo se você tiver sorte suficiente para trabalhar com tal pessoa, você sentirá a diferença ao fazer o esboço dos dos requerimentos técnicos.

Deixe-me explicar com um exemplo:

  1. Situação número um - você simplesmente precisa testar uma ideia (que você descobriu/ouviu/leu em algum lugar). Isso significa que:
    • Nós não estamos planejando executá-lo em uma conta real - todos os tipos de verificação e o manuseio das exceções não precisa ser feito.
    • O Expert Advisor será ativamente testado e otimizado - nós precisamos alcançar o desempenho máximo (talvez à custa da robustez).
    • Muito provavelmente, após verificar a primeira versão, ele precisará de melhorias - um Expert Advisor deve ser facilmente estendido e expansível.
    • Os "gargalos" do algoritmo (definição de ordens nas distâncias mínimas permitidas, a sequência das posições de abertura e fechamento, o contorno das limitações máximas de lote, o reinício do trabalho após desconexões, etc.) não precisam ser processados, pois nós não sabemos quais deles manterão suas relevâncias na versão final.

  2. Situação número dois - a estratégia está pronta, você precisa de um Expert Advisor válido para a conta real. Ele será diferente da versão anterior da seguinte maneira:
    • Todas as operações de trading devem ser as mais corretas possíveis, não somente os valores dos parâmetro definidos pelo usuário precisam ser testados, mas todos os valores são calculados durante o processo de funcionamento (tamanho do lote, os níveis de ordens de interrupção, etc.).

      A "qualidade" das solicitações de trade afetam diretamente a "relação" do servidor à sua conta - se o servidor é bombardeado com ordens de trade incorretas, ele poderia facilmente bloquear a conta, e você perderá o controle da situação.

      No caso de um erro crítico, você deve avisar o usuário (através de uma mensagem na tela, um email, Skype, ICQ ou via SMS).
    • A robustez do trabalho, ao contrário da velocidade de seu desempenho, é trazida ao primeiro plano - se alguma verificação adicional ajudará a prevenir um possível erro, ela deve ser inclusa no Expert Advisor. Mesmo que isso desacelere o teste e a otimização (ao trabalhar em tempo real, a velocidade de execução é frequentemente não palpável).
    • As futuras melhorias, se forem mesmo necessárias, são pequenas. Portanto, nenhum requerimento específico para facilitação da ampliabilidade é especificado.
    • Todos os "gargalos" do algoritmo devem ser exaustivamente planejados e precisamente processados. Deve haver um mínimo de situações, nas quais um erro pode ocorrer (nós não seremos capazes de fazer provisão para todas elas, infelizmente):
      • O Expert Advisor deve ser capaz de restaurar seu trabalho normal após uma desconexão temporária, reconexão à conta, ou uma restauração do terminal do cliente.
      • Se você não consegue definir as ordens pendentes ou de interrupção, elas precisam ser rastreadas virtualmente, e quando o preço de seus níveis é alcançado, executadas no preço de mercado.
      • Se você não consegue abrir posição nos preços de mercado dentro de N tentativas, o deslize máximo permissível deve ser aumentado.
      • No acionamento de uma ordem pendente ou de interrupção, por um nível, não fornecido pelo algoritmo, e com deslize (ex, com um intervalo de preço), os níveis de todas as ordens dependentes devem ser ajustados (e, talvez, até seus volumes).
      • Todas as funções que operam no tamanho do depósito (por exemplo, o cálculo do lote) devem normalmente aceitar operações de não-trade com um balanço (saldo ou saque).
      A lista continua por um longo tempo. Há uma quantidade infinita de tais nuances e cada estratégia também possui seus detalhes.
    • Há também requerimentos adicionais propostos - o Expert Advisor deve funcionar bem com diferentes brokers, leve em consideração a lista de instrumentos disponíveis, suas especificações, e outras configurações de servidor (o número máximo de ordens pendentes, os níveis de Stop Ou, a oportunidade de abrir as posições/ordens em direções opostas (para MetaTrader 4 apenas), e assim por diante).
  3. E situação número três - você realmente está pronto para executar o Expert Advisor em uma conta real com um depósito de $100.000. Alguma coisa vai mudar, em comparação com as versões anteriores para a conta real? Tudo depende de sua paranóia (desculpe, eu quis dizer previdência):
    • Não há absolutamente nenhum dano em criar mais arquivos de registro, e salvar regularmente capturas de tela dos gráficos, eles podem tornar-se muito úteis ao analisar um problema ou disputa.
    • Se você planeja rodar o Expert Advisor no servidor dedicado, você pode contemplar a possibilidade de controle/correção de seu trabalho com uma outra (execução paralela) cópia. Por exemplo, você pode executar simultaneamente o Expert Advisor no servidor dedicado e em casa, e a cópia de "casa" deve ser capaz de tomar o controle da situação, em caso de desconexão da cópia do "servidor" por 5 ou mais minutos.
    • Se você não pode monitorar constantemente o trabalho do EA, você implementar um relatório por hora (ou por dia) sobre o estado atual da conta e da situação de trade. As notificações de erros críticos devem estar presentes em qualquer caso.
    • Se você deseja ser capaz de controlar o processo de trade, mesmo quando você possui apenas um telefone, você implementar um "feedback" - a habilidade de enviar ao Expert Advisor os comandos via SMS, email, Skype, ICQ ou definindo ordens pendentes (com descrição de comandos nos comentários).

Bem, você sente a diferença? E esta é apenas uma rápida leitura do método, cada um destes elementos pode ser planejado e estendido ao infinito. E há tantos detalhes que nós ainda não mencionamos!

Após explorar os detalhes, fica claro que planejar os detalhes do algoritmo realmente depende do propósito do Expert Advisor e dos requerimentos do cliente.

Você não pode esperar do programador uma qualidade de implementação igual de todas as nuances, tais padrões de qualidade, infelizmente não existem ainda. Portanto, determine para que você precisa do Expert Advisor, pense sobre como ele deve se comportar em diferentes situações, e certifique-se de mencionar isto nos requerimentos técnicos.

O manuseio padrão de erros simples (recotações, interrupções inválidas, etc.) será adicionado por qualquer desenvolvedor de EA que se preze. Mas não é garantido que este "comportamento padrão" será adequado à sua estratégia específica.

Por exemplo, não é sempre a melhor forma, definir o nível Stop Loss à distância mínima permissível, se é impossível definí-lo ao nível calculado - as outras ordens, ou a perda máxima da série em andamento das posições pode ser dependente disto. Portanto, novamente, se você está prestes a criar um EA para uma conta real, considere uma quantidade máxima de cenários no estágio de preparação de seu trabalho.

Você pode sempre pedir ao programador para preparar uma lista de possíveis situações e desenvolver um algoritmo de seu manuseio. Mas não esqueça que a análise e melhoria de sua estratégia, também como a criação do algoritmo, não estão diretamente relacionadas à composição do Expert Advisor. é uma parte separado de trabalho e seu resultado não é o código do Expert Advisor, mas o texto do algoritmo. Alguns podem bastante logicamente requerer pagamento extra por este trabalho - já que ele está investindo seu tempo, e você está ganhando, mesmo que intermediário, mas ainda assim um resultado, e pode ir com este algoritmo a um outro programador.

E não esqueça que nem todos os programadores possuem experiência com trabalho em contas reais. Basicamente, eles podem simplesmente não estar cientes de todas as possíveis surpresas. Bem, provavelmente não há uma única pessoa que tenha trabalhado com absolutamente todas as companhias, com todos os tipos de conta, com todos os possíveis instrumentos, e em todas as diferentes condições de mercado. Compartilhe suas experiências (se tiver), peça ao programador para compartilhar as dele, mas não pense que você está assegurado contra todas as surpresas. Isto, infelizmente, é ilusório.

Nós nos aproximamos da parte mais crítica - a preparação dos requerimentos técnicos, mas não antes de fazermos um pequeno desvio.


4. Sincronizar os vocabulários

Antes de você começar um diálogo, tente entender com quem você vai se comunicar. "No outro lado da linha" há uma pessoa completamente diferente, e o conhecimento dela pode ser bastante diferente do seu.

Até vocês "sincronizarem seus vocabulários" (encontrar uma linguagem comum, definir os termos), o movimento em direção à meta em comum pode ser desagradável e difícil. Coisas elementares, na sua opinião, podem causar tanta confusão que o desenvolvimento de um simples Expert Advisor pode facilmente tornar-se em muitos dias (ou até semanas) de apuração do relacionamento.

Vamos fazer um pequeno desvio de direção.

Imagine que você precisa trocar uma torneira. Você liga para o encanador e fala: "Eu quebrei uma coisa que uso para lavar meu rosto!" Eu quero uma nova, que eu consiga ligar com uma mão". Soa bobo, não? Mas acredite em mim, algumas das tarefas enviadas por traders, parecem ainda mais bobas!

Agora tente colocar-se no lugar do encanador. Sim, ele entendeu aproximadamente o que está acontecendo, mas ele não pode fazer nada para esta "tarefa". E somente um telepata realmente iria entender que tipo de torneira você quer.

Vamos tentar de maneira diferente. Você liga e fala: "Eu preciso de uma torneira em meu banheiro. O diâmetro dos canos para água quente e fria é 13mm, a distância do cano à base da pia é de 20 cm. O ajuste da pressão e da temperatura da água deve ser feito com uma alça. é desejável ter uma escolha entre vários modelos".

Bingo! Agora o encanador sabe que: a) você precisa de uma alça para a torneira; b) ela deve ter duas válvulas, e um controle com uma única alça; c) ele precisará conectar uma mangueira com um comprimento de 20 a 25 cm e um diâmetro de 13 mm. Quando ele chegar em sua casa, ele será capaz de oferecer a você algumas opções de soluções e rapidamente fará seu trabalho.

Muitos programadores que escrevem em MQL, são realmente instruídos em trading - quanto mais eles se comunicam com os clientes e programam Expert Advisors, melhor eles entendem a diversidade de abordagens para a análise. Além disso, muitos deles desenvolvem estratégias para si próprios, e alguns também estudaram a literatura do trading e participaram em fóruns temáticos.

Mas não exija demais deles! A frase "estique a fibo-grid sobre os 2 últimos fractais", que você pode usar em seu dia a dia, pode levar um técnico inexperiente a um impasse. Finalize com a frase comummente utilizada "após o ativamento da trava..." ou "na abertura de Londres, defina as paradas para nível sem ganho ou perda" e o cliente está pronto - você garantiu longas horas de questionamento e clarificação.

Eu não estou dizendo que o "MA" comum deve ser chamado de "o indicador técnico com uma média móvel com um período de suavização de 36" - nenhum fanatismo é necessário! Mas sempre tente lembrar que a pessoa com quem você está conversando possui uma bagagem diferente de conhecimento e uma visão diferente.

Como um resultado intermediário - algumas dicas:

  1. Explique-se com palavras simples e compreensíveis, sem utilizar abreviações e jargões.
  2. Utilize terminologia comum. Se você não sabe como chamar alguma ferramenta ou um evento, não hesite em utilizar o vocabulário de uma referência ou um manual.
  3. Explique as coisas cuidadosamente e em detalhes. Fale até sobre o que você considera óbvio. Muito frequentemente, acontece que pode ser óbvio só para você!
  4. Finalmente, assegure que a outra pessoa entende você. Faça perguntas orientadoras, ou peça a ele para formular a tarefa em suas próprias palavras - certifique-se de que vocês estão falando sobre as mesmas coisas.

Caros colegas, programadores de EA! Se você erroneamente pensou que o disposto acima relata-se apenas aos traders, eu me adiantarei em desapontar você! Nós, como as pessoas tecnicamente competentes, somos responsáveis pela precisão do processo de trabalho inteiro. E nós, em grande parte, somos responsáveis por seu sucesso.

Poucos traders são capazes de formular a tarefa precisa e corretamente - isto é um fato. Nos seis anos de minha experiência com programação de EA, eu lembro de apenas dois clientes, cujas tarefas eram realmente impressionantes - estes eram programas prontos para uso, que simplesmente precisavam ser transferidos ao MQL. Várias outras pessoas foram marcadas como "elas entendem o que querem" e "são capaz de expressar seus pensamentos" - após ler seus algoritmos, eu entendi claramente como os programas futuros funcionariam. Mas a maioria dos clientes - são traders iniciantes, eles estão assustados não apenas pela necessidade de claramente descrever as ações do EA mas da palavra "algoritmo".

Seja um pouco psicólogo - determine o nível de seu parceiro, e utilize o correspondente para os seus termos e conceitos (nível). Não bata seu intelecto contra o dele, seja tolerante. Se possível, livre-se das nuances de programação na discussão, a pessoa absolutamente não precisa saber o que é um clico, onde a numeração de barra começa, e sob quais condições a função, que salva as informações de ordenação no arquivo, é executada.

Isto não significa que você deve ter uma "conversa de bebê" com o cliente, e que ao menor sinal de discórdia, o EA deve ser reescrito. De jeito nenhum! Mas tente tornar-se a ele não só um bom técnico, mas também um interlocutor agradável - ele definitivamente irá gostar disso.

Nós finalmente alcançamos a parte mais crítica - a criação do algoritmo. Bem, vamos começar!


5. Preparar as especificações de requerimento

Preparar a tarefa

Seu primo, não tendo nada a ver com trading, deve ser capaz de fazer trade em seu sistema, tendo apenas seu algoritmo preparado.

Esta frase clássica, mudada só um pouco, demonstra muito claramente as principais qualidades de boas especificações técnicas:

  1. Esta tarefa deve ser totalmente autossuficiente (compreensível a uma pessoa totalmente não familiarizada com seu sistema).
  2. A tarefa deve ser a mais detalhada possível (compreensível até para um indivíduo inexperiente, em matéria de trading).

Quão categórica e exagerada é a frase "isso não tem nada a ver com trading"? De fato, será difícil explicar para uma pessoa, além da essência do sistema, o básico do trading e a utilização do terminal de trading. Eu me permitirei recorrer mais uma vez à uma frase clássica:

Seu primo, que instalou o MetaTrader a somente dois meses atrás, e que fez trade somente em contas de demonstração todo esse tempo.... o resto nós já sabemos.

Mas isto não muda a essência! Se você der seu algoritmo para dez pessoas diferentes e pedir à elas para fazer trade em seu sistema, elas devem obter resultados absolutamente idênticos. Quantos de vocês podem se vangloriar de tal experiência?


5,1. Por onde devemos começar?

Nós começaremos do começo. Descreva a ideia geral, diga o que é que você deseja obter. Não esqueça suas próprias metas e requerimentos para o programa, que podem ser formulados agora.

Tendo uma ideia geral sobre você e seu sistema, o programador pode avaliar a seriedade de suas intenções, e presumir a quantidade aproximada de trabalho.

Alguns exemplos de tal entrada:

Nós precisamos de um indicador para MetaTrader 4. A tarefa - desenhar uma tabela invertida de um par de moedas arbitrário na sub-janela da tabela principal. O indicador deve funcionar em cotas de 4 e 5 dígitos e com nomes de símbolo não-padrão (ex. EURUSDFXF).

Nós precisamos de um Expert Advisor para MetaTrader 5. Fazendo trading em uma única moeda, o sinal de entrada é baseado no indicador personalizado (o código é anexado). Fechamento de posições pelo SL, TP e por um sinal reverso. Todas as posições são acompanhadas por uma interrupção de rastreamento, baseada em um outro indicador (o código está também disponível). O lote é calculado como um porcentagem do saldo.
é necessário finalizar o Expert Advisor (MetaTrader 4) para trabalhar em uma conta real - estabeleça todas as verificações necessárias, restaure a operação normal após uma falha de conexão, adicione algumas tentativas para abrir um posição com um erro, e talvez algo mais - a seu critério.
Nós precisamos de um EA para testar uma estratégia para abrir uma brecha em um canal. Determine as bordas do canal pelo indicador; a entrada para o mercado pelas ordens pendentes, após uma negociação falhada - um aumento do lato com coeficientes especificados. Você deve também especificar o tempo de trabalho durante o dia, quando a definição das primeiras ordens for permitida. E então nós temos o código para o MetaTrader 4.

Esta parte da tarefa é a menos difícil. Mas, infelizmente, frequentemente esta parte é onde tudo acaba... Não esqueça - isto é apenas uma introdução, a descrição da ideia geral. Para escrever um programa, nós precisamo de muito mais.


5,2. Como formulamos a tarefa?

Na verdade, o algoritmo é a parte mais importante. é o mais difícil de se formular (especialmente para um não programador), e realmente requer muito trabalho duro.

Tente dividir imediatamente o algoritmo em sub-seções lógicas, não tente conduzir todas as sutilezas do sistema em uma única sentença ilegível.

Quando se trata de escrever Expert Advisor, nós podemos distinguir as seguintes seções lógicas (seu número e conteúdo podem variar dependendo da estratégia):

  1. As condições gerais: o tempo de trabalho (dentro de dias, em certos dias da semana), a ordem da execução (por exemplo, o início do trading com o pressionamento de um botão), a necessidade por análise profunda do histórico, e outras condições, relacionadas à tarefa inteira em geral (não aos seus pontos individuais).

  2. O sinal de entrada no mercado (a abertura da primeira posição ou a definição das primeiras ordens) é baseado nos indicadores, certos padrões de preço, simplesmente sobre o tempo ou sobre comando do usuário. Isto pode também incluir limitações na primeira entrada (filtros) - por tempo, por um outro indicador, após muito tempo de uma série de perdas, durante condições inaceitáveis de trading, (margens muito grandes ou um StopLevel), ou durante a falta de fundos disponíveis. O método do cálculo de lote e o nível de Stop Loss e Take Profit deve ser especificado separadamente (se as regras para cálculo para todas as posições são as mesmas, nós podemos separá-las em uma cláusula independente).

  3. O processamento de ativação de ordem pendente ou SL/TP de uma posição (se necessário). Por exemplo, removendo uma ordem Sell Stop quando a ordem Buy Stop está ativada, a definição de uma ordem Sell Limit adicional, quando uma ordem Sell Limit previamente definida ativou, a abertura de uma posição para vender um volume duplicado após ativação de Stop Loss, e assim por diante.

  4. Os sinais para a abertura de posições adicionais (se houverem posições adicionais) ou para a definição de ordens adicionas (se necessárias). Por exemplo, isso pode ser feito pelo sinal de outros indicadores ou no alcance de certo lucro de perda da posição aberta. Aqui, devem haver também as regras de cálculo do lote, de Stop Loss e Take Profit (se eles forem diferentes daqueles que foram descritos acima).

  5. O rastreamento de posições e ordens (separadamente - a primeiro em série, separadamente - as adicionais, ou todas juntas, se as regras são as mesmas). Por exemplo, o emparelhamento de um Stop-orders pendente ao mercado (se o movimento do preço estiver na direção oposta), um Trailing Stop da posição (convencional, pelo indicador, ou algum outro), o fechamento parcial da posição ao alcançar um certo lucro, e assim por diante.

  6. Sinais para fechamento (total, parcial) ou uma reversão de posição. As regras para remoção de ordens pendentes.

  7. As condições gerais, tais como aquelas associadas com o estado da conta - o encerramento de todas as posições e a interrupção do trabalho quando especificado o abaixamento, um redução do uso da porcentagem de depósito, com o aumento do saldo a um certo nível, e os semelhantes. Estas condições aplicam-se ao primeiro ponto, mas é fácil de descrevê-las no final (como em ordem de utilização).

  8. E no final, talvez, algumas informações adicionais na tabela sejam necessárias, o desenho das setas de de posição de níveis de preço de abertura/fechamento, as informações detalhadas no diário, o envio de emails ao ativar ordens pendentes e todo o resto que não está relacionado a trade, mas sim à interface.

Se nós estamos falando sobre um indicador, então por um lado, tudo é muito mais fácil - a lógica é mais primitiva e menos complexa, mas por outro, há algumas sutilezas.

O compêndio é algo assim:

  1. Os dados requeridos: uma lista dos instrumentos analisados (se forem vários), a profundidade do histórico para todos os instrumentos usados e períodos de tempo, o fuso-horário do servidor de trade.
  2. O tipo de desenho (linhas, setas de sinal, castiçal, tabela, seções em zigue-zague, figuras em formas geométricas, etc.).
  3. O algoritmo para cálculo do primeiro valor (o valor na barra esquerda), se este for diferente do algoritmo principal.
  4. O algoritmo básico para o cálculo de uma única barra ou a descrição do processo de cálculo, se estiver difícil de derivar uma fórmula para uma barra individual (como no caso de um zigue-zague, por exemplo).
  5. E o material confortável, se necessário: sinais de áudio, armazenagem de capturas de tela, envio de notificações ao email, etc.


Vamos tentar mover da teoria à prática, e finalizar algumas de nossas tarefas-exemplo:

Nós precisamos de um indicador para MetaTrader 4. A tarefa - desenhar uma tabela invertida de um par de moedas arbitrário na janela principal da tabela. O indicador deve funcionar em cotas de 4 e 5 dígitos e com nomes de símbolo não-padrão (ex. EURUSDFXF).

  1. Nas configurações, especifique o nome do instrumento (o parâmetro symbol), que precisa ser exibido (por exemplo, "GBPUSD_m"). Se o nome não está especificado, utilize o símbolo da tabela, no qual o indicador está anexado. Se não há tal símbolo na janela "Market Watch", é necessário exibir uma janela com uma mensagem de erro.
  2. O indicador deve ser plotado como castiçais japoneses. As cores dos castiçais crescendo e caindo, e as sombras (separadamente - as superiores e inferiores) devem ser desenhadas como parâmetros de entrada.
  3. O cálculo dos valores OHLC para cada barra é feito pelas fórmulas:
    • Open (indicator) = 1 / Open (symbol );
    • Close (indicator) = 1 / Close (symbol);
    • Low (indicator) = 1 / High (symbol);
    • High (indicator) = 1 / Low (symbol).
  4. Em todos os níveis de preços "redondos" (1,3200, 1,3300, 1,3400, 1,3500, ...) ou seja, para os níveis que possuem um múltiplo de 4 dígitos de 100 pontos, você deve desenhar uma linha horizontal (estilo e cor devem ser desenhados como parâmetros de entrada).
Isto será um pouco mais difícil com o Expert Advisor:

Eu preciso de um Expert Advisor para MetaTrader 5. Fazendo trading em uma única moeda, o sinal de entrada de mercado é baseado no indicador personalizado (o código é anexado). Fechamento de posições pelo SL, TP e por um sinal reverso. Todas as posições são acompanhadas por uma interrupção de rastreamento, baseada em um outro indicador (o código está também disponível). O lote é calculado como um porcentagem do saldo.

  1. Sinal para abrir uma posição - a seta do indicador iSingalArrow (todos os parâmetros indicadores devem ser ajustáveis):
    • Uma posição longa é aberta se a seta do indicador estiver apontando para cima(abaixo da tabela) na barra fechada por último;
    • Uma posição curta é aberta se a seta do indicador estiver apontando para baixo(acima da tabela) na barra fechada por último;
    • Setas na barra atual (incompleta) são ignoradas, somente as barras completadas são analisadas.
  2. O volume da posição é calculado como um porcentagem do saldo atual. Lot = Balance/MarginRequired * LotPercent / 100 onde:
    • Balance - saldo atual da conta;
    • MarginRequired - a margem requerida para abrir uma posição com um tamanho de 1 lote;
    • LotPercent - um parâmetro de entrada (a porcentagem para o cálculo do lote).
      Por exemplo, quando LotPercent = 5, com uma alavancagem de 1:100, o lote para EURUSD (no preço atual de 1.3900) será: 10 000 / 1 390 * 5 / 100 = 0,3597
      O resultado obtido é arredondado pelas regras comuns para o valor correto mais próximo (até 0,36 - se o DC permite lotes com uma precisão de até 0,01, ou até 0,4 - se o passo lote for = 0,1).
  3. StopLoss (SL) e TakeProfit (TP) - são fixos, ajustáveis pelos parâmetros StopLoss e TakeProfit:
    • Os níveis são especificados em pontos de cotas de 4 dígitos;
    • Os níveis são calculados relativos ao preço da posição aberta (o preço de compra - para as posições longas e o preço de venda - para as posições curtas);
    • Se o valor é muito baixo, o stop deve ser definida à uma distância mínima permitida;
    • Se os valores 0 são especificados, os stops não são utilizados.
  4. Todas as posições abertas são acompanhadas por stop de rastreamento pelo indicador iTrailingLine (todos os parâmetros indicadores devem ser ajustáveis):
    • Se uma posição longa é aberta, e a linha indicadora está abaixo do preço atual, o stop é movido ao nível da linha indicadora;
    • Se uma posição curta é aberta, e a linha indicadora está acima do preço atual, o stop é movido ao nível da linha indicadora;
    • Os valores indicadores são tomados da barra completada (formada), a barra atual (incompleta) não é utilizada. Ou seja, a modificação deve ocorrer não mais frequentemente que uma vez em uma barra;
    • Mover o SL é permitido apenas na direção de lucro da posição - up para posição longa e down para posição curta;
    • Se você não consegue definir o SL no nível da linha, ele deve ser definido à distância mínima permissível (mas somente se ele compilou com a regra anterior para mover na direção do lucro);
    • O recurso de rastreamento de stop deve ser configurável (AllowTrailing = parâmetro verdadeiro/falso).
  5. Se há uma posição aberta, e há um sinal oposto, a posição aberta deve ser fechada e uma nova deve ser aberta (na posição direta).
    Para uma nova posição, o cálculo do lote deve ser solicitado após fechar a posição aberta.
  6. Miscelânea:
    • Quando você executa o Expert Advisor, ele deve anexar os indicadores usados com os parâmetros especificados;
    • As informações na abertura/fechamento das posições e das modificações do SL devem ser armazenadas no diário;
    • Se houver algum erro, ele deve imprimir uma mensagem descrevendo o erro.

Neste formulário, o algoritmo pode ser enviado ao programador - ele contém detalhes suficientes sobre o sistema e pode facilmente ser "traduzido" ao MQL. Mas não se apresse com a ordem, planeje-a até o final.


5,3. O que não deve ser esquecido?

O que não deve ser esquecido?Um programa, escrito baseado em um destes algoritmos, funcionará bem sob condições ideais - em um terminal de cliente separado, com um acesso único à conta, sem a intervenção do usuário ou outros programas.

Um exemplo de tal ambiente - um Strategy Tester, não erros de conexão perdida, posições fechadas acidentalmente e outros Expert Advisors de trading. Mas na vida cotidiana, tais condições são extremamente raras, mais provavelmente o programa irá operar com o "mundo exterior".

Você pode querer executar múltiplas cópias do programa em diferentes símbolos ou com configurações diferentes, você reiniciará o terminal, fazer trade na conta manualmente ou com outros Expert Advisors, conectar à contas diferentes a partir de um terminal - todos estes podem afetar o programa, se o processamento destas situações é claramente não fornecido pelo algoritmo.

Se a sua meta possui uma escala maior que apenas testar o programa no Strategy Tester, descreva as regras de interação com o mundo exterior imediatamente:

  1. Como o Expert Advisor deve reagir à posições, abertas manualmente ou outros Expert Advisors?
    Geralmente as pessoas escolhem uma das três opções:
    • Ignorar completamente todas as posições "other". Se o sistema é autossuficiente, então as ações de trading dos outros Expert Advisors ou o usuário, não devem influenciá-lo.
    • Trabalhe somente com posições "manuais". Se o Expert Advisor é designado para acompanhar as posições manualmente abertas, ele não deve interferir com as posições de outros Expert Advisors, e geralmente não abre posição de si próprio. Sua tarefa é ajudar com o trading manual (mover o Stop Loss, fechar a posição pelo sinal, e assim por diante).
    • Uma solução mais universal é dar ao usuário uma escolha: trabalhar somente com suas próprias posições ou acompanhar posições que atendam condições específicas (para um símbolo em particular ou com um Magic Number específico).

    No MetaTrader 5, a separação de trades em "por si mesmos" e "outro" é particularmente relevante - o terminal exibe apenas a posição total do símbolo, mesmo se foi "coletado" das negociações de vários Expert Advisors diferentes. Implementar uma completa contabilidade das negociações (para a operação normal de múltiplos EAs em um símbolo único) é mais difícil em sua implementação, e assim pode ser mais cara. Verifique com o candidato/desenvolvedor, se o Expert Advisor funcionará normalmente com outros Expert Advisors, trabalhando no mesmo símbolo.

  2. Como deve responder o Expert Advisor à uma conexão com outra conta de trading? Há uma necessidade em algum procedimento especial de executá-lo na conta real?
    Eu acredito que muitos "traders" podem se "gabar" sobre suas perdas, causadas por simples falta de atenção - conexão acidental à uma conta real, execução de um terminal com um Expert Advisor funcionando, ou um mudança dos parâmetros do Expert Advisor na presença de posições abertas. Estes absurdos podem ser evitados simplesmente considerando-os no algoritmo.
    Por exemplo:
    • Quando você executa o EA em uma conta real, ele deve criar um botão na tabela, que permite o trading. O trabalho deve começar somente após o usuário clicar nele.
    • Quando você altera uma conta, o EA deve notificar o usuário sobre isto e interromper seu trabalho até uma nova execução ser ativada (uma alternativa - perguntar ao usuário se ele deve continuar seu trabalho).
    • Se há posições, abertas pelo EA (ou ordens definidas), quando há uma mudança nos parâmetros externos, o EA deve modificar as posições (ordens) de acordo com os algoritmos designados - por exemplo, se há uma mudança do valor StopLoss, nós precisamos modificar o Stop Loss de todas as posições abertas, mas somente se ele ainda não foi movido pelo stop de rastreamento. Aqui é impossível dar uma receita universal, cada parâmetro deve ser descrito separadamente. Além disso, para diferentes estratégias podem haver diferentes reações às mudanças no mesmo parâmetro.
  3. Há uma necessidade de executar várias cópias do programa com parâmetros similares (ou idênticos)?
    Se o Expert Advisor posiciona o objeto gráfico na tabela, executando múltiplas cópias do indicador e alterando o valor de apenas um parâmetro, então todos os objetos, criados por ele, devem possuir nomes contendo o valor deste parâmetro - de outra forma, cada próxima execução distorcerá os resultados das anteriores.
    No caso do Expert Advisor, geralmente um parâmetro especial é adicionado - ExpertId ou MagicNumber, que permite a você executar qualquer número de cópias do EA com qualquer grupo de outros parâmetros. Especifique na tarefa, para quais definições e para quais combinações há a capacidade de executar simultaneamente o programa, nem todas as situações serão fornecidas pelo próprio programador.
  4. Como deve ser implementada a migração do EA para outro terminal, conectado à mesma conta? O Expert Advisor pode armazenar alguns dados nos arquivos ou em variáveis globais do terminal?
    Para a maioria dos programas não há absolutamente nenhuma necessidade de armazenar informações intermediárias, seus algoritmos são baseados em dados históricos de pares de moeda e no histórico de trading de contas (estes dados podem ser obtido de qualquer terminal, conectado à sua conta). Mas é frequentemente necessário armazenar algumas informações em um arquivo, e recuperá-las na próxima execução - às vezes, isto permite acelerar a velocidade da execução e, às vezes, é simplesmente impossível criar um programa viável sem elas. Notifique o programador sobre quaisquer requerimentos especiais para o processo de transferência do EA, ou apenas peça a ele para descrever este processo especificamente para seu caso.

Todos os detalhes, infelizmente, são impossíveis de ser satisfeitos. Por exemplo, se não há margem suficiente para abrir uma posição (por causa de posições, abertas por outros EAs), computada no lote do EA, então você terá que omitir o sinal ou abrir com um volume menor.

Se outros EAs ocupam o contexto de trading (no MetaTrader 4 apenas), seu EU não será capaz de fazer trade. E se há um limite no número máximo de ordens pendentes, a nova ordem não será capaz de ser definida. Entretanto, por causa do fato de que a maioria destas instâncias são cobertas em seu algoritmo, isto não piorará a situação. Ganhe experiência e cada nova versão do EA será melhor e mais confiável.


5,4. Como podemos simplificar o entendimento?

A informação é digerida muito mais facilmente se for bem ilustrada.

Para entender uma estratégia simples, é suficiente ter uma descrição do texto, mas se seu sistema é diferente e complicado, dê alguns passos para ajudar o programador:

  1. Anexe à tarefa, algumas capturas de tela, ilustrando os diferentes pontos do algoritmo (a hora de ocorrência de um sinal, uma demonstração do trabalho de um stop de rastreamento, a sequência da definição de ordens pendentes, etc.). Não hesite em fornecer os gráficos com breves comentários, mesmo se eles forem parcialmente duplicados no texto do algoritmo.
  2. Formate o texto da tarefa com bom gosto: utilize cores diferentes para posições longas e curtas, destaque as variáveis externas (os parâmetros que você deseja ser capaz de configurar), marque os pontos importantes e fórmulas. Além do fato de que o texto será mais fácil de ler, será muito mais fácil navegar por ele.
  3. exemplos. Qualquer fórmula, ilustrada por números concretos, torna-se mais clara.
  4. Numere os parágrafos e sub-parágrafos do algoritmo - para que eles possam ser sempre consultados durante uma discussão. "Erro em uma posição 2.1.4 - é muito mais curto e preciso que "um erro no lugar onde estava o nível Stop Level para a segunda posição longa da série é calculado.


5,5. Texto, voz ou vídeo?

Texto, voz ou vídeo?Eu sempre acho hilário quando um cliente, ao invés de enviar-me a tarefa, me envia um link para uma discussão de 120 páginas da estratégia em um fórum, um livro de 70 páginas, ou uma palestra em vídeo de uma hora e meia. Claro, os programadores têm todo o tempo do mundo, nada com o que se preocupar - eles vão tirar um tempo para estudar isso ... O fato de que a parte útil destas informações caberá em um algoritmo de meia página, ou o fato de que é simplesmente impossível formalizar esta descrição, não parece preocupar ninguém.

Se você já pesquisou este material, se você entende do que se trata, se você tem uma boa ideia de como a estratégia funcionará - apenas formalize o algoritmo! Remova as "sobras" (o que geralmente compreende 80% das informações), as pausas estranhas, as discussões distrativas, as histórias sobre o futuro brilhante, as observações dos resultados de teste - e o candidato/desenvolvedor receberá somente o que ele realmente precisa para escrever o programa.

Mas se você ainda não sabe do que se trata o livro ou palestra, se você não tem certeza que isto é suficiente para fazer um sistema de trading totalmente automatizado, então formule a pergunta de forma diferente! Você só pode perguntar "quanto custará para escrever um Expert Advisor baseado nesta estratégia?" quando você tiver uma estratégia.

E em nosso caso, há apenas uma certa quantidade de informações. Sua qualidade (se é receptível à formalização, detalhada o suficiente, etc.) - é ainda desconhecida. Então sinta-se a vontade para perguntar se o programador está ou não interessado em estudar este material "para ter uma ideia", e se não, quanto tempo ele levará para escrever regras completas para um sistema de trading fora desta "longa discussão". Acredite em mim, mesmo a forma da própria pergunta ilustrará seu relacionamento com o candidato/desenvolvedor.

Nem todos os programadores estão interessados em ler documentos de múltiplas páginas ou discussões de alguma estratégia - eles têm ideias próprias suficientes que estão pendentes de verificação, e novas informações são simplesmente desnecessárias.

Nem todo mundo irá querer assistir um palestrante falando sobre a construção de linhas de tendência e seus papeis em seu sistema, ao invés de seu filme favorito. Isto é na maioria das vezes bastante entediante, e pior, difícil de formalizar. Em alguns momentos terão que ser literalmente inventados por você mesmo (encontrar a explicação mais lógica), algumas coisas terão que ser adivinhadas ou selecionadas através de experimentos, para alguns temas, você precisará buscar e pesquisar informações adicionais. Em geral, o processo é bastante trabalhoso e criativo, não o subestime.

Eu quero mencionar separadamente aqueles que gostam de se comunicar via Skype ou telefone. Na maioria das vezes, o desejo de descrever sua estratégia oralmente se deve não somente à relutância de tomar ações extras (escrever em um teclado), mas o que é pior, a falta de entendimento da estratégia pelo autor.

é impossível construir um conjunto de regras de trading, se elas forem baseadas em adivinhações e intuições do autor, é muito difícil estruturar uma história emocional e bagunçada. E, como no caso de uma longa palestra por vídeo, o programador nem sempre está interessado em ouvir estas "revelações" - já que para escrever o programa ele precisa do algoritmo, e alguém ainda tem que escrevê-lo.

é difícil de sobrestimar a importância das tecnologias modernas - é muito mais fácil encontrar uma linguagem comum ao comunicar-se por voz ou vídeo, e ao mostrar uma imagem de seu monitor para seu parceiro. Mas a conversa será muito mais produtiva se houver algo para discutir - formule seus pensamentos no papel, e você pode preparar uma tarefa completa bem no curso da discussão, simplesmente fazendo pequenas clarificações em um texto já preparado.

As conclusões que você deve fazer do conteúdo acima são:

Se você consegue desenhar um algoritmo de estratégia claro a partir da descrição - desenhe-o você mesmo e envie ao programador somente as informações necessárias.
Se o processo de formalização for muito complexo e requer muito trabalho - não espere que o programador faça isso de graça.

Eu espero que agora você tenha um bom entendimento do que é a tarefa, e nós podemos falar sobre escolher um executor em particular.


6. Selecionar o Candidato/Desenvolvedor

Selecionar o executorA questão da escolha de um programador tornou-se vital assim que esta escolha veio a existir. Todo cliente deseja pagar o menos possível e obter resultados da mais alta qualidade. De forma ideal, o software deveria ser escrito pelos melhores profissionais, e ao mesmo tempo, ser gratuito. Este é um ideal a se aspirar, manobrando através dos profissionais caros e os iniciantes.

Ao selecionar o desenvolvedor para a implementação de seu primeiro trabalho, eu aconselho você a avaliar estes critérios:

  1. Experiência em desenvolvimento público de programas em MQL4/MQL5.
    Se o desenvolvedor do EA entrou no mercado há uma semana, ele pode também sair em uma semana. Um "pro" com dois anos de experiência, é claro, pode também repentinamente desaparecer, mas a probabilidade é muito menor. Perder comunicação com o desenvolvedor ameaça, não apenas a habilidade de fazer uma nova ordem, mas também:
    • A falta de suporte (não há nenhum software sem erros, há apenas programa mal testados);
    • A complexidade para fazer até mesmo mínimas melhorias (o código de outras pessoas é sempre mais difícil de se trabalhar, portanto um outro desenvolvedor por pedir um bom pagamento, mesmo que para pequenas mudanças).

  2. Feedbacks de clientes reais.
    A prática é o critério da verdade. Se uma pessoa escreveu programas que são usados por pessoas reais, significa que eles funcionam. De outra forma, você teria sempre encontrado feedbacks, expondo sua falta de profissionalismo.
    Se você possui amigos traders que já utilizaram os serviços de um programador, peça aconselhamento a eles - pelo menos você obterá o resultado esperado.

  3. Disponibilidade online.
    Ninguém gosta de esperar por uma resposta para uma carta por dias. E para alguns, 2 horas é tempo demais.
    Observe a pessoa - se ele está frequentemente "online" ou não, se ele é rápido para responder mensagens ou não. No futuro, isto pode economizar uma tremenda quantidade de tempo para você.

  4. Métodos de comunicação.
    Hoje há uma variedade de maneiras de se comunicar via internet: email, mensagens, programas para bate-papo de voz e vídeo, mensagens privadas em recursos da internet. Alguns estão acostumados a um método, e outras pessoas com outros. Para a boa comunicação, você precisará selecionar um método que é confortável para ambos. Não há problema em instalar mais um programa, mas algumas pessoas podem não querer fazer isso, porque elas não vêem uma necessidade para isso.
    Se você precisa de comunicação ao vivo (ex. por Skype), verifique se seu desenvolvedor está pronto para isso ou não. Arranje com antecedência, especialmente, se você quer falar pelo telefone ou se encontrar pessoalmente - nem todos concordarão em realizar seus trabalhos "off-line".

  5. Termos de cooperação.
    Antes de fazer uma ordem é necessário descobrir todas as condições para cooperação:
    • é possível completar o serviço "Jobs"? Uma resposta positiva para esta pergunta anulará a maioria das outras.
    • O pré-pagamento é requerido, se sim, quanto é?
    • Como o programa será verificado? Você receberá a versão demo?
    • Você receberá o código-fonte do programa, se sim, quando - após o pagamento completo ou imediatamente?
    • Quem será dono dos direitos para distribuidão do programa?
      Verificar a integridade do programador é improvável que funcione, mas ainda é válido deixar claro formalmente este ponto: se ele é repetidamente suspeito de vender EAs ou algoritmos a clientes, sua reputação será maior que ele.
    • Quanto tempo durará o suporte técnico e em quais termos? Os consertos de erros (discrepâncias do algoritmo) serão feitos gratuitamente? Quanto custarão as pequenas melhorias?
    Todas estas nuances devem ser esclarecidas antes de iniciar o relacionamento financeiro, já que será mais difícil depois.

  6. Métodos de pagamento.
    Quais sistemas de pagamento eletrônico o desenvolvedor utiliza? O pagamento pode ser feito por uma transferência bancária ou um cartão de crédito?
    Assegure-se de verificar os requerimentos para a moeda de pagamento - a internet é internacional e, portanto, nem todos precisarão de rublos russos.

  7. Caráter.
    Se você não está procurando por um cooperador, mas um parceiro constante, tente descobrir se seus caráteres são compatíveis. Socializem-se um com o outro, indique seus requerimentos para a outra parte, descreve sua visão do mundo, seus princípios, e fraquezas (o quanto seu senso de autocrítica permitir).
    Uma alternativa - tente fazer o pedido na primeira escolha, e resolva todo o resto no processo. Mas pode acontecer de este parceiro ser encontrada bem depois da primeira tentativa.

  8. Custo do trabalho.
    Por último mas não menos importante. Eu não confiaria o desenvolvimento de um programa sério a um homem que cobra $10 por seu trabalho, mas também não estou disposto a pagar $1000 - portanto tenho que escolher algo no meio termo. O preço, por um lado, indica o profissionalismo do executor e, por outro, depende do interesse e carga de trabalho dele. Não espere conseguir uma "Mercedes" por $5, mas não pague demais por um "Buick".


Nós repetidamente citamos o tópico de "uma lista de programadores" - a lista de alguns especialistas prontos para trabalhar com suas informações de contato e opiniões de clientes. Houveram várias tentativas de criar tal lista - por mim mesmo no artigo "Um Expert Advisor Feito por Pedido. Manual para um trader" em mql4.com, por usuários de fóruns independentes, e apenas por pessoas indiferentes a este assunto. Isso realmente poderia facilitar a seleção para a primeira ordem.

Mas exatamente como alguns anos atrás, não há uma lista compreensiva e constantemente atualizada. Nós podemos trabalhar juntos para fazer uma outra tentativa em criá-la, mas eu acho que a discussão desta ideia está além do foco deste artigo.


7. Proteger Você Mesmo de ser Enganado

Há pessoas diferentes e há situações diferentes. Mesmo os desenvolvedores de EA mais confiáveis podem desaparecer sem completar o trabalho, e mesmo a pessoa mais responsável pode violar os termos de acordo sob a pressão das circunstâncias. Não corra riscos onde eles não são necessários - utilize o serviço Jobs!

Seguindo constantemente o desenvolvimento da estratégia de trading automatizado, em meados de 2010 a MetaQuotes Software Corp. lançou um novo serviço, o propósito principal deste é a organização de relações entre o cliente e o desenvolvedor. Mesmo agora, após somente seis meses, o serviço é merecidamente popular, e é utilizado diariamente por muitos traders e programadores.

Mais informações sobre este serviço podem ser obtidas do anúncio oficial no fórum e no artigo sobre seu uso:

A principal diferença entre o serviço "Jobs" na MQL5.community e a maioria dos recursos e serviços similares em outros websites, é a segurança. O cliente e o programador estão seguros, um do outro, de suas ações negligentes durante o período completo do trabalho em conjunto. No evento de uma disputa, a MetaQuotes Software Corp. está pronta para assumir o papel de intermediária.

Apesar de toda a perfeição e formalidade do serviço, os problemas surgirão ao utilizá-lo. A maioria deles pode ser evitada seguindo algumas simples regras:

  1. Antes de processar uma nova ordem (se você é o trader), ou fazer propostas de implementação (se você é o programador), assegure-se de revisar os termos de serviço. Muitas disputas surgem devido à leitura desatenta ou falta de entendimento das regras. Se alguns pontos não estiverem claros, ou, em sua opinião, podem ser interpretados ambiguamente, então faça algumas perguntas esclarecedoras no ramo especial - talvez, sua questão fará com que as regras sejam mais simples e diretas.

  2. Ao solicitar um Expert Advisor, prepare um algoritmo claro.
    Há vários capítulos deste artigo direcionados a este aspecto, então não o repetirei aqui.

  3. Escolha um candidato/desenvolvedor adequado com um preço e tempo disponível adequados para a tarefa, não seja tentado por um "queijo grátis" - não existe tal coisa.
    Observe o portfólio do desenvolvedor e leia feedbacks de seus trabalhos completados. Assegure-se de que ele não esteja ocupado demais com outros trabalhos - talvez isto prevenirá ele de terminar seu pedido a tempo.
    E lembre-se que a hora da implementação é contada após completar a 2ª etapa (Negociação de Requerimentos) - os detalhes do processo não são regulados, e a agenda de trabalho depende apenas de você e do programador.

  4. Tenha todas as discussões, utilizando mensagens em serviço "Jobs" - somente então elas podem ser usadas em casos de arbitragem.
    Mesmo que você esteja se comunicando por ICQ ou Skype, tente "documentar" todos os momentos chave nos comentários do serviço Job.

  5. Acompanhe as atualizações de trabalhos, que estão relacionados (não importa - como cliente ou como executor): regularmente verifique suas mensagens pessoais, permita o envio de notificações para seu email, ou adicione seu número de telefone celular ao seu perfil para receber notificações por SMS.
    Se você não acompanhar o fluxo de trabalho, ele pode ser completado sem você, e não a seu favor - na data de vencimento ele pode ser forçadamente fechado pela outra parte.

De outra forma, o uso do serviço não é diferente do trabalho sem intermediários, exceto que o desenvolvedor irá pagar uma pequena comissão ao serviço "Jobs" por organizar o processo.


8. Verificar os resultados

O último estágio de nossa jornada é verificar o trabalho completo. Para assegurar que o programa funciona de acordo com o algoritmo aprovado, você deve cuidadosamente testá-lo

  1. Teste em condições diferentes: em diferentes tipos de contas, pares de moeda, períodos de tempo, com diferentes combinações de parâmetros - o programa deve funcionar da mesma forma e corretamente em cada situação (se a "indulgência" não estiver claramente especificada no algoritmo).

  2. Verifique o programa não apenas no Strategy Tester, mas em uma conta de demonstração. O Strategy Tester ajudará você a rapidamente encontrar os erros óbvios, e permitir a você verificar a estratégia em diferentes intervalos do histórico, e o teste online irá mostrar como o programa funcionará em condições próximas às reais. Você pode criar "distrações" para o programa - reiniciar o terminal do cliente, conectar à contas diferentes, executar outros Expert Advisors ou Indicators, alterar as configurações durante o trabalho - é melhor aprender sobre os recursos de seu comportamento em situações diferentes neste estágio.

  3. Compare o trabalho do Expert Advisor com o algoritmo aprovado, ao invés de suas expectativas da lucratividade do sistema. Se acontecer do algoritmo conter um erro durante o processo de verificação, por favor, faça as alterações necessárias e peça ao desenvolvedor que modifique o Expert Advisor. Mas não espere que ele fará isso gratuitamente (especialmente se a melhoria for significativa), este erro não é culpa dele.

Se você achar um problema, relate-o ao candidato/desenvolvedor.

  1. Indique a parte do algoritmo que é processada pelo programa incorretamente (ou no qual as ações incorretamente começaram).
    Se for difícil achar o local específico onde a lógica está violada, então explique o problema com suas palavras, mas ainda tente não desviar muito do algoritmo.

  2. Descreva as condições sob as quais o teste foi executado:
    • Anexe um arquivo-conjunto com parâmetros do programa (o botão "Salvar" na janela "Opções" do Expert Advisor);
    • Especifique o par de moeda utilizado e período de tempo da tabela;
    • Especifique o endereço do servidor ao qual o terminal foi conectado, e o tipo de conta (demo, real, contest ou algum outro modo);
    • Especifique a versão do terminal do cliente (menu "Ajuda" - "Sobre");
    • Se você a verificou no Strategy Tester, especifique a configurações do Strategy Tester (período de teste, tipo e modo de execução, depósito inicial, alavancagem).

  3. Anexe uma captura de tela, ilustrando o problema.

  4. Se o problema é relacionado à abertura ou fechamento de uma posição, copie o trecho do relatório do Strategy Tester ou algumas linhas do histórico da conta.

  5. Anexe os arquivos de registro do Expert Advisor (selecione "Abrir" no menu de contexto da aba "Experts" do terminal do cliente ou na aba "Diário" no Strategy Tester).

Quanto mais informações o programador tiver, mais fácil será para encontrar e solucionar o problema. Eu espero que após todas estas descrições de etapas, você obtenha exatamente o que deseja. Mas não volte correndo para o dia a dia corrido de um trader, compartilhe suas experiências com outras pessoas.


9. Fornecer feedback

Fornecer feedback

MQL é uma comunidade em crescimento, e você é parte dela.

Lembre como você escolheu um programador e preparou suas especificações da primeira tarefa - o que pode ter lhe ajudado no processo? Compartilhe suas experiências!

Escreva um algoritmo claro e deixe-o servir como um exemplo a seguir. Ajude os novados a formalizarem suas estratégias ou mostre que é impossível - salve outro buscador de Graal de um colapso de esperanças.

Fale sobre suas experiências com programadores, indique suas forças e fraquezas, descreva - o que você gostou mais e o que foi um problema. Isto levará 10 minutos, mas economizará muitos nervos e dinheiro aos seus companheiros traders.

Eu tenho uma atitude positiva com qualquer comentário construtivo e seria grato por qualquer crítica a este artigo. Se você acredita que algumas seções precisam ser melhoradas, que algo está faltando, ou, ao contrário, há algo sobrando - me fale!

Este artigo foi concebido como uma ferramenta para escrever uma descrição de Job, mas na verdade, cobriu muitos tópicos relacionados. Eu realmente gostaria que ele seja fácil de ler, faça as conclusões necessárias e seja realmente útil. Se você já leu até aqui, por favor, tire alguns minutos e deixe sua opinião. Graças aos seus comentários, este artigo pode tornar-se ainda melhor.

Esperando algum ceticismo de meus companheiros desenvolvedores de Expert Advisor, eu quero informar a vocês que este artigo foi escrito sob solicitação da MetaQuote Software Corp. Seu propósito não é fazer propaganda de meus serviços, mas ajudar com o relacionamento cultural entre o cliente e o programador.

Eu espero que você, como um verdadeiro profissional, apoie esta iniciativa e ajude a elevar nosso ramo em geral ao próximo nível. Eu estou aguardando seus comentários e observações.


Conclusão

O trading automatizado continua a ganhar um novo impulso. Como e para onde ele irá, depende de nós.

Vamos criar uma cultura de relacionamentos agora e, muito em breve, você colherá as recompensas na forma de Expert Advisors de alta qualidade.