Algumas dicas para clientes iniciantes

10 março 2014, 16:02
Dmitriy Skub
0
3 955

Introdução

Um provérbio que é geralmente atribuído a diversas pessoas famosas diz: "Aquele que não comete erros nunca faz nada." A menos que você considere a própria inatividade um erro, é difícil argumentar contra esta afirmação. Mas você sempre pode analisar os erros anteriores (os seus e os dos outros) para minimizar o número dos seus erros futuros. Tentaremos analisar possíveis situações que surgem ao executar empregos no serviço de mesmo nome.

A nossa meta é fazer isso da forma mais objetiva possível. Qualquer que seja o caso, ele representará o ponto de vista da parte executora - um desenvolvedor. Antes de passarmos às situações reais, preciso destacar o seguinte:

Quaisquer semelhanças com nomes reais, nomes de usuário, imagens e outros materiais visuais são mera coincidência. Todas as asserções e cálculos estatísticos abaixo representam a opinião pessoal do autor deste artigo e não afirmam ser a verdade absoluta.


1. Serviço Empregos - porquê precisamos dele?

Utilizar ou não o serviço Empregos é uma decisão que cada um toma por si. A minha opinião é definitivamente sim, utilizar. Segue abaixo algumas considerações sobre isso. Considerando-se os principais problemas que podem surgir na interação entre o cliente e a parte executora, podemos destacar o seguinte:

  • Especificação de requerimentos (RS) confusa ou ambígua, após a qual a parte executora entrega algo totalmente diferente do que o cliente espera;
  • Receio do cliente em ser enganado pela parte executora, que pode obter o pagamento antecipado sem realizar o trabalho ou realizar apenas uma parte dele;
  • Receito da parte executora em ser enganado pelo cliente, que pode obter o trabalho finalizado sem pagar a parte restante da quantia acordada;
  • O surgimento de situações de disputa (em geral, sem saída), em que ambos estão 100% certos de que estão com a razão e de forma alguma estão dispostos a fazer um acordo.

As últimas três das situações acima podem ser resolvidas totalmente; o problema da especificação de requerimentos confusa também pode ser solucionado. Há basicamente apenas um ponto fraco - a necessidade do cliente/parte executora fazer alguns movimentos extra - fazer um pedido, transferir o pagamento, passar pelas etapas de progresso intermediárias, etc. Entretanto, acredito que este é um pequeno preço a pagar para obter tranquilidade e certeza de que o dinheiro não será desperdiçado e que o trabalho será feito.

Então, você finalmente decidiu utilizar o serviço Empregos e fazer um pedido para o desenvolvimento ou modificação de um indicador, EA ou script. Espera-se que você inicie se familiarizando com as: Regras de uso do serviço Empregos. Se você ainda não fez isso, agora é a hora de preencher esta pequena lacuna de conhecimento.

Além disso, recomenda-se a leitura cuidadosa dos artigos "Como fazer um pedido de Expert Advisor e obter o resultado desejado" e "Como fazer um pedido de robô de negociação em MQL5 e MQL4" - todos esses ajudarão você a entrar no clima de realizar negócios sérios e eficientes, afinal de contas você é uma pessoa séria, um futuro ou bem consolidado negociador. Porque esta profissão requer uma abordagem atenciosa e meticulosa.


2. Tipos comuns de pedidos

Vamos tentar classificar os tipos mais comuns de pedidos que estão muito frequentemente associados a situações problemáticas. Sem afirmar ser exaustiva, a lista compreende o tipos de ordem a seguir.


2,1. Forex é muito fácil

Um cliente que não sabe realmente o que deseja e que tem pouca compreensão sobre como tudo deveria funcionar. Como regra, esta seria uma pessoa nova no Forex que obteve uma pequena quantidade de informações e pensou que o Forex fosse muito simples. Encontrando uma seção favorável no gráfico com duas Médias móveis em cruzamento e adicionando MACD para finalizar (sem mesmo perceber que na realidade elas eram as mesmas duas Мédias móveis), ele acredita que encontrou um bom sistema de negociação que apenas precisa ser codificado na forma de um Expert Advisor para começar a ganhar muito dinheiro.

Os pedidos feitos por esses clientes parecem ser aproximadamente os seguintes: "Expert Advisor simples", "indicador simples" e outras variações incluindo as palavras "simples" e "não complicado". Consequentemente, o pagamento oferecido é 10-20 créditos. O serviço Empregos simplesmente não permite oferecer menos.

Ao conversar com este cliente, ele dificilmente admite que é iniciante e que o seu pedido pode muito bem não fazer sentido e que sequer está com o preço adequado. Por algumas razões, os que falam inglês tendem a admitir imediatamente e até mesmo pedir conselhos sobre a operação do sistema deles.

O único conselho que pode ser dado aqui é testar manualmente o seu sistema em um intervalo maior (pelo menos um período de tempo de 1 ano) antes de começar a usar o serviço Empregos. De forma alternativa, ele pode ser testado no modo visual do provador utilizando Expert Advisors existentes para abrir/fechar negociações, por exemplo Simulador de negociação 2 ou em programas especiais para testes.


2,2. Na selva de indicadores

Outro extremo muito característico de iniciantes é o uso de uma grande quantidade de diversos indicadores que às vezes produzem sinais mutuamente exclusivos. Também é comum utilizar uma combinação de uma quantidade de indicadores em diferentes dimensões (às vezes com diferença de vários pedidos) na janela de um indicador e observar os sinais que indicam cruzamentos entre eles. E os iniciantes em Forex não são os únicos que têm esse costume.

Todas as tentativas de explicar que isso não é praticável são derrotadas por uma falta persistente de compreensão e referências abstratas a um programador que fez isso tão fácil como um ABC, etc. Dito isso, quanto menor o tempo de uso do terminal, mais persistente é a falta de compreensão - parece haver uma proporcionalidade inversa.

Vamos dar um exemplo de uma dessas combinações de indicadores. Utilize RSI com um intervalo normalizado de 0 a 100 e ATR com intervalo não normalizado (de 0 a um valor desconhecido consideravelmente menor que um). Entraremos na compra quando o ATR cruzar o RSI de baixo para cima na próxima barra. O retângulo cinza na imagem abaixo (Figura 1) representa um sinal de compra emergente.

Marcaremos ele com uma linha pontilhada vertical e veremos o que acontece em seguida.

Figura 1. Surgimento do sinal de compra

Figura 1. Surgimento do sinal de compra

A próxima imagem (Figura 2) sugere que o sinal de compra ainda está ali e que ficou ainda mais forte, mas, por alguma razão, foi deslocado para a esquerda (a posição da linha pontilhada vertical no eixo de hora permanece inalterada). Parece que deveríamos ter entrado mais cedo. Há algo errado aqui.

Figura 2. O sinal de compra ainda está aqui

Figura 2. O sinal de compra ainda está aqui

A terceira imagem (Figura 3) é totalmente confusa - o sinal desapareceu, ele sumiu como se nunca tivesse existido. Esses são os resultados do redimensionamento (quando diversos indicadores com diferentes limites de valores precisam ser exibidos no mesmo gráfico para que todos fiquem visíveis ao mesmo tempo).

Figura 3 O sinal desapareceu

Figura 3. O sinal desapareceu


Outra situação comum é ficar preso na ilusão ao observar os resultados do desempenho de um indicador no histórico. Não há uma compreensão clara do fato de que as leituras de um grande número de indicadores mudam de acordo com a mudança de preço e que seus valores finais são formados após a finalização de algumas barras no gráfico quando poderá ser, na realidade, muito tarde para abrir uma posição. Isso é o que significa "redesenhar". O Zig Zag é provavelmente o exemplo mais explícito de um indicador desse tipo.

Discutir com um cliente desse tipo é uma tentativa de encontrar um gato preto em uma sala escura - poderá levar muito tempo, durando tanto quanto a paciência das duas partes permite e pode se tornar um verdadeiro teste psicológico.

Há uma dica muito simples - monitore os indicadores na dinâmica. Verifique se os sinais desaparecem ao alterar a dimensão do gráfico ao longo do eixo de hora e/ou de preço. A curva ou o histograma de um indicador está diferente nas barras anteriores quando o preço muda? Você pode verificar isso facilmente no modo visual do provador ao soltar o seu conjunto de indicadores no gráfico. Qualquer Expert Advisor, por exemplo, fornecido no terminal, pode ser usado aqui.


2,3. Automação de sistema manual

Esse é um dos tipos mais complexos. Até mesmo um negociador consolidado e de sucesso pode ficar intrigado ao tentar colocar o seu sistema na forma de um algoritmo ou acaba descrevendo cada barra do gráfico com a especificação de preço e valores de indicador. Isso acontece porque ele negocia com base na intuição, ou seja, o processamento das informações de negociação está escondido no subconsciente e apenas o resultado final é gerado como saída. Um negociador como esse na realidade não sabe como o resultado foi obtido.

Se a formalização do sistema falhou, a melhor opção seria automatizar gradativamente o processo de negociação. Qualquer sistema é composto por elementos padrão (abertura/fechamento de posições/ordens, controle de risco, gerenciamento de posição, etc.). Divida o seu trabalho em etapas e lide com cada etapa separadamente. Gradativamente, passo a passo, o processo de negociação poderá ser quase totalmente automatizado.

A segunda opção é descartar imediatamente a ideia de um sistema de negociação totalmente automatizado e focar no desenvolvimento de um sistema semiautomático. De forma aproximada, isso pode ser generalizado da seguinte forma: o negociador decide onde e quando as posições devem ser abertas enquanto que o resto do trabalho é feito pelo Expert Advisor. Alternativamente, você pode definir o intervalo de hora e/ou preço em que a entrada é permitida, sujeita a determinadas condições e então o Expert Advisor monitorará essas condições para abrir posições dentro dos intervalos especificados.

Assim, o melhor seria aplicar duas abordagens. A primeira é iniciar com o desenvolvimento de um sistema semiautomático que gerenciaria a maioria das operações de negociação de rotineiras. E a segunda abordagem consiste em dividir o seu trabalho em diversas etapas. Cada uma delas deve representar uma atividade separada que resulte na versão final do Expert Advisor. Uma combinação das duas abordagens acima também é possível.


2,4. Fazer com que o Expert Advisor faça chá

De vez em quando, aparecem ordens em que a lista de funções diretamente relacionadas à negociação forma apenas uma pequena parte da especificação de requerimentos. Enquanto que a principal parte inclui o monitoramento da condição do computador e rede, o envio de SMS e e-mails, o rastreamento de falhas, incluindo as menores delas, e as mudanças no ambiente ao redor do Expert Advisor. Complete isso com a notificação de som (ou voz) de todos os itens anteriores disponível para o proprietário.

Tudo isso, evidentemente, é possível, desde que tanto o cliente como a parte executora estejam dispostos. Entretanto, em regra, os clientes são relutantes quando se trata de gastar dinheiro para a implementação dessas funções. E o Expert Advisor precisa realmente cobrir tudo isso? Eu acredito que não. De qualquer forma, esse Expert Advisor não será capaz de operar de forma absolutamente independente - há algo chamado de erro fatal (por exemplo, falha de energia prolongada).

Dessa forma, as funções atribuídas ao Expert Advisor devem ser razoavelmente limitadas. Isso não requererá apenas menos dinheiro para ser desenvolvido, mas também garantirá uma operação mais confiável do próprio Expert Advisor, visto que menos funções resultará em menos erros.


2,5. Faça aquilo, não sei o quê

A primeira parte dessa frase bem conhecida, "vá até lá, não sei aonde", é geralmente utilizada pelo cliente e pela parte executora em relação um a outro ao fim do trabalho. Devido ao fato de que um sistema de negociação desse tipo não foi suficientemente bem planejado, o cliente começa a surgir com mudanças, adições e remoções na especificação de requerimentos durante o desenvolvimento de um Expert Advisor (ou de um indicador).

Na minha opinião, isso é aceitável caso esta mudança não requeira muito esforço do ponto de vista da programação. Um detalhe muito pequeno pode ser ignorado ou simplesmente esquecido. Entretanto, isso frequentemente envolve mudanças que não parecem muito consideráveis para o cliente, mas que na realidade requerem a mudança de uma grande parte do Expert Advisor. O mais importante é que essas mudanças requerem alterações na lógica do programa. Um dos exemplos comuns é uma substituição por meio da qual em vez de abrir ordens de mercado, o Expert Advisor deve abrir ordens pendentes ou vice-versa.

O único conselho que pode ser dado aqui é buscar clareza total em relação à especificação de requerimentos para a parte executora, bem como para o cliente (por mais estranho que pareça). às vezes, a modificação da especificação de requerimentos pode demorar mais que o próprio trabalho. E acredito que isso seja normal, porque a identificação dos objetivos também é uma parte do trabalho.


3. Como é a especificação de requerimentos ideal?

Falando sobre a estrutura da especificação de requerimentos para algum desenvolvimento abstrato, a especificação ideal pode ser parecida com a apresentada abaixo:

3,1. Ambiente de operação

O terminal (MetaTrader 4/MetaTrader 5) para um desenvolvimento requerido. Este aspecto muito importante geralmente é negligenciado na especificação de requerimentos e mesmo no assunto de um pedido. Isso deve ser especificado no assunto do pedido devido ao fato de que nem todo desenvolvedor tem um bom conhecimento da linguagem MQL5 ou, do contrário, pode ter passado direto à MQL5 sem ter aprendido MQL4 primeiro.

3,2. Centro de negociação/corretor em que o desenvolvimento será aplicado

Essa informação é principalmente necessária para o desenvolvimento de EAs (ou de scripts de negociação). Poderá haver diversas peculiaridades: diferenças na execução de ordens, tamanho mínimo/máximo de lote, posições para a noite, número de dígitos nas cotações, moeda da conta, cotações do final de semana e se elas precisam de processamento, spread fixo ou flutuante, trabalho baseado na abertura de novas barras ou em ticks, etc.

Seria melhor se uma conta de demonstração tivesse sido aberta pelo cliente com o seu centro de negociação/corretor na moeda da conta esperada que em seguida será fornecida ao desenvolvedor. Isso é necessário porque mesmo para abrir uma conta de demonstração, alguns centros de negociação (Oanda, por exemplo) requerem registro em seus websites, com o preenchimento de alguns formulários, etc. Isso faz com que o desenvolvedor não perca tempo. Isso pode ser necessário para depurar e testar o trabalho.

3,3. Se o desenvolvimento é projetado para um conta real ou apenas para uma conta de teste/demonstração

A diferença é crucial. Enquanto que a velocidade da operação é de extrema importância para o teste (ela afeta o tempo de otimização), o gerenciamento de erros e o mecanismo de recuperação que constrói novamente o estado correto do Expert Advisor em diferentes falhas de conexão, reinicializações do terminal, etc., são uma prioridade ao lidar com uma conta real. Dito isso, a velocidade de teste do Expert Advisor para um conta real poderá ficar mais, se não muito mais, lenta. Novamente, isso afetaria enormemente o custo do desenvolvimento, tanto para mais como para menos.

é aqui que você deve se perguntar - eu realmente preciso de um Expert Advisor para uma conta real? Se o desenvolvimento é experimental e o algoritmo ainda não foi configurado de forma conclusiva e provavelmente será modificado e revisado, não há sentido em fazer um pedido com uma conta real em mente. Ademais, fazer com que a otimização seja executada com velocidade consideravelmente menor também é adverso. Um desenvolvimento subsequente para uma conta real pode ser pedido adicionalmente após o algoritmo ter sido solucionado. Ele não será caro.

3,4. Descrição do algoritmo de operação

Também é recomendável fornecer uma lista provisória de parâmetros externos (caso o uso de algum seja esperado) especificando os nomes e os valores padrão preferidos. Tudo isso acelera significativamente as etapas de trabalho de rotina para um desenvolvedor e evita a realização de perguntas desnecessárias e a busca de esclarecimentos junto ao cliente.

3,5. Tipo de informações exibidas

Isso deve ser especificado, visto que nem tudo que o cliente deseja pode ser exibido. E é melhor resolver isso ao finalizar a especificação de requerimentos do que mais tarde. Caso se espere que algo seja exibido durante a operação de um Expert Advisor ou de um indicador, é recomendável fornecer um formato aproximado e especificar a cor de fundo do gráfico esperada para tal operação (preto, claro, branco ou qualquer outra).

Caso sejam necessárias ilustrações para explicar melhor o algoritmo de operação, elas deverão ser fornecidas. Uma ilustração acompanhada de comentários relevantes pode fornecer uma ideia mais simples e mais clara sobre um algoritmo do que algumas páginas de texto puro.

Uma especificação de requerimentos preparada adequadamente é sem dúvidas crucial para a finalização exitosa do desenvolvimento e para a obtenção do resultado esperado. Assim, não tente economizar tempo ao detalhar os pontos na sua especificação de requerimentos. E os seus esforços serão recompensados em desenvolvimento.

3,6. Diversos

Aqui você geralmente pode encontrar termos e requerimentos gerais. Poderá ser um requerimento para o fornecimento de um texto (código) fonte após a finalização da última etapa de trabalho, comentários abrangentes no texto fonte, período de garantia para correção de erros e outros requerimentos.


4. Algumas palavras sobre depuração e teste

Esta é a etapa em que as funções realmente desempenhadas por um indicador ou Expert Advisor são verificadas em relação às funções listadas na especificação de requerimentos. Como você sabe, uma das leis de Murphy da programação de computadores diz: cada programa tem pelo menos um erro. Também há uma inferência e esse ponto que diz: cada erro detectado e corrigido é o último com a exceção de um. é claro que isso é uma brincadeira, mas a "lei" acima não está longe da verdade quando se trata de programas complexos (tanto Expert Advisors como indicadores).

Assim, pode-se chegar a outra conclusão: você não deve suspeitar que um desenvolvedor tenha más intenções e seja incompetente logo que um ou mais erros sejam detectados após a entrega e a aprovação do trabalho. Eu acredito que a qualidade do serviço realizado pela parte executora é primariamente determinado pela correção rápida e eficiente dos erros detectados durante o curso do trabalho.

Na minha opinião, o desenvolvimento/teste incremental é melhor durante o teste de soluções complexas que implementam algoritmos com múltiplas condições lógicas e ramificações. O problema deve ser dividido em diversas partes logicamente independentes para ser gradativamente solucionado/testado em conjunto pelo cliente e pela parte executora. Na etapa final, o teste afeta a interação entre as partes testadas antes e o trabalho como um todo.

A noção de complexidade/simplicidade é certamente subjetiva e depende amplamente da experiência da parte executora e da compreensão de todas as nuances do trabalho pelo cliente. Os métodos de teste e as técnicas fornecidos pelo MetaTrader 4 e MetaTrader 5 são muito diversos, tanto que alguns clientes não têm ideia (ou esquecem - na realidade, eu já vi isso no passado) da possibilidade de executar um Expert Advisor nos dados históricos no provador. Mas o que é mais importante é que o provador está disponível em modo de teste visual.

Este é um dos métodos de teste mais poderosos e convenientes por meio do qual um indicador ou um Expert Advisor pode ser testado em cotações históricas recebidas no modo rápido em apenas alguns minutos ao monitorar visualmente os resultados de desempenho representados pelas negociações realizadas e pelas informações exibidas. O surgimento das cotações pode ser desacelerado ou mesmo suspenso temporariamente para que você tenha tempo de analisar os detalhes de uma determinada negociação.

Após o teste no provador, você pode verificar a eficiência de trabalho do Expert Advisor ao executá-lo em uma conta de demonstração. Um dia e meio de trabalho em tempo real em uma conta de demonstração é geralmente o suficiente para ter completa certeza disso. Desde que, sempre, períodos de tempo muito longos (uma semana ou mais) não sejam usados.


5. Descrição de erros detectados

Eu gostaria de comentar alguns pontos em relação a melhor forma de descrever erros detectados pelo cliente. Em relação a exemplos extremos de como os erros não deveriam ser descritos, podemos citar algo como: "O seu Expert Advisor não funciona; ele deveria ter aberto várias posições mais não havia uma sequer."

Sem ter absolutamente nenhuma informação sobre o instrumento, período de tempo, conjunto de parâmetros, etc., o desenvolvedor apenas pode tentar adivinhar o que está acontecendo no terminal do cliente.

Na minha opinião, os erros/falhas detectados são melhor descritos com o uso de imagens gráficas. O MetaTrader 4 e o MetaTrader 5 fornecem uma opção de salvar o gráfico como um arquivo de imagem - como GIF e BMP no MT4 e como GIF, BMP e PNG no МТ5. PNG é um formato preferível, porque preserva totalmente a nitidez da imagem.

A nitidez da imagem é muito importante para avaliar corretamente a posição das linhas, barras e valores numéricos do gráfico salvo.

No terminal МТ4, isso aparece de forma semelhante ao exibido abaixo (Figura 4). Para fazer isso, clique com o botão direito do mouse sobre o gráfico requerido no terminal e um menu pop-up será exibido.

Figura 4. Salvar a imagem do gráfico em um arquivo

Figura 4. Salvar a imagem do gráfico em um arquivo


Há um procedimento semelhante no MetaTrader 5 - o mesmo comando, Salvar como imagem é selecionado no menu, o qual é, de qualquer forma, um pouco diferente nos comandos que ele contém.

Uma vez que um comando do menu seja selecionado, uma caixa de diálogo adicional aparecerá para definir a resolução e a área da imagem a ser salva. Isso é mostrado abaixo na Figura 5.

Figura 5. Configuração de parâmetros da imagem que será salva

Figura 5. Configuração de parâmetros da imagem que será salva


Para salvar somente a imagem de uma janela com um gráfico, selecione Gráfico ativo (da forma que está). A seleção da opção área de trabalho ativa resultará em salvar a imagem de toda a janela do terminal, o que, às vezes, pode ser útil quando diversos gráficos precisam ser exibidos simultaneamente.

Não é recomendável mudar a resolução do gráfico ativo visto que isso poderá prejudicar a qualidade da imagem salva.

A imagem também pode ser salva com o uso da tecla de atalho Alt+PrtScr ou somente PrtScr, que permite salvar uma captura da janela atual ou de toda a tela na área de transferência para que seja utilizada posteriormente em um editor de imagens.

Em seguida, você pode abrir o arquivo gráfico resultante em um editor de imagens e editá-lo (se necessário) - por exemplo, adicionar uma nota de texto relativa a um erro provável nos locais relevantes do gráfico. A forma mais fácil de editar é utilizar o editor de imagens Paint que vem instalado no Windows. Entretanto, isso é uma questão de gosto e costume.


6. Armadilhas escondidas na especificação de requisitos

Em regra, elas aparecem por várias razões: falta de compreensão de todas as nuances de preços em bolsas de valores e Forex, falta de consideração das peculiaridades do dimensionamento ao longo dos eixos de hora e preço, etc. Se o desenvolvedor vai ou não prestar atenção a esses pontos ao discutir a especificação de requisitos ou escolher uma abordagem formal depende amplamente das qualificações dele e dos conhecimentos que ele tem sobre as peculiaridades do mercado de negociações. E, é claro, depende da honestidade.

Utilizando expressões figuradas da arte popular, ao escrever uma especificação de requisitos, o cliente geralmente considera o comportamento de "uma vaca esférica no vácuo" e não o comportamento de um mercado de câmbio ou financeiro, idealizando extremamente, dessa forma, o comportamento da série de preço.

6,1. Separação das mudanças de preço

Vamos observar o exemplo prático a seguir. Uma frase na especificação de requerimentos é substancialmente para o seguinte efeito: quando o preço atinge o valor especificado pelo parâmetro externo, abrir uma posição de compra. Alguém pensaria que nunca haveria qualquer dúvida sobre isso - há um preço, o valor é especificado, apenas escreva uma condição de gatilho e é isso.

A única "ninharia" negligenciada aqui é que o preço se move no gráfico de forma separada (de um ponto a outro) e não continuamente. A habilitação da opção Exibir gráfico como uma linha quebrada do terminal para que possamos vê-lo na tela não tornará o movimento de preço contínuo. A série de preço real no gráfico ainda consistirá em pontos separados.

Isso pode ser ilustrado pelo exemplo de gráfico de ponto a seguir (de forma aproximada).

Figura 6. Mudança de preço separada

Figura 6. Mudança de preço separada

O valor de preço especificado é exibido como uma linha horizontal sólida enquanto que pontos vermelhos e azuis representam os valores de preço reais observados. Observando detalhadamente o gráfico, você pode ver que, tecnicamente, o preço nunca atingiu o nível especificado. Ou seja, de acordo com a lógica da especificação de requisitos original, a condição nunca foi cumprida.

Uma nota importante - todas as comparações de preço devem ser mantidas com precisão de um ponto. Por exemplo, se as cotações de instrumento possuem cinco dígitos após o ponto decimal, então um ponto é igual a 0,00001 - esta será a precisão das comparações de preço a serem feitas. Você também deve levar em consideração que há instrumentos (por exemplo, mini contratos futuros) em que a separação da mudança de preço é maior que um ponto.

Assim, mesmo que possamos observar que o preço parece ter atingido o nível especificado, a condição, conforme estabelecida pela especificação de requisitos fornecida, nunca foi cumprida. Para alinhar a noção idealizada de preço introduzida na especificação de requisitos à realidade, você deve fazer o seguinte: adicionar dois limites ao nível existente, superior e inferior. Eles são exibidos como uma linha pontilhada na Figura 6 acima. A abrangência desses limites depende de um sistema de negociação determinado. Na maioria dos casos, 2-3 unidades de spread médio devem ser suficientes.

Então, todos os pontos que estiverem dentro da área entre as linhas pontilhadas serão considerados como se tivessem atingido o valor especificado. Na figura acima, eles foram circulados em verde.

Vamos voltar à nossa especificação de requisitos e alterá-la da seguinte forma: quando o preço atinge o valor especificado pelo parâmetro externo mais/menos delta, abrir uma posição de compra. Agora está muito melhor.

Há outro ponto a ser considerado, o qual está relacionado ao fato de que a conexão com o servidor do corredor pode ser perdida a qualquer momento. Até que a conexão seja restabelecida, o preço poderá subir ou descer qualquer distância em relação ao nível especificado. Essa área (de conexão perdida com o servidor do corretor) está destacada no retângulo rosa na figura acima. Evidentemente, uma situação desse tipo também deveria ser considerada na especificação de requisitos.

Vamos corrigir a nossa especificação mais uma vez: quando o valor de preço anterior é menor que o estabelecido pelo parâmetro externo menos delta e o valor atual está dentro do limite do valor estabelecido pelo parâmetro externo mais/menos delta, desde que o intervalo entre eles não seja maior que o especificado, abrir uma posição de compra. Agora tudo está correto.

6,2. Disparo em um horário exato especificado

Uma especificação de requisitos diz: posicionar duas ordens pendentes de compra e venda em uma determinada distância em relação ao preço no horário determinado pelo parâmetro externo. Aqui, você precisa fazer uma distinção entre dois tipos de terminais - MT4 e MT5. Enquanto que o MetaTrader 5 permite o uso do temporizador com separação mínima de um segundo e a mesma precisão de contagem regressiva de tempo, a linguagem MQL4 do MetaTrader 4 não suporta um temporizador.

Assim, para uma contagem regressiva de tempo padrão no MT4, geralmente utilizamos o horário dos ticks de preço do instrumento no qual o Expert Advisor ou o indicador é utilizado que estão sendo recebidos. Visto que os ticks não aparecem regularmente e que os intervalos de tempo entre ticks sucessivos pode ser muito grande, de algumas dúzias de segundos e mesmo minutos em um mercado inativo, parece que não seremos capazes de garantir uma precisão absoluta no disparo de ordens em um horário especificado. Outro método padrão de contagem regressiva de tempo no MT4 é utilizar um Expert Advisor de ciclo, o qual é muito inconveniente para o desenvolvimento e apresenta uma série de desvantagens.

Assim, é melhor que essa parte da especificação de requisitos seja corrigida da seguinte forma: posicionar duas ordens pendentes de compra e venda em uma determinada distância em relação ao preço no horário determinado pelo parâmetro externo com o erro especificado.

6,3. Uso de termos gerais e multidimensionais

Aqui está um exemplo típico: quando o mercado está plano, faça isso e aquilo. Quando a tendência está com clareza no lugar, faça isso e aquilo. Ao fazer assim, o cliente acredita que nenhum detalhe adicional é requerido em uma tarefa tão simples e direta como a programação de uma tendência/plano. Acredito que isso não requer qualquer comentário.

Aqui está outro exemplo: posicionar uma ordem pendente no extremo. é claro que a interpretação do cliente a respeito do extremo não está na especificação de requisitos. Realmente, qual a razão de explicar se isso pode ser deduzido a partir do gráfico. O fato de que o extremo pode ser obtido com o uso de uma variedade de diversos algoritmos diferentes, sendo que cada um tem vantagens e desvantagens, pode ser uma surpresa para o cliente.

6,4. Uso de palavras comuns com significado geral

Isso se refere a termos que parecem claros quando utilizados no dia a dia e que, no entanto, não são nem um pouco adequados para a especificação de requisitos. Aqui estão alguns exemplos. Uma especificação de requisitos diz: se a linha do indicador formou duas saliências, uma após a outra, sendo que a segunda está mais abaixo da primeira... e assim por diante, dando assim uma descrição da divergência utilizada.

Diversas dúvidas surgem após ler isso - o que pode ser considerado uma saliência; distância máxima/mínima em que essas "saliências" podem estar localizadas em relação uma à outra; quanto mais abaixo a segunda saliência deve estar em relação à primeira, etc.

Palavras como muito/um pouco, pequeno/grande e assim por diante são utilizadas com muita frequência. Você deve entender que a programação se baseia em matemática, o que requer definições quantitativas precisas. Não há outro caminho.


7. Quando recorrer à arbitragem?

Obviamente, você deve fazer o pedido de arbitragem antes do término do trabalho, ou seja, antes da finalização da última etapa - entrega do trabalho/pagamento. Do contrário, não haverá nenhum fator financeiro para obrigar a parte executora e o cliente. Essa condição é essencial.

Parece que a única razão para recorrer à arbitragem pode ser a ocorrência de um problema que não pode ser resolvido entre o cliente e a parte executora em particular. Por exemplo, o cliente está convencido da operação incorreta (em desacordo com a especificação de requisitos) do trabalho entregue a ele, enquanto que a parte executora tenta provar o contrário.

Outra opção possível é o "desaparecimento" do cliente ou da parte executora por um longo período de tempo durante o qual ele/ela não responde a qualquer mensagem privada ou e-mails, etc. Enquanto isso, o dinheiro do cliente está bloqueado na conta e o trabalho não está pronto. Ou, ao contrário, o trabalho já foi finalizado há muito tempo, mas não há maneira de obter o pagamento. Poderá haver diferentes circunstâncias envolvidas, mas a situação deve e pode, apesar disso, ser resolvida por arbitragem.

A situação em que as partes estão com pressa para finalizar a especificação de requisitos e começar o trabalho é muito comum. Mais tarde parece que a especificação na forma que foi fornecida não pode ser utilizada e requer mais detalhes e esclarecimentos de alguns pontos. Consequentemente, poderá ser que o valor da ordem precise ser revisado. O trabalho somente pode ser revertido a partir dessa etapa por meio da arbitragem. Assim, é melhor que você não se apresse para iniciar o trabalho e, em vez disso, utilize o seu tempo para passar pela especificação mais uma vez.


Conclusão

Espero que este artigo tenha sido útil para os usuários iniciantes no serviço Empregos, em especial para os clientes que contratam pela primeira vez. é provável que este artigo não tenha abrangido todos os problemas, mas uma viagem de mil milhas começa com um único passo. Devemos ser mais tolerantes uns com os outros e não expressar tantas emoções negativas no mundo ao nosso redor - elas não tornarão a vida de ninguém mais fácil - seja a vida de um cliente ou de uma parte executora.


Lista das perguntas favoritas feitas pelos clientes

1. Por que alguns desenvolvedores relutam em conversar por Skype, ICQ, telefone, e-mail, etc.?

Acredito que haja duas razões principais para isso:

Primeiramente, um desenvolvedor pode ter vários clientes e se ele começa a conversar online com todos eles (bom, se ele não tem que fazer isso simultaneamente), ele quase não terá tempo para a programação em si. Pensar que é possível explicar as coisas mais rápido através do Skype ou do ICQ é um mito comum.

Em segundo lugar, nenhuma dessas opções apresenta um recurso importante - a possibilidade de documentar o que foi dito. O ponto é que, quando se trata de disputas e arbitragem, a comunicação escrita relativa ao pedido em questão pode provar a culpa ou inocência de uma das partes.

2. Por que a inicialização de um EA/indicador compilado (arquivo .ex4 ou .ex5) causa o encerramento do terminal?

é muito provável que a versão do terminal que você tem instalada é antiga em comparação a versão utilizada no processo de compilação. Você deve atualizar o terminal para a última versão disponível.

3. O que são esses erros que ocorrem ao compular o arquivo do EA/indicador - A função 'xxxxxx' não foi referenciada e será excluída do arquivo exp?

Isso não é um erro. A mensagem diz que a função 'xxxxxx' não é utilizada ('xxxxxx' é substituído por um nome de função específica) e não estará no arquivo compilado. Você pode desconsiderar esta mensagem visto que a presença dessa função "extra" não afeta a operação de um EA ou de um indicador de qualquer maneira.


4. O que é este erro que ocorre ao compilar o arquivo do EA/indicador - não é possível abrir o arquivo incluso "хххххх"?

A mensagem diz que o arquivo "хххххх" ou não foi copiado durante a transferência de arquivos para o seu computador ou que ele foi copiado no diretório errado. Usualmente, os arquivos .mqh devem ser colocados no diretório "include" do terminal.


5. Por que não há marcas para exibir onde a posição foi fechada em relação ao Take Profit/Stop Loss durante a operação do Expert Advisor?

Esse recurso apenas está disponível durante o teste de um Expert Advisor no Strategy Tester. Ele não está disponível durante o trabalho com uma conta real ou de demonstração. Uma transação de interesse pode ser arrastada do histórico da conta para o gráfico, mantendo-se o botão esquerdo do mouse pressionado. Assim, as marcas que indicam a abertura e o fechamento de posições aparecerão no gráfico, conectadas por uma linha pontilhada, da mesma forma que acontece durante o teste no Strategy Tester.


6. Uma posição não foi aberta (uma ordem não foi posicionada) apesar do gráfico histórico sugerir que todas as condições de entrada estão presentes.

O que você encontrou é muito provavelmente o resultado do redesenho de um indicador cujas leituras são utilizadas no Expert Advisor. As condições (valores do indicador) presentes no momento da suposta entrada não corresponderam ao sinal para abertura de uma posição. Então, após algumas barras, os valores dos indicadores mudaram e tomaram suas formais finais, as quais podemos visualizar no histórico. Isso pode ser facilmente verificado com a utilização do modo visual do provador.


7. Como cancelar o trabalho na etapa de Protótipo/modelo piloto - demonstração?

Ele somente pode ser cancelado por meio de arbitragem.


Links recomendados

  1. Regras de uso do serviço Empregos
  2. Como fazer um pedido de Expert Advisor e obter o resultado desejado
  3. Como fazer um pedido de robô de negociação em MQL5 e MQL4

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

Análise de Regressão Múltipla. Gerador de Estratégia e Tester in One Análise de Regressão Múltipla. Gerador de Estratégia e Tester in One

O artigo fornece uma descrição dos modos de uso da análise de regressão múltipla para desenvolvimento dos sistemas de negócio. Ele demonstra o uso da análise de regressão para automação da busca de estratégia. é dado neste exemplo uma equação de regressão gerada e integrada em um EA sem necessitar alta proficiência em programação.

Usar MetaTrader 5 como um provedor de sinal para o MetaTrader 4 Usar MetaTrader 5 como um provedor de sinal para o MetaTrader 4

Análise e exemplos de técnicas de como a análise de negociação pode ser realizada na plataforma MetaTrader 5, mas executada pelo MetaTrader 4. O artigo irá mostrar-lhe como criar provedor de sinais simples em seu MetaTrader 5, e conectá-lo a vários clientes, mesmo executando MetaTrader 4. Além disso, você vai descobrir como você pode acompanhar os participantes do Campeonato de negociação automatizada na sua conta real do MetaTrader 4.

A transformação Box-Cox A transformação Box-Cox

O artigo é destinado a familiarizar seus leitores com a transformação Box-Cox. As questões relacionadas ao seu uso são abordadas e alguns exemplos são fornecidos para avaliar a eficiência da transformação com sequências aleatórias e cotas reais.

Eliminação de DLLs autogeradas Eliminação de DLLs autogeradas

Se a linguagem MQL5 funcional não é suficiente para o cumprimento de tarefas, um programador MQL5 tem que usar ferramentas adicionais. Ele \ ela tem que passar para outra linguagem de programação e criar uma DLL intermediária. O MQL5 tenha a possibilidade de apresentar vários tipos de dados e transferí-los à API mas, infelizmente o MQL5 não pode resolver a questão levando em consideração a extração de dados do ponteiro aceito. Neste artigo vamos pontuar todos os "i"s e mostrar mecanismos simples de transferência e trabalho tipos complexos de dados.