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

 
Aleksey Vyazmikin:

É aqui que saem muitos detalhes e são cometidos erros. É por isso que é imperativo que a EA seja testada com base em citações reais.

Basta levar isso em conta e concordar com um prazo razoável.


A tarefa técnica é uma coisa, cuja execução pode ser verificada objetivamente por um terceiro. Caso contrário, é uma tarefa para um ensaio escolar "sobre o verão".


Sobre a bondade

 
Maxim Kuznetsov:


Uma tarefa técnica é algo que pode ser verificada objetivamente por um terceiro. Caso contrário, é um trabalho de redação escolar "sobre o verão".

Um A para o ensaio. Grande imaginação.

Mas, algo que você pulou o tópico - estou dizendo que o teste deve ser baseado em dados reais e o cliente deve estar ciente disso, e o contratante deve levá-lo em conta nos prazos declarados.

 
Aleksey Vyazmikin:

5 para o ensaio - grande imaginação!

Mas, você saltou o assunto - estou dizendo que o teste é obrigatório sobre dados reais e o cliente deve estar ciente disso, e o contratante deve levá-lo em conta nos prazos estabelecidos.

Suponha que você tenha escrito um EA (código e, na maioria das vezes, até mesmo depurado). O próximo objetivo - para verificar a coruja na conta real do cliente, você precisa de algum tempo e da mesma conta real.

De quem é a festa da vida às custas de quem ? e como vocês, todos juntos, se certificam de que a tarefa seja feita ?

 
Maxim Kuznetsov:

Suponha que você tenha escrito um EA (código e, na maioria das vezes, até o depurou). Depois segue uma coisa objetiva - para verificar a coruja em uma conta real o cliente, você, o árbitro precisa de algum tempo e a mesma conta real.

Como todos vocês irão verificar se a tarefa foi cumprida?

Se você não estiver certo da exatidão do concurso, você pode usar os registros de serviço do terminal e verificar o desempenho do pedido e a lógica da EA.

Qual é o problema? Sim, na verdade eu encontrei um EA funcional no testador que não estava funcionando corretamente em uma conta real, sim o EA alegou que deveria estar, o árbitro permaneceu em silêncio até que eu puxei um pedaço de código e meti o nariz do EA nele. Perdi muito do meu tempo e nervosismo com a incompetência do Contratante, por isso não vejo problema se o Contratante esperar por sua recompensa.

Ou talvez eu não entenda alguma coisa, por favor, desenvolva seus argumentos para uma discussão substantiva.

 
Maxim Kuznetsov:

Para que serve tudo isso?

A especificação dos requisitos é escrita pelo contratante (ou por um consultor terceirizado especialmente treinado). E inclui a metodologia de verificação.
Quaisquer requisitos desnecessários para o cliente, ele não é obrigado a estar ciente de toda a programação.

O cliente deve dizer (por escrito, não em vídeo ou Skype):

- Utilizo estes indicadores e scripts

- Eu me ater às seguintes regras

- Ter negociado em demonstração mais ou menos oficial por uma semana, mês ou ano, isto é o quanto. E em outro período como este. Tudo opcionalmente apoiado por uma cópia para uma conta em centavos.

- você precisa automatizar

O Desenvolvedor prepara e concorda com a TT (de forma compreensível para ambas as partes), escreve uma coruja, e se tudo no testador converge mais ou menos com o período mencionado, então o Expert Advisor é feito.

Variantes - devemos verificar no demo/center-real/etc., já está além dos limites do freelancing

Não estou envolvido com freelancer por muitas razões, mas escrever os Termos de Referência custa dinheiro e muitas vezes muito. E, a meu ver, o cheque médio em freelancer é de US$ 50. B o quê, a partir desta já miserável soma ainda a arranhar para pagar ao Contratante por escrever os Termos de Referência? Ou ele vai escrever de graça?

 

Adicionei um pouco mais ao artigo - adicionei a seção O que deve estar nos Termos de Referência e escrevi Onde obter os Termos de Referência se você não puder redigi-lo

Что нужно для заказа торгового робота

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 do 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 da venda, mesmo que sejam simplesmente opostas às condições da 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, quanto aos sinais de negociação, em que condições a compra/venda será fechada, a ordem colocada será cancelada, quando o próprio sinal será cancelado.

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

... é melhor descrever termos que não temos certeza para entender um ao outro

No próprio TK, destaque os termos em negrito - deixe o performer prestar atenção neles e faça uma pergunta se algo não estiver claro

Você não pode enviar para outras fontes (sites/livros, etc.) Tudo deve ser descrito aqui e agora, sem "vou explicar depois no Skype"

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

... apenas uma formulação geral é necessária - tendência, contra-comércio. para romper os níveis (como os níveis são definidos em resumo), existem indicadores/ação de preço/uso de ticks

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

... negociamos de acordo com a tendência, definimos a tendência dessa maneira, entramos em um rollback, definimos um rollback de tal e tal maneira, não negociamos à noite e pela manhã

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 seu e o seu tempo - é 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.


 
Rashid Umarov:

...

Capturas de tela e fluxogramas

Há muitos programas gratuitos e úteis na internet para criar screenshots e fluxogramas. ...

Os fluxogramas são a parte mais inútil, 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.

 
Andrey F. Zelinsky:

O fluxograma é a parte mais inútil 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) legibilidade.

Aqui não estamos falando de um fluxograma de algoritmo de cálculo, mas de um fluxograma da seqüência de ações e relações entre os diferentes blocos do programa - tomada de decisão, gerenciamento de posição, filtros, etc.

 
Aleksey Vyazmikin:

Este não é um diagrama de blocos de um algoritmo de cálculo, mas sim um fluxograma da seqüência de ações e relações entre diferentes blocos de programas - tomada de decisão, gerenciamento de posição, filtros, etc.

Você pode imaginar o nível de um cliente que, pelo menos perfeitamente compreendendo os eventos do terminal do cliente, será capaz de descrever habilmente "seqüências de ações e inter-relações de diferentes blocos de programas - tomada de decisão, gerenciamento de posição, filtros, e assim por diante"?

E então verifique tudo do ponto de vista da implementação do programa - caso contrário, por que fazer um fluxograma?

Tal cliente não poderá ver o nome do desenvolvedor não só antes do acordo, mas também depois que ele for feito (se isso acontecer com tal cliente de nível básico) -- "quem multiplica o conhecimento multiplica o sofrimento" (Eclesiastes 1:17-18)


p.s. Novamente. Verificar minha tese sobre a inutilidade prática de fazer um fluxograma (qualquer) é muito simples.

Basta definir uma tarefa para os desenvolvedores de serviços Freelance - escrever um diagrama de fluxo para o indicador MA.

Tese № 2 - não mais do que 5-10% fará o trabalho.


p.s.2 Pergunta 1 - na aula de informática (na escola ou na universidade) quem (que porcentagem) pensou que fazer um fluxograma era útil?

Pergunta 2 -- quem (que porcentagem) tornou um fluxograma mais complicado do que, por exemplo, "procurar o elemento máximo em uma matriz N-dimensional" durante seu trabalho prático.

 
Andrey F. Zelinsky:

Você pode imaginar o nível do cliente que, no mínimo, compreende perfeitamente os eventos do terminal do cliente, será capaz de descrever "seqüências de ações e inter-relações de diferentes blocos de programas - tomada de decisão, gerenciamento de posição, filtros, etc." de forma qualificada?

E então verifique tudo do ponto de vista da implementação do programa - caso contrário, por que fazer um fluxograma?

Tal cliente não pode ser mostrado o nome do desenvolvedor não apenas antes do acordo, mas também após sua implementação (se alguma vez ocorrer com este nível de cliente) -- "quem multiplica o conhecimento multiplica a dor" (Eclesiastes 1:17-18).

Um diagrama de blocos é útil, pelo menos para testar sua lógica. Sim, eu faço fluxogramas como um conceito ou quando estou desenvolvendo um algoritmo complicado, na maioria das vezes no papel.

Um EA não é um produto acabado, estará sempre sujeito a revisão, desde que o cliente esteja interessado em sua idéia, de modo que este cliente tenha melhor cuidado com possíveis revisões, e para este código deve ter uma certa estrutura. Uma vez entendi isso depois que provavelmente 5 EAs freelance foram encomendados. O alto nível de idiotice é quando a lógica da tomada de decisões comerciais é embalada em funções comerciais - não é de admirar que tal EA não esteja sujeita a revisão, mas a retrabalho, especialmente se a Desenvolvedora for outra pessoa.