Discussão do artigo "Desenvolvendo um algoritmo auto-adaptável (Parte II): melhorando a eficiência" - página 3

 
Valeriy Yastremskiy:

É interessante ver como as configurações significativas foram selecionadas. Esse é um tópico completo.

Há vários modos principais. Por exemplo, para abrir posições em cada candle ou com um salto ou somente se o preço das posições de venda tiver subido ou caído para as posições de compra. Executei esses modos e comparei os resultados. Começamos com o modo de abertura de posições em cada candle. Se o lucro cair muito, mas o drawdown não cair muito, então o modo é ruim. Por exemplo, o lucro caiu 2 vezes e o drawdown 1,1 vezes. Esse modo não é bom. Mas se o lucro tiver caído 2 vezes e o drawdown 1,5 vezes, então, observamos o número máximo de negócios na série. Se o número máximo de negócios tiver diminuído significativamente, por exemplo, também em 1,5 vezes, isso poderá ter um efeito positivo na estabilidade no futuro. Ou seja, a modalidade não é impressionante no momento, mas sabemos que um grande número de transações é mais perigoso para o depósito. Portanto, encontramos o modo ideal e o deixamos. Esses modos funcionam igualmente para qualquer instrumento, pois são características do próprio algoritmo. Portanto, usarei o modo de pular os candlesticks para abrir posições. Isso é feito com todos os modos de operação. Veremos qual deles é mais interessante para a tarefa atual.

Otimizo os parâmetros por meio de uma pesquisa completa. Por exemplo, defino o número mínimo de candlesticks como 30, o máximo como 300 e otimizo o número mínimo de candlesticks em etapas de 2, enquanto o número máximo permanece estável. Além disso, defino o número de amostras a serem analisadas. Começo com 1 e, no máximo, deixo que seja 30. E otimizo a porcentagem de abertura. Depois que a otimização é feita, analiso os parâmetros a partir dos quais a estabilidade começa. Funciona assim: à medida que a porcentagem de abertura aumenta, o número mínimo de candlesticks aumenta e o número de amostras aumenta, a qualidade do sinal aumenta, mas a lucratividade diminui. É por isso que encontro os parâmetros mínimos estáveis e os adiciono à reserva. Por exemplo, descobri que o intervalo de velas 58-300, a porcentagem 58 e o número de amostras 7 são parâmetros estáveis com relação risco/lucratividade adequada. Portanto, aumento o número mínimo de velas para 68-300, aumento a porcentagem em um, 59, adiciono até 9 amostras e verifico a estabilidade, se não me engano, há uma reserva no futuro para as flutuações dos parâmetros da série de preços.

Agora, precisamos reforçar a lucratividade. Quanto menor for o coeficiente ATR para a realização de lucros, mais estável ele será. Portanto, começo a otimizar esse parâmetro. De 1 já passa, então vamos tentar de 1 a 3 com um passo de 0,1. Vemos que, à medida que o valor aumenta, o lucro cresce, mas em um ponto a estabilidade desaparece. Deixe que ela fique estável até o valor de 1,5. Então, vamos deixar essas velas de 0,5 para alterar as características do mercado e deixá-lo funcionar com o valor 1.

Há outro ponto aqui. Negociamos com candles, e um lucro de 1 candle por posição é normal, especialmente se não abrirmos em cada candle. Mas há um spread, precisamos entender seu tamanho. Se um candle tiver 0,0015 de tamanho, o spread será de 0,0001 em média. 0.0001/0,0015=0,066. 6,6% do lucro do candle é consumido pelo spread. Portanto, é melhor obter lucro não com 1ATR (100%), mas com 1-0,066=0,93. Vou arredondar para cima para ter uma margem menor e ATR = 0,9 (90%) é um valor normal.

É só sobre isso que estou escrevendo. Você precisa entender muito bem o padrão que está usando para facilitar a operação com os resultados. Não utilizo leituras abstratas de indicadores, mas sim recursos bastante específicos, apenas porque podem ser analisados logicamente dessa forma.

 
Edgar Akhmadeev:
Em um produto final polido, deve haver um mínimo de configurações. Mas, em um produto experimental, você geralmente começa com um grande número, entende gradualmente as inter-relações, otimiza ou fixa muitos parâmetros. No último indicador, criei 2 parâmetros de 4. E no kodobase ele é apenas o código para experimentos.

O que importa aqui é o que está no produto final para o consumidor. Não estou vendendo esse robô (embora ele possa e seja melhor do que a maioria do mercado), mas entendo que o comprador não entenderá o que está lá, não tenho ilusões. Quando você é desenvolvedor e operador, o produto final está em constante modificação. Você cria uma versão, refina-a para valer, ela é negociada, enquanto é negociada, você cria outra, remove algo, acrescenta algo, no final, a próxima versão é estável novamente, mas você tem que pentear a beleza.... Isso faz sentido quando se tem uma equipe de 10 pessoas, mas quando se tem uma ou duas, é melhor gastar recursos no desenvolvimento.

 
Maxim Romanov:

Em outras palavras, em tudo o que escrevo, você precisa entender muito bem o padrão que está usando, para que seja fácil operar com os resultados. Não uso leituras abstratas de indicadores, mas sim características bastante específicas, simplesmente porque elas podem ser analisadas logicamente dessa forma.

Obrigado, isso é muito claro.

Uma otimização manual tão significativa e, às vezes, com um exagero completo)

 
Maxim Romanov:

Por quê?

Porque FOREX....

A propósito, tenho 48 configurações em meu Expert Advisor FORTS (juntamente com os parâmetros do gráfico)


 
Maxim Romanov:

O rendimento real é menor do que o calculado porque o teste foi realizado com spreads superestimados, e o algoritmo funciona de forma que, quanto maior o spread, maior o rendimento. A situação não é paradoxal, a estabilidade diminui à medida que o spread aumenta.

Maxim, obrigado pelos artigos!

Comente o que foi destacado, por favor. Não consigo imaginar uma situação em que a compra a um preço mais alto e a venda a um preço mais baixo proporcionem um rendimento mais alto (a menos que estejamos falando do rendimento do corretor, é claro).

 
Andrey Khatimlianskii:

Maxim, obrigado pelos artigos!

Por favor, comente sobre o artigo destacado. Não consigo imaginar uma situação em que a compra a um preço mais alto e a venda a um preço mais baixo proporcionem um retorno maior (a menos que estejamos falando do retorno do corretor, é claro).

Isso acaba sendo um paradoxo). Isso se deve à maneira como o lucro é controlado. Ele é controlado em pontos a partir do preço de abertura até o preço de fechamento. Acontece que, se o spread for pequeno, o nível de lucro ultrapassa o valor limite e a série termina. Mas se o spread for grande, o lucro pode não ser suficiente para acionar as condições de fechamento e a série continua. Se a série continuar, novas posições serão abertas. E como o lucro médio das posições abertas é controlado, quanto mais posições, mais lucro. Portanto, acontece que, com um spread maior, há mais posições e, consequentemente, mais lucro. Mas um spread grande afeta a estabilidade. Quanto mais posições, maior o risco de fechar com prejuízo.
 
Maxim Romanov:
É um paradoxo). Isso se deve à forma como o lucro é controlado. Ele é controlado em pontos a partir do preço de abertura até o preço de fechamento. Acontece que, se o spread for pequeno, o nível de lucro ultrapassa o valor limite e a série é concluída. Mas se o spread for grande, o lucro pode não ser suficiente para acionar as condições de fechamento e a série continua. Se a série continuar, novas posições serão abertas. E como o lucro médio das posições abertas é controlado, quanto mais posições, mais lucro. Portanto, acontece que, com um spread maior, há mais posições e, consequentemente, mais lucro. Mas um spread grande afeta a estabilidade. Quanto mais posições, maior o risco de fechar com prejuízo.

Entendi, obrigado.

Seria mais lógico formular corretamente as condições para o fechamento de uma série, é claro. Para que elas não dependam tanto do spread.

Mas já percebi que o próximo passo é mudar para o MT5. Vou continuar observando.

 
Andrey Khatimlianskii:

Entendi, obrigado.

Seria mais lógico formular corretamente as condições para o fechamento de uma série, é claro. Assim, elas não dependeriam tanto do spread.

Mas já percebi que o próximo passo é mudar para o MT5. Vou continuar observando.

MT5 + MOEX

 
Andrey Khatimlianskii:

Entendi, obrigado.

Seria mais lógico formular corretamente as condições para o fechamento de uma série, é claro. Assim, elas não dependeriam tanto do spread.

Mas já percebi que o próximo passo é mudar para o MT5. Vou ficar de olho nisso.

Sim, era lógico) Eu até pensei que esse problema deveria ser resolvido quando eu estava negociando, mas depois percebi que essa é uma modificação muito pequena, que não mudará nada de forma decisiva.
 

Boa noite.

Suspeito que na linha 256 sinal 87 cometeu um erro\ um erro de digitação, em vez de "-" parece muito bem "=".

Por favor, confirme, eu mesmo o corrigirei, ou talvez haja algum significado oculto que eu não entenda, o erro não queima, queima como Warning.

if(mas_par[i].Pause>0 && mas_par[i].Series_Close_Time>0) mas_par[i].Pause-iBarShift(mas_symbols[i],mas_inp[i].TF,mas_par[i].Series_Close_Time);