Automated Trading Championship 2007: erros comuns em especialistas - página 8

 
Ou que
 if(OrderStopLoss()!=(Bid-Point*TrailingStop))
De qualquer forma, verificamos se o stop-loss está em pips e a expressão está em pips.

Além disso, quem precisa de lotes em incrementos de 0,1 e com um limite de até 5 lotes

TmpRound = MathRound(Lots/0.1);
        Lots = TmpRound*0.1;       
        if(Lots>5)Lots=5;
        if(Lots<0.1)Lots=0.1;
 
1) Seria bom não apenas identificar erros comuns em especialistas, mas também mostrar maneiras de resolver estes problemas.

2) Seria útil para todos. Mas, por exemplo, o clássico MACD Sample.mq4 Expert Advisor escrito como exemplo por seus desenvolvedores não passará no teste em si por causa do erro nº 1.
Por que um comerciante iniciante veria um exemplo de uma solução correta?

3) A propósito, é uma grande idéia deixar um simples Expert Advisor, por exemplo, baseado na mediana, como um exemplo que atende a todos os requisitos e estabelece as boas regras para a programação de um Expert Advisor. Muita gente apreciaria isso. Isso seria uma boa promoção da MQL4 como base para a construção de sistemas comerciais automáticos.
 
AstaLavista:
1) Seria uma boa idéia não apenas identificar erros comuns nos EAs, mas também mostrar maneiras de resolver estes problemas.

2) Todos se beneficiariam com isso. Mas, por exemplo, o clássico MACD Sample.mq4 Expert Advisor, escrito como exemplo, não passará no teste por causa do erro nº 1.
Por que um comerciante iniciante veria um exemplo de uma solução correta?

3) A propósito, é uma grande idéia deixar um simples Expert Advisor, por exemplo, baseado na mediana, como um exemplo que atende a todos os requisitos e estabelece as boas regras para a programação de um Expert Advisor. Muita gente apreciaria isso. Isso seria uma boa promoção da MQL4 como base para a construção de sistemas comerciais automáticos.


Palavras de ouro!

Espero que isto seja levado em conta pelo menos nos modelos de criação de códigos "assistente" planejados.

 
2 AstaLavista: o código do Rosh para o rastreamento é mais correto (embora você deva mudar oldTP para oldSL e newTP para newSL na linha de comparação entre parênteses) - sua condição é ">". E no seu caso, se o preço voltar para trás, então a trilha também voltará para trás, porque a condição será cumprida!
 
Stepler2442:
2 AstaLavista: o código do Rosh para o rastreamento é mais correto (embora você deva mudar oldTP para oldSL e newTP para newSL na linha de comparação entre parênteses) - sua condição é ">". E no seu caso, se o preço voltar atrás, o reboque também voltará atrás, porque a condição será cumprida!
Nesse caso, basta substituir para o caso da baía por
 if(OrderStopLoss()<(Bid-Point*TrailingStop)

em valores iguais a condição não será cumprida, evitando o erro nº 1, e em valores abaixo da parada definida a modificação não será executada - em outras palavras, funcionará como uma parada de trilha completa
OrderStopLoss() и (Bid-Point*TrailingStop)

 
Stepler2442:
2 AstaLavista: o código do Rosh para o rastreamento é mais correto (embora você deva mudar oldTP para oldSL e newTP para newSL na linha de comparação entre parênteses) - sua condição é ">". E no seu caso, se o preço voltar atrás, então a trilha também voltará atrás, porque a condição será cumprida!
Obrigado, eu corrigi isso.
 
AstaLavista:
Stepler2442:
2 AstaLavista: o código Rosh para a trilha é mais correto (embora você deva mudar oldTP para oldSL e newTP para newSL entre parênteses) - ele tem a condição ">". E no seu caso, se o preço voltar atrás, então a trilha também voltará atrás, porque a condição será cumprida!

Neste caso, basta substituir o bay do caso por
 if(OrderStopLoss()<(Bid-Point*TrailingStop)


Sim, vai funcionar. A única diferença e alguma vantagem do trailing, sugerida pela Rosh, é que com ele você pode facilmente não só trailing, mas também com passos, para não se preocupar com cada pip e não incomodar seu corretor com um fluxo de modificações :)
 

Infelizmente às vezes não vai funcionar (eu já estive lá antes), mas isto sempre vai funcionar:

if(NormalizeDouble(OrderStopLoss(),Digits) < NormalizeDouble(Bid-Point*TrailingStop,Digits))
 
Seria ótimo se pudéssemos encontrar a melhor solução para tudo, na forma de um conselheiro exemplar...
 

Cavalheiros, o log gerado como resultado de testes automáticos está disponível para download e visualização? Não consigo encontrá-lo em meu perfil.