Escrevendo um artigo sobre "Como escrever um TOR para um robô comercial". - página 7

 
Andrey F. Zelinsky:

O fluxograma é a parte mais inútil, mais demorada e praticamente irrealizável dos ToR.

Para entender isto - você pode fazer uma pequena e muito simples experiência - os desenvolvedores de serviços freelance devem receber uma tarefa: "Fazer um fluxograma para desenhar o indicador de MA" - e depois avaliar por dois critérios: 1) exatidão e 2) compreensibilidade.

Uma vez me ajudou muito - quando eu não conseguia lidar com isso na minha cabeça.

 
Artyom Trishkin:

Isso realmente me ajudou uma vez - quando eu não conseguia me concentrar...

Você acabou de dizer algo como isto:"Meu fluxograma me ajudou muito como desenvolvedor". Note que, para seu organograma, uma terceira pessoa que irá ler e trabalhar com seu organograma não era originalmente destinada.

Neste tópico, estamos discutindo "Como criar um TOR para um robô comercial".

Não está claro para mim para quem e com que metas e objetivos este artigo está escrito.

Porque existem diferentes graus de detalhe e a partir deste detalhe derivam: objetivos/objetivos/resultados -- isto é, para falar sobre TOR -- é preciso primeiro entender a) o que o cliente espera e exige do desenvolvedor e b) o que é esperado e exigido do cliente.

Quando falamos de um fluxograma, isso significa que o cliente entende claramente o modelo do evento, entende e é capaz não só de mostrar a organização necessária do programa, mas também ser capaz de verificar se tudo está implementado como deveria estar em termos de código. Neste caso, o cliente precisa mais de um codificador. E, neste caso, é o cliente que é totalmente responsável por tudo, incluindo a correção de sua estrutura.

Este é um esquema. Que porcentagem de pedidos estão neste cenário?

Leia o layout do artigo:

Rashid Umarov:

Um TOR mal redigido ou sua ausência real indica com mais freqüência que as regras do sistema comercial não estão formuladas, simplesmente não existem. O que o cliente chama de um sistema comercial, na verdade, é apenas uma idéia. Você não pode começar a trabalhar sob tais condições, porque muito em breve no processo de programação do algoritmo surgirão algumas nuances não gravadas ou simplesmente a falta de um algoritmo para certas situações no mercado. Neste caso, o programador realmente começa a pensar nas opções ao invés do Cliente.

Corretamente escrito, exceto por uma coisa - a grande maioria das tarefas são iniciadas, executadas e concluídas - em uma declaração de problema difusa. A taxa de falhas devido aos TORs difusos -- fácil de verificar com acordos de arbitragem. Acho que não é mais do que 5-10%.

E se falarmos das recomendações para os TOR para a grande maioria dos clientes -- em tal TOR -- a recomendação de fazer um diagrama de fluxo é razoável?

 

Versão atual do artigo

O que você precisa para encomendar um robô de negociação

Robôs de negociação são programas que executam os algoritmos embutidos neles. Algoritmos são um conjunto de ações que devem ser executadas na ocorrência de um evento. Por exemplo, a tarefa mais comum na negociação algorítmica é a definição do evento "Nova barra" , na aparência do qual o robô verifica a aparência dos sinais de negociação e executa as ações necessárias neles.

Mas antes de escrever ou encomendar um robô de negociação, é necessário ter um sistema de negociação com regras claras para determinar momentos favoráveis para realizar transações. O desenvolvimento de qualquer sistema de negociação, mesmo o mais complexo, sempre começa com coisas básicas, ou seja, com o desenvolvimento de sinais de negociação para compra e venda. Em seguida, você pode adicionar várias opções de acompanhamento e fechamento a ele.

Você não precisa passar anos atrás do monitor do terminal de negociação para desenvolver sua estratégia de negociação. Existem agora centenas de ideias comprovadas publicadas na Internet e em livros que você pode experimentar. E mesmo que você não esteja completamente confiante em suas habilidades de programação, isso não é um obstáculo. O serviço Freelance ajudará você a encontrar o desenvolvedor certo e pagar com segurança pelo trabalho realizado.

Mas antes de entrar no fascinante elemento da negociação algorítmica, recomendamos que você leia artigos úteis sobre o assunto:

Por que é importante ter um bom Termo de Referência?

Ao solicitar ou desenvolver um Expert Advisor, é necessário formular requisitos técnicos para ele - quais tarefas ele deve resolver, em que condições ele será operado, o que acontecerá em situações de emergência, que tipo de controle ele precisa. Os robôs de negociação são programas e devem funcionar claramente de acordo com a lógica subjacente. Mas antes de programar o algoritmo de ações necessário, ele também deve ser claramente descrito.

A descrição da estratégia de negociação deve ser emitida na forma de um Termo de Referência. E quanto melhor e mais claro for, menos mal-entendidos haverá entre você, como cliente, e o programador, como executor do seu Pedido.

A coisa mais importante nos Termos de Referência é a presença de Regras de Negociação formais e inequívocas. Mesmo que você não vá pedir um especialista, mas queira escrevê-lo você mesmo, comece desenvolvendo essas regras para si mesmo. Faça um Termo de Referência e certifique-se de incluir itens sobre como testar/otimizar o Expert Advisor. Adicione também hipóteses para testar a qualidade de sua estratégia de negociação - quais critérios você usará para selecionar os parâmetros ideais, por que você considera esses critérios importantes.

Inclua todas as etapas para criar um robô de negociação nos Termos de Referência - isso ajudará a entender a essência do algoritmo não apenas para o executor, mas também para você após semanas, meses ou anos. Lembre-se, a negociação algorítmica não é um hobby, mas o mesmo caminho monótono de pesquisa, durante o qual é necessário documentar as etapas passadas. Para mim, mais do que para um programador que escreverá um robô para você.

Desenvolva as habilidades de um burocrata que gosta de resolver as coisas. Você definitivamente vai precisar disso. Sim, e os programadores adoram ordens claras.

O que deve constar nos termos de referência

ideia comercial

Para uma rápida introdução à essência de uma estratégia de negociação, dedique o primeiro parágrafo da sua Ordem Técnica à ideia/hipótese que ela contém. Por exemplo: "Se o preço se aproximar do nível de resistência duas vezes e retroceder a cada vez, na terceira vez, como regra, ele o romperá". Aqui você pode anexar um gráfico com linhas de resistência/suporte plotadas, indicadores sobrepostos e assinaturas que ilustram a situação. Para descrever a ideia, não é necessário fornecer números específicos ou algoritmos de cálculo - nesta fase, não é necessário explicar como determinamos:

  • nível de resistência,
  • quebra de nível,
  • o conceito de "geralmente".

Um pequeno nível de abstração no estágio inicial permitirá que você se concentre na ideia em si, e não nos detalhes técnicos. Este método permite que você gere posteriormente muito mais variedades de sua estratégia de negociação - você simplesmente substituirá um bloco de estratégia por outro, um indicador por outro, adicionará ou substituirá filtros. Ao mesmo tempo, a ideia em si não mudará, apenas os nomes e valores dos parâmetros de entrada do seu robô de negociação mudarão.

Além disso, é necessário dar uma descrição de todos os termos que são usados na descrição da ideia. Se a tendência for importante para a estratégia, forneça uma descrição clara de como ela será determinada - com base em qual indicador, como a direção e a força da tendência serão determinadas. As características numéricas dessas definições formarão a base dos parâmetros de entrada do Expert Advisor, e são eles que você otimizará no testador de estratégia. Portanto, nomeie a primeira seção de seus Termos de Referência - Ideia comercial.

Termos

Para descrever os termos, recomendamos criar uma seção separada dos Termos de Referência - Termos. Nele, um parágrafo separado é escrito para cada termo, os próprios termos são escritos em negrito para destacar o conceito-chave de sua estratégia de negociação. Se necessário, adicione uma ilustração à descrição do termo, na qual você precisa mostrar o mais necessário para o entendimento.

Sinais de negociação

Em seguida, você está pronto para compilar a terceira seção mais importante - Sinais de negociação - que descreve sob quais condições, condições de mercado e leituras de indicadores, uma compra ocorre. Para descrever cada condição necessária para gerar um sinal de compra, é necessário destacar um parâmetro numérico, do qual depende a aparência de um sinal. Por exemplo, para uma média móvel , esse seria o tipo e o período de suavização. Esses parâmetros importantes são levados para os parâmetros de entrada do futuro Expert Advisor. Descreva separadamente as condições para a venda, mesmo que sejam simplesmente o oposto das condições para a compra - às vezes surgem sutilezas que o programador pode entender de maneira diferente de você. Por exemplo, para uma compra, a condição "Indicador> 0" é definida - o que escrever para uma venda? "Pontuação<0" ou "Pontuação<=0"?

Mesmo a ideia de negociação mais simples começa rapidamente a adquirir condições e filtros adicionais que confirmam a presença de um sinal de negociação ou vice-versa - proibir uma negociação. Portanto, é importante fazer capturas de tela explicativas para cada situação de mercado, que mostrem visualmente os indicadores e configurações necessários. Isso permitirá que você lide rapidamente com a situação em que seu consultor perdeu um sinal de negociação aparentemente óbvio ou de repente fez um acordo na hora errada.

Capturas de tela e fluxogramas

Existem muitos programas gratuitos e úteis na Internet para criar capturas de tela e fluxogramas. Uma pequena seleção de dicas para trabalhar com eles é dada no artigo Como elaborar um Termo de Referência ao solicitar um indicador . Lá você também encontrará dicas sobre como ordenar um indicador que mostra com setas no gráfico os momentos em que aparecem os sinais de compra e venda. Esse indicador, que funciona separadamente do consultor, facilita a verificação e o controle da operação do robô de negociação on-line e durante o teste visual.

Vida útil dos sinais/ordens/posições

A segunda parte importante da estratégia de negociação é sair de uma posição aberta e excluir ordens pendentes. Além disso, os próprios sinais de negociação também podem ser cancelados pelo tempo ou pela ocorrência de alguns eventos. Também é necessário descrever claramente em que condições a compra/venda será fechada, a ordem colocada será cancelada, quando o próprio sinal será cancelado, bem como para sinais de negociação.

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

Se sua estratégia de negociação exigir a configuração dos níveis de StopLoss e TakeProfit, forneça um algoritmo de cálculo. Se for necessário puxar para cima/mover esses níveis com flexibilidade, também é necessário descrever as condições para tais operações. Os níveis de SL/TP podem ser modificados tanto na abertura de uma nova barra quanto em cada tick. É necessário indicar explicitamente este momento nos Termos de Referência e entender a diferença nos modos de testar as estratégias de negociação. Recomendamos que você leia o artigo Testando estratégias de negociação em ticks reais .

Onde posso obter os Termos de Referência se você não pode redigi-lo sozinho

Um Termo de Referência mal elaborado ou sua ausência real na maioria das vezes indica que as regras do sistema de negociação não são formuladas, elas simplesmente não existem. O que neste caso o Cliente chama de sistema de negociação, na verdade, via de regra, é apenas uma ideia. É impossível começar a trabalhar nessas condições, porque muito em breve nuances desaparecidas ou simplesmente a ausência de um algoritmo em certas situações de mercado aparecerão no processo de programação do algoritmo. Nesse caso, o programador realmente começa a apresentar opções em vez do Cliente.

Como resultado, o Contratado pode, por sua conta e risco, concluir o trabalho e emitir um robô de negociação para o Cliente. Mas, neste caso, além de perder tempo discutindo cada nova questão em um TOR pouco claro, há também a possibilidade de o trabalho entrar na Arbitragem. Porque ao aceitar e verificar tal trabalho, o Cliente descobre de repente que as transações não estão sendo feitas como ele esperava, mas não conseguia descrever. E claro, neste caso, ele culpará a Contratada por violar determinados pontos do Termo de Referência e programar incorretamente o robô. A arbitragem nesses casos rapidamente entende a diferença de competência de ambas as partes e toma sua decisão com base no Termo de Arbitragem anexado ao despacho. De acordo com as Regras do Freelance , nenhuma correspondência do lado antes e durante a execução do Pedido não é levada em consideração:

Ao considerar o objeto da controvérsia na Arbitragem, apenas o Termo de Arbitragem serve de base para a tomada de decisão.

Na vida, essa opção também é possível: você tem regras de negociação rígidas, mas por algum motivo não pode elaborar os Termos de Referência sozinho. Por exemplo, eles não têm certeza de como descrever certas coisas corretamente ou precisam da ajuda de um especialista em matemática, redes neurais, aprendizado de máquina, programação e assim por diante. Neste caso, você pode ordenar a criação dos Termos de Referência também em Freelance, para isso, as categorias "Consultoria de Programação" ou "Outros" são adequadas.

Escolha uma dessas duas categorias, nomeie-a "Criando um TOR para encomendar um robô de negociação" e indique o custo inicial do trabalho, como você imagina. Um desenvolvedor experiente de sistemas de negociação irá ajudá-lo a formular corretamente as Regras de sua estratégia para que sejam compreensíveis para outro programador. Ao mesmo tempo, você deve poder trabalhar com gráficos, indicadores e objetos gráficos para mostrar as configurações de seus sinais de negociação usando capturas de tela.

O programador entenderá seu sistema de negociação e o ajudará a escrever uma descrição do algoritmo de negociação, se possível. Se você não pode formular alguns conceitos por conta própria (por exemplo, "impulso" ou "rebote do nível"), ele pode lhe dar ideias prontas com base em sua experiência. Como regra, qualquer situação no mercado pode ser descrita logicamente (e depois programaticamente) com alguma liberdade de interpretação. E essa variação sempre pode ser expressa por um determinado parâmetro, que você otimizará em seu Expert Advisor.

Não existem padrões ideais, pois o mercado, por um lado, não se repete e, por outro, situações semelhantes sempre podem ser encontradas na história. O resultado do seu trabalho conjunto deve ser um Termo de Referência pronto para encomendar um robô de negociação de acordo com sua estratégia.

Quais termos usar

Como regra, em um sistema de negociação, existem vários conceitos ou termos básicos importantes que descrevem o estado do mercado ou a natureza do movimento dos preços. Mesmo que pareça que você está usando um conceito geralmente aceito e simples, é melhor descrevê-lo claramente. Para cada termo, faça um parágrafo de descrição.

Por exemplo, de acordo com Bill Williams, uma tendência de alta é quando todas as três linhas do Alligator são organizadas nesta ordem de baixo para cima: Azul, Vermelho, Verde.


Outra definição clássica de tendência de alta - de Larry Williams - quando cada novo pico é maior que o anterior e cada novo fundo não é menor que o anterior.


Na descrição dos termos, você pode usar capturas de tela dos gráficos, elas não interferirão. Nos próprios termos de referência, destaque os termos em negrito - deixe o performer prestar atenção neles e faça uma pergunta se algo não estiver claro.

Ao utilizar um determinado termo na descrição da estratégia, é impossível encaminhar a Contratada para outras fontes (sites, livros, fóruns, etc.), argumentando que isso já é bem conhecido. Tudo deve ser descrito aqui e agora, não é permitido "vou explicar depois no Skype". Você não levará mais de meia hora para escrever todos os termos no TOR, mas economizará tempo que você gastará corrigindo erros devido a mal-entendidos.

O que escrever em uma descrição de trabalho no Freelance

Ao criar um trabalho, descreva em alguns parágrafos a essência geral de sua ideia comercial para que os potenciais artistas entendam o que você precisa. A descrição do trabalho não precisa divulgar as regras do sistema de negociação ou fornecer detalhes sobre os indicadores utilizados.

A descrição pode ficar assim:

Escreva um Expert Advisor para negociar em reversões de tendência. Os sinais de reversão serão padrões de ação de preço. Para determinar a tendência, serão utilizados os indicadores ADX, Alligator e MACD - a escolha do indicador é definida pelos parâmetros de entrada do consultor.

Ideia geral de uma estratégia de negociação

Aqui você pode especificar em quais instrumentos o robô negociará, se está negociando com a tendência, como é determinado e em qual período de tempo. Se negociarmos com a tendência, então como ocorre a entrada - em uma reversão, na quebra de novos extremos e assim por diante.

Em geral, existem apenas duas estratégias de negociação nos mercados financeiros: continuar em movimento e retornar à média. Sua ideia deve estar relacionada a uma dessas duas estratégias e explicar como você abrirá negociações - no mercado, após a confirmação ou a um preço melhor.

Descrição da configuração para aguardar um sinal

... é necessário formar um plano com um rompimento subsequente / ou aguardar o final da sessão europeia e receber sinais apenas na direção de seu movimento

Descrição do sinal

... Parâmetros técnicos da descrição - tendência / recuo / colapso - tudo é estritamente formalizado

É melhor depurar os sinais de compra e venda separadamente primeiro

Seria melhor se o conselheiro colocasse rótulos/objetos de sinal no gráfico

É melhor se os indicadores de sinal forem feitos separadamente

Vida útil do sinal

... quanto tempo o sinal é válido - em barras/horas/até o final da sessão/dia

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

... existem recursos, por exemplo, não configuramos SL / TP imediatamente,

ou quantas tentativas fazemos para entrar no mercado,

ou definindo diferentes oredermagic/ordercomment dependendo do tempo/configuração/padrão

algo mais

Manutenção de uma posição/ordem de negociação

... existe um trailing stop ou não

ao ligar o ts

movemos ordens pendentes atrás/contra o preço

acompanhar o lucro/perda atual em uma posição aberta

algo mais

Cancelamento de uma ordem e fechamento de uma posição

... excluir ordens por hora/número de barras/final de período/aparecimento de sinal oposto/perda de configuração

... fechar a posição por hora/número de barras/final do período/lucro acumulado/aparecimento do sinal oposto/configuração

algo mais

Cálculo de lote para fazer um pedido

.... do equilíbrio

fixo

do lucro acumulado

com base nos resultados das últimas N negociações

de risco (distância SL)

algo mais

Lidando com erros de negociação e estado do ambiente

... logs detalhados ao enviar ordens de negociação

processamento de reinicialização de terminal/conexão/servidor

feedback via mensageiros/e-mail

A diferença entre negociar na abertura da barra e dentro da barra

... os sinais podem desaparecer e aparecer durante a vida útil da barra

Estratégias de carrapato/escalpelamento

... você precisa ter uma boa ideia do que é, quanto menos TakeProfit/StopLoss em pontos, mais crítica é a estratégia para spreads/comissões/atrasos da rede/qualidade do histórico disponível/velocidade do próprio robô.

Qualquer deterioração nas condições pode matar a estratégia

Grids, martingales, média e a desvantagem dessas melhorias

... O que são, por que são populares e até que ponto podem ajudar a alongar temporariamente a estratégia. O risco aumenta, embora possa prolongar a vida de uma estratégia ruim

O que observar ao escolher um empreiteiro

... perguntas substantivas

Não finge impressionar

Dá prazos claros

Indica locais pouco claros no TOR imediatamente, e não após 2 meses de discussão

Um bom programador valoriza o tempo dele e o seu - é por isso que ele adora um TOR consistente e bem desenvolvido

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

Transforme uma estratégia perdedora em um robô lucrativo

Otimize e identifique quaisquer pontos fracos

Escreva um programa sem erros - eles ainda serão. Encontrá-los e descrevê-los de forma compreensível é sua tarefa.


 

A versão atual do artigo, a seção Descrição da configuração para aguardar um sinal continua e adiante

O que você precisa para encomendar um robô de negociação

Robôs de negociação são programas que executam os algoritmos embutidos neles. Algoritmos são um conjunto de ações que devem ser executadas na ocorrência de um evento. Por exemplo, a tarefa mais comum na negociação algorítmica é a definição do evento "Nova barra" , na aparência do qual o robô verifica a aparência dos sinais de negociação e executa as ações necessárias neles.

Mas antes de escrever ou encomendar um robô de negociação, é necessário ter um sistema de negociação com regras claras para determinar momentos favoráveis para realizar transações. O desenvolvimento de qualquer sistema de negociação, mesmo o mais complexo, sempre começa com coisas básicas, ou seja, com o desenvolvimento de sinais de negociação para compra e venda. Em seguida, você pode adicionar várias opções de acompanhamento e fechamento a ele.

Você não precisa passar anos atrás do monitor do terminal de negociação para desenvolver sua estratégia de negociação. Existem agora centenas de ideias comprovadas publicadas na Internet e em livros que você pode experimentar. E mesmo que você não esteja completamente confiante em suas habilidades de programação, isso não é um obstáculo. O serviço Freelance ajudará você a encontrar o desenvolvedor certo e pagar com segurança pelo trabalho realizado.

Mas antes de entrar no fascinante elemento da negociação algorítmica, recomendamos que você leia artigos úteis sobre o assunto:

Por que é importante ter um bom Termo de Referência?

Ao solicitar ou desenvolver um Expert Advisor, é necessário formular requisitos técnicos para ele - quais tarefas ele deve resolver, em que condições ele será operado, o que acontecerá em situações de emergência, que tipo de controle ele precisa. Os robôs de negociação são programas e devem funcionar claramente de acordo com a lógica subjacente. Mas antes de programar o algoritmo de ações necessário, ele também deve ser claramente descrito.

A descrição da estratégia de negociação deve ser emitida na forma de um Termo de Referência. E quanto mais detalhado for, menos mal-entendidos haverá entre você, como cliente, e o programador, como executor do seu Pedido.

A coisa mais importante nos Termos de Referência é a existência de Regras de Negociação formais inequívocas. Mesmo que você não vá pedir um especialista, mas queira escrevê-lo você mesmo, comece desenvolvendo essas regras para si mesmo. Faça um Termo de Referência e certifique-se de incluir itens sobre como testar/otimizar o Expert Advisor. Adicione também hipóteses, com base nas quais você verificará a qualidade e a estabilidade de sua estratégia de negociação - quais critérios você usará para selecionar os parâmetros ideais, por que você considera esses critérios importantes.

Inclua todas as etapas para criar um robô de negociação nos Termos de Referência - isso ajudará a entender a essência do algoritmo não apenas para o executor, mas também para você após semanas, meses ou anos. Lembre-se, a negociação algorítmica não é um hobby, mas o mesmo caminho monótono de pesquisa, durante o qual é necessário documentar as etapas passadas. E você precisa disso ainda mais do que para um programador que escreverá um robô para você.

Desenvolva as habilidades de um burocrata que gosta de resolver as coisas. Um diário de desenvolvimento de cada sistema de negociação certamente será útil quando você quiser testar uma nova ideia. Sim, e os programadores adoram ordens claras.

Exemplos de Termos de Referência

Vamos dar exemplos de como as Especificações Técnicas para Expert Advisors incluídas na entrega do terminal MetaTrader 5 podem ser projetadas.


O que deve constar nos termos de referência

ideia comercial

Na primeira seção de seus Termos de Referência, descreva a ideia geral por trás de sua estratégia de negociação. Por exemplo: "Se o preço se aproximar do nível de resistência duas vezes e retroceder a cada vez, na terceira vez, como regra, ele o romperá". Aqui você pode anexar um gráfico com linhas de resistência/suporte plotadas, indicadores e legendas explicativas. Para descrever a ideia, você não precisa entrar em números específicos ou algoritmos de cálculo - neste exemplo, você não precisa explicar imediatamente como determinamos:

  • nível de resistência,
  • quebra de nível,
  • o conceito de "geralmente".

Um pequeno nível de abstração no estágio inicial permitirá que você se concentre na ideia em si, e não nos detalhes técnicos. Este método permite que você gere posteriormente muito mais variedades de sua estratégia de negociação - você simplesmente substituirá um bloco de estratégia por outro, um indicador por outro, adicionará ou substituirá filtros. Ao mesmo tempo, a ideia em si não mudará, apenas os nomes e valores dos parâmetros de entrada do seu robô de negociação mudarão.

Além disso, é necessário dar uma descrição de todos os termos que são usados na descrição da ideia. Se a tendência é importante para a estratégia, dê uma definição clara - com base em qual indicador a direção e a força da tendência serão determinadas. As características numéricas dessas definições formarão a base dos parâmetros de entrada do Expert Advisor, e são eles que você otimizará no testador de estratégia. Portanto, nomeie a primeira seção de seus Termos de Referência - Ideia comercial.

Termos

Para descrever os termos, recomendamos criar uma seção separada dos Termos de Referência - Termos. Nele, um parágrafo separado é escrito para cada termo, os próprios termos são escritos em negrito para destacar o conceito-chave de sua estratégia de negociação. Se necessário, adicione uma ilustração à descrição do termo, na qual você precisa mostrar o mais necessário para o entendimento. Os parâmetros de entrada do futuro Expert Advisor podem ser colocados em itálico.

Sinais de negociação

A próxima seção dos Termos de Referência é a terceira seção mais importante - Sinais de Negociação - que descreve sob quais condições, condições de mercado e leituras de indicadores, uma compra ocorre. Para descrever cada condição necessária para gerar um sinal de compra, é necessário destacar um parâmetro numérico, do qual depende a aparência de um sinal. Por exemplo, para uma média móvel , esse seria o tipo e o período de suavização. Esses parâmetros importantes são levados para os parâmetros de entrada do futuro Expert Advisor. Os parâmetros de entrada do futuro Expert Advisor podem ser colocados em itálico.

Descreva separadamente as condições para a venda, mesmo que sejam simplesmente o oposto das condições para a compra - às vezes surgem sutilezas que o programador pode entender de maneira diferente de você. Por exemplo, para uma compra, a condição "Indicador> 0" é definida - o que escrever para uma venda? "Pontuação<0" ou "Pontuação<=0"?

Mesmo a ideia de negociação mais simples começa rapidamente a adquirir condições e filtros adicionais que confirmam o sinal de negociação ou, pelo contrário, o cancelam. Portanto, é importante fazer capturas de tela explicativas para cada situação de mercado, para mostrar visualmente os indicadores e configurações utilizados. Isso permitirá que você lide rapidamente com a situação em que seu consultor perdeu um sinal de negociação aparentemente óbvio ou de repente fez um acordo na hora errada.

Capturas de tela e fluxogramas

Existem muitos programas gratuitos e úteis na Internet para criar capturas de tela e fluxogramas. Uma pequena seleção de dicas para trabalhar com eles é dada no artigo Como elaborar um Termo de Referência ao solicitar um indicador . Lá você também encontrará dicas sobre como ordenar um indicador que mostra com setas no gráfico os momentos em que aparecem os sinais de compra e venda. Esse indicador, que funciona separadamente do consultor, facilita a verificação e o controle da operação do robô de negociação on-line e durante o teste visual.

Vida útil dos sinais/ordens/posições

A segunda parte importante da estratégia de negociação é sair de uma posição aberta e excluir ordens pendentes. Além disso, os próprios sinais de negociação também podem ser cancelados a tempo ou quando ocorrerem alguns eventos. É necessário, quanto aos sinais de negociação, descrever - em que condições a compra / venda será fechada, a ordem colocada será removida, quando o próprio sinal será cancelado.

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

Se sua estratégia de negociação usa o fechamento por níveis StopLoss e TakeProfit, forneça o algoritmo de cálculo. Para puxar/movimento flexível desses níveis, descreva as condições e o algoritmo de arrasto. Os níveis de SL/TP podem ser modificados tanto na abertura de uma nova barra quanto em cada tick. É necessário indicar explicitamente este ponto nos Termos de Referência e entender a diferença entre os modos de testar as estratégias de negociação. Certifique-se de ler o artigo Testando estratégias de negociação em ticks reais .

Onde posso obter os Termos de Referência se você não pode redigi-lo sozinho

Um Termo de Referência mal elaborado ou sua ausência real na maioria das vezes indica que as regras do sistema de negociação não são formuladas, elas simplesmente não existem. O que neste caso o Cliente chama de sistema de negociação é, na verdade, apenas uma ideia. É impossível começar a trabalhar nessas condições, porque muito em breve nuances desconhecidas ou a ausência de um algoritmo para situações imprevistas no mercado aparecerão no processo de escrita do código. Nesse caso, o programador realmente começa a apresentar opções em vez do Cliente.

Como resultado, o Contratado pode, por sua conta e risco, concluir o trabalho e emitir um robô de negociação para o Cliente. Mas isso é acompanhado por uma perda de tempo para discutir cada nova questão, e aumenta a probabilidade de levar o trabalho à Arbitragem. Porque ao aceitar e verificar o trabalho realizado, o Cliente de repente descobre que as transações não estão sendo feitas como ele esperava, ele simplesmente não conseguiu descrevê-lo corretamente. E, claro, o Cliente culpará a Contratada neste caso por violar determinados pontos dos Termos de Referência e programar incorretamente o robô. A arbitragem nesses casos rapidamente entende a diferença de competência de ambas as partes e toma sua decisão com base no Termo de Arbitragem anexado ao despacho. De acordo com as Regras do Freelance , nenhuma correspondência do lado ao considerar situações discutíveis não é levada em consideração:

Ao considerar o objeto da controvérsia na Arbitragem, apenas o Termo de Arbitragem serve de base para a tomada de decisão.

Na vida, essa opção também é possível: você tem regras de negociação rígidas, mas por algum motivo não pode elaborar os Termos de Referência sozinho. Por exemplo, você não tem certeza de como descrever certas coisas corretamente ou precisa da ajuda de um especialista em matemática, redes neurais, aprendizado de máquina, programação e assim por diante. Neste caso, você também pode solicitar a criação de um Termo de Referência, em Freelance existem categorias como "Consultoria de Programação" e "Outros" para isso.

Escolha uma dessas duas categorias, nomeie o trabalho "Criando um TOR para encomendar um robô de negociação" e indique o custo inicial do trabalho, como você imagina. Um desenvolvedor experiente de sistemas de negociação irá ajudá-lo a formular corretamente as Regras de sua estratégia para que sejam compreensíveis para outro programador. Ao mesmo tempo, você deve poder trabalhar com gráficos, indicadores e objetos gráficos para mostrar as configurações de seus sinais de negociação usando capturas de tela.

O programador entenderá seu sistema de negociação e o ajudará a escrever uma descrição do algoritmo de negociação, se possível. Se você não pode formular alguns conceitos por conta própria (por exemplo, "impulso" ou "rebote do nível"), ele pode lhe dar ideias prontas com base em sua experiência. Como regra, qualquer situação de mercado pode ser descrita logicamente (e depois programaticamente) com algum modelo simples com parâmetros de variação. E essa variação pode ser expressa por um determinado parâmetro, que você otimizará em seu Expert Advisor.

Não existem padrões ideais, pois o mercado, por um lado, não se repete e, por outro, situações semelhantes sempre podem ser encontradas na história. O resultado do seu trabalho conjunto deve ser um Termo de Referência pronto para encomendar um robô de negociação de acordo com sua estratégia.

Quais termos usar

Como regra, em um sistema de negociação, existem vários conceitos ou termos básicos importantes que descrevem o estado do mercado ou a natureza do movimento dos preços. Mesmo que pareça que você está usando um conceito geralmente aceito e simples nos Termos de Referência, é melhor descrevê-lo claramente. Para cada termo, faça um parágrafo de descrição.

Por exemplo, de acordo com Bill Williams, uma tendência de alta é quando todas as três linhas do Alligator são organizadas nesta ordem de baixo para cima: Azul, Vermelho, Verde.


Outra definição clássica de tendência de alta - de Larry Williams - quando cada novo pico é maior que o anterior e cada novo fundo não é menor que o anterior.


Na descrição dos termos, você pode usar capturas de tela dos gráficos, elas não interferirão. No próprio Termo de Referência, recomendamos destacar os termos que você inserir em negrito - para que posteriormente o Contratante possa encontrá-lo imediatamente no texto em caso de dúvida.

Ao descrever o termo, a Contratada não pode ser referenciada a outras fontes (sites, livros, fóruns, etc.), justificando que isso já seja bem conhecido. Tudo deve ser descrito aqui e agora, sem muletas na forma de "vou explicar mais tarde no Skype" não são permitidas no TOR. Você não levará mais de meia hora para anotar todos os termos nos Termos de Referência, mas economizará tempo que você gasta corrigindo erros devido a mal-entendidos.

O que escrever em uma descrição de trabalho no Freelance

Ao criar um trabalho, descreva em alguns parágrafos a essência geral de sua ideia comercial para que os potenciais artistas entendam o que você precisa. A descrição do trabalho não precisa divulgar as regras do sistema de negociação ou fornecer detalhes sobre os indicadores utilizados.

A descrição pode ficar assim:

Escreva um Expert Advisor para negociar em reversões de tendência. Os sinais de reversão serão padrões de ação de preço. Para determinar a tendência, serão utilizados os indicadores ADX, Alligator e MACD - a escolha do indicador é definida pelos parâmetros de entrada do consultor.

Ideia geral de uma estratégia de negociação

Aqui você pode especificar em quais instrumentos o robô negociará, se está negociando com a tendência, como é determinado e em qual período de tempo. Se negociarmos com a tendência, de alguma forma a entrada ocorre - em uma reversão, em uma quebra de nível e assim por diante.

Em geral, existem apenas duas estratégias de negociação nos mercados financeiros: continuar em movimento e retornar à média. Sua ideia de negociação deve estar relacionada a uma dessas duas estratégias e deve explicar como as negociações serão abertas - no mercado, após a confirmação de uma quebra/retração, ou a um preço melhor.

Descrição da configuração para aguardar um sinal

Os próprios sinais podem ser simples e podem ser facilmente descritos usando algoritmos. Por exemplo, padrões como "Absorção" e "Barra de pinos" são bem conhecidos e populares. Mas, como regra, é impossível construir uma estratégia lucrativa apenas com números tão bem formalizados; esses padrões são usados para determinar uma reversão de tendência. Isso significa que a configuração para aguardar o padrão "Engolfo de baixa" será a presença de uma tendência de alta.

Portanto, no Termo de Referência é necessário descrever não apenas o Sinal de Negociação em si, mas também formalizar a configuração necessária para o mesmo.

Descrição do sinal

Um sinal para comprar ou vender aparece quando uma determinada condição é atendida. Por exemplo, um sinal de compra clássico é quando o preço cruza a média móvel de baixo. Ao descrever tal sinal, você deve especificar os seguintes parâmetros:

  • tipo de média móvel - SMA, EMA, VIDYA e assim por diante
  • período médio móvel
  • parâmetros adicionais para algumas médias, por exemplo - para AMA .

Além disso, o conceito de "preço ultrapassa a média" também precisa ser esclarecido. O sinal pode aparecer imediatamente no momento de cruzar a média, ou ainda é necessário esperar que a vela não apenas ultrapasse o nível médio, mas também feche acima dele. Não apenas como o código será escrito depende disso, mas também o modo de geração de ticks, que deve ser usado ao testar o Expert Advisor no Strategy Tester.

Portanto, é necessário descrever claramente conceitos como "Trend", "Level", "Breakout", "Kickback" e "Intersection" - seja para trabalhar com ticks, barras e preços de fechamento. Todos esses conceitos devem ter uma descrição formal com parâmetros numéricos, que você otimizará no testador de estratégias. Por exemplo, a força de uma tendência pode ser medida usando o indicador ADX , enquanto o indicador Ichimoku Kinko Hyo não é adequado para isso.

Quanto mais condições e filtros são usados em um sistema de negociação, mais complexo se torna o programa de negociação. Sem mencionar o fato de que tais estratégias têm muitos parâmetros de entrada, que exigem um grande número de passos de otimização. E embora o testador de estratégia no MetaTrader 5 permita acelerar o tempo de otimização dos parâmetros em dezenas e milhares de vezes devido ao algoritmo genético e à rede em nuvem MQL5 , a quantidade de dados recebidos nesse caso cresce como uma avalanche.

Portanto, recomendamos seguir algumas regras ao desenvolver e depurar um robô de negociação:

  • Para depurar e verificar os sinais visualmente, o Expert Advisor deve colocar rótulos/objetos no gráfico no momento da ocorrência do Sinal. Isso permitirá não apenas depurar no histórico , mas também observar visualmente os sinais no gráfico. Muitas vezes, o algoritmo se torna tão complexo que fica difícil entender seu trabalho até mesmo para o trader que formulou as Regras do sistema. E com a exibição visual de Sinais, você pode ver imediatamente os momentos de abertura de negócios no gráfico.
  • É possível que uma solução ainda mais correta seja primeiro criar um indicador que marque os sinais de compra/venda no gráfico usando setas . Isso simplificará a escrita de um Expert Advisor, pois é mais fácil criar e depurar dois programas separadamente do que um complexo. Deixe o robô negociar apenas e o indicador apenas desenhar. Nesse caso, o código do conselheiro será poupado de funcionalidades desnecessárias. Além disso, pode haver muito mais Sinais do que negociações feitas neles. Por exemplo, quando um sinal de compra é recebido, geralmente entra no mercado e, além disso, de acordo com o algoritmo, os sinais de compra não são mais verificados. E se houver um indicador separado, ele mostrará todos os Sinais de Compra, pois tem a lógica de mostrar TODOS os Sinais, independente da presença de uma posição aberta.
  • Os sinais de compra e venda não devem apenas ser descritos separadamente nos Termos de Referência, mas também é desejável depurá-los separadamente no testador de estratégia. Muitas vezes, a compra e a venda estão interligadas - isto é, enquanto houver uma posição de compra aberta, todos os sinais de venda são ignorados (claro, se a posição longa não for fechada por um sinal de venda). Se você testar primeiro os sinais de compra separadamente e depois os sinais de venda, poderá verificar a exatidão da lógica subjacente em sua forma mais pura.

Você pode até otimizar os parâmetros da estratégia separadamente para compra e separadamente para venda, para que mais tarde você possa combinar os algoritmos em um único robô de negociação. Assim, você gasta menos tempo procurando os parâmetros ideais e comete menos erros. Embora neste caso você tenha que pagar mais pela criação do indicador/indicadores e Expert Advisors intermediários. Mas uma boa ideia de negociação vale a pena. Não é?

Vida útil do sinal

Em alguns sistemas de negociação, o aparecimento de um sinal não significa a abertura imediata de uma posição. Como regra, em tais estratégias é necessária a confirmação/permissão de um sinal adicional. Por exemplo, após a quebra de um nível de resistência, é necessário esperar que o preço volte ao nível quebrado para entrar nas melhores condições. Nesse caso, surge o fator tempo - por quanto tempo ou por quantas barras o sinal "Nível está quebrado e aguardando uma reversão" é válido. Talvez faça sentido esperar um recuo dentro de 5 barras ou até o final do pregão e, em seguida, o sinal é cancelado.

Adicionar o parâmetro "Time to Live" permite introduzir filtros adicionais que podem melhorar a qualidade dos sinais de negociação.

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

Ao escrever funções responsáveis pelo envio de ordens de negociação, faz sentido pensar em funcionalidades adicionais com antecedência. Por exemplo, você pode especificar diferentes MagicNumbers e comentários em seu robô de negociação para uma análise mais aprofundada dos resultados de negociação e resultados de otimização. No MagicNumber, você pode inserir a hora e o dia de entrada, o número do padrão de negociação e outras informações importantes que permitirão realizar análises adicionais no contexto dos dados incluídos no MagicNumber. Assim, você pode implementar várias estratégias de negociação no Expert Advisor e realizar uma otimização para todos de uma vez. Para então eliminar um tempo de entrada malsucedido ou um padrão/sinal perdedor. Se você deseja obter essa funcionalidade em um Expert Advisor, deve definir claramente o algoritmo de cálculo MagicNumber para cada padrão/configuração/Sinal.

Além disso, uma ordem de negociação nem sempre é executada com sucesso na primeira vez. É necessário prever situações em que não foi possível abrir/fechar uma posição na primeira vez. O que o consultor deve fazer neste caso - pausar ou aguardar a chegada de um novo tick? Quantas tentativas são permitidas para completar uma operação de negociação? Quais informações o EA deve registrar nesses casos? Em que formato deve ser a entrada? É necessário enviar uma mensagem sobre problemas para um trader e como fazê-lo para não criar um ataque DDoS?

Para analisar rapidamente o histórico de negociação no terminal, use comentários que podem ser escritos em solicitações de negociação. Mas não esqueça que em alguns casos o servidor de negociação escreve suas próprias informações neste campo. Portanto, não será supérfluo se o seu robô escrever seu próprio registro diário de negociação, o que o ajudará a resolver situações incompreensíveis.

Se sua estratégia de negociação usa níveis de proteção StopLoss e TakeProfit, forneça o algoritmo para o cálculo e o procedimento para defini-los. Por exemplo, pode acontecer que o StopLoss precise ser definido apenas quando o preço se mover em uma direção favorável por um determinado número de pontos. Se os níveis de SL e TP forem definidos somente após uma abertura bem-sucedida de uma posição, especifique como a abertura de uma posição será verificada - imediatamente após o envio de uma solicitação de negociação ou no próximo tick.

Manutenção de uma posição/ordem de negociação

A regra clássica é "Deixe os lucros fluírem e corte as perdas". Traduzido em negociação algorítmica, isso significa "Defina um StopLoss protetor para cada posição aberta e limite o lucro potencial usando ordens TakeProfit".

O tamanho do stop pode afetar significativamente os resultados da negociação, e os traders tentam encontrar essas distâncias ideais para colocar ordens SL / TP para maximizar os lucros. Mas uma enumeração aproximada de todos os tamanhos possíveis de SL / TP será o mesmo ajuste no histórico. Tente usar algoritmos de cálculo de distância que levem em consideração a volatilidade do mercado, a direção da tendência e a proximidade dos níveis de suporte/resistência.

Se você não tem ideia de qual deve ser o dimensionamento do SL/TP, pode pesquisar os sistemas de negociação existentes. Muitos traders algorítmicos têm suas próprias bibliotecas prontas que podem ser usadas para criar um robô de negociação de acordo com sua ideia.

Pense e descreva os seguintes pontos nos Termos de Referência:

  • usando os níveis StopLoss e TakeProfit, o algoritmo para calcular a distância para eles:
  • se é necessário usar o Trailing Stop, quando está ligado, com que passo é puxado para cima, algoritmo de cálculo do passo;
  • se ordens pendentes são usadas para entrar em uma posição, elas precisam ser reorganizadas e por qual algoritmo;
  • se é necessário rastrear o lucro/perda flutuante em uma posição aberta, se é necessário fechar a posição quando o nível de lucro/perda especificado for atingido;
  • algo mais.

Cancelamento de uma ordem e fechamento de uma posição

Outra maneira de gerenciar posições e ordens também é possível - pelo tempo e pelo aparecimento de um Sinal oposto. Você pode adicionar opções adicionais de exclusão e fechamento aos Termos de Referência:

  • por um determinado valor de lucro ou prejuízo flutuante em uma posição aberta;
  • quando o preço se move uma distância especificada do nível atual de abertura de uma ordem pendente (na verdade, isso significa que o momento já foi perdido);
  • no momento especificado;
  • através de um determinado número de barras;
  • no final do intervalo de tempo especificado;
  • quando aparece um Sinal de direção oposta;
  • quando uma configuração/padrão favorável desaparece.

Cálculo de lote para fazer um pedido

Alguns traders, ao criar um robô de negociação, adicionam imediatamente funções de controle de tamanho de posição. Ainda não é recomendado incluir algoritmos de gerenciamento de dinheiro no EA para calcular o lote no estágio inicial, pois parâmetros de entrada adicionais ao otimizar o EA podem levar ao ajuste de uma seção específica do histórico.

Se você estiver criando a primeira versão do robô de acordo com seu sistema de negociação, é melhor testá-lo e otimizá-lo com um lote constante. Somente após testes futuros no histórico e em negociações reais por vários meses, quando você vê os pontos fortes e fracos do seu algoritmo, podemos pensar em gerenciamento de dinheiro.

Aqui estão algumas abordagens para calcular o tamanho do lote ao abrir uma posição:

  • volume fixo, independentemente de lucro ou prejuízo;
  • o volume depende do tamanho do saldo ou patrimônio;
  • de acordo com os resultados dos lucros/prejuízos recebidos;
  • com base nos resultados das últimas N negociações (diferentes variantes de martingale e anti-martingale);
  • dependendo do % de risco quando uma ordem StopLoss protetora é acionada;
  • outras opções para cálculo baseado em risco, por exemplo, de acordo com o método Vince .

Em qualquer caso, antes de adicionar um cálculo de tamanho de lote a um EA, você deve ter certeza de que seu sistema de negociação tem uma vantagem sobre a negociação aleatória. Caso contrário, você só vai se enganar por um tempo. Um sistema perdedor não pode ser transformado em lucrativo apenas através da gestão do dinheiro.

Lidando com erros de negociação e estado do ambiente

Como o robô de negociação é um programa autônomo que funciona 24 horas por dia, é necessário fornecer meios de monitoramento e verificação de seu funcionamento. A "Caixa Preta" do seu Expert Advisor será o log "Experts", onde todas as mensagens são exibidas usando a função Print() . Em geral, é recomendável registrar a aparência dos Sinais, padrões e configurações, o preço de mercado atual e os parâmetros de solicitação de negociação antes de enviar uma ordem para execução.

Em caso de execução malsucedida de uma solicitação de negociação, seus resultados devem ser registrados. A análise dos códigos de resposta do servidor de negociação permitirá que você entenda a causa de um erro de negociação e corrija-o. Descreva nos Termos de Referência:

  • todas as situações em que são feitas entradas de log;
  • parâmetros a serem refletidos em cada caso;
  • formato de gravação desejado, por ex. para indicar hora, dados numéricos, separadores e assim por diante.

Logs detalhados ao enviar ordens de negociação e processar os resultados de sua execução economizarão tempo e dinheiro.

Um ponto importante que os traders algorítmicos iniciantes geralmente esquecem é a situação de reiniciar o terminal, perder a Internet ou conectar-se ao servidor de negociação. Nesses casos, não custa pensar no feedback com o robô por meio de mensagens instantâneas ou e-mail.

A diferença entre negociar na abertura da barra e dentro da barra

... os sinais podem desaparecer e aparecer durante a vida útil da barra

Estratégias de carrapato/escalpelamento

... você precisa ter uma boa ideia do que é, quanto menos TakeProfit/StopLoss em pontos, mais crítica é a estratégia para spreads/comissões/atrasos de rede/qualidade do histórico disponível/velocidade do próprio robô.

Qualquer deterioração nas condições pode matar a estratégia

Grids, martingales, média e a desvantagem dessas melhorias

... O que são, por que são populares e até que ponto podem ajudar a alongar temporariamente a estratégia. O risco aumenta, embora possa prolongar a vida de uma estratégia ruim

O que observar ao escolher um empreiteiro

... perguntas substantivas

Não finge impressionar

Dá prazos claros

Indica locais pouco claros no TOR imediatamente, e não após 2 meses de discussão

Um bom programador valoriza o tempo dele e o seu - é por isso que ele adora um TOR consistente e bem desenvolvido

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

Transforme uma estratégia perdedora em um robô lucrativo

Otimize e identifique quaisquer deficiências

Escreva um programa sem erros - eles ainda serão. Encontrá-los e descrevê-los de forma compreensível é sua tarefa.