Retrocesso/Optimização - página 82

 

Bom post sobre os testes de retaguarda, preço de compra/venda:

https://www.mql5.com/en/forum/181204

 

Strategytester: Limite do tamanho do lote MT4

Hi,

Como posso alterar as configurações de tamanho máximo do lote no testador de estratégia MT$? Atm o testador de estratégia não abre Potisões >50 Lotes.

e há um limite de equilíbrio no testador de estratégia?

Apreciaria alguma ajuda. Obrigado!!

 
lsteixeira:
Alguns dados decentes que eu usei vieram daqui:

Http://www.histdata.com

Saúde!!

Obrigado pelo conselho...eu utilizo os dados da Ducas com 99% de qualidade modling atm. Não posso dizer o quanto isto se aproxima da realidade, mas espero que esteja perto o suficiente ^^

 

[langtitle=fr]Probl�me sur un backtest[/langtitle]

[lang=fr]Bonjour tout le monde,

Je me tourne vers vous car j'ai un probleme lors du backtest de mon EA.

Comme vous pourrez voir sur le graphique, il y a une chute brutale et je ne sais pas d ou ca vient j ai un stop loss regler sur 10 pips

Arquivos anexados:
graphique.jpg  117 kb
rapport.jpg  97 kb
 

Fim normal da parada do testador

targetik:
[lang=fr]Bonjour tout le monde,

Je me tourne vers vous car j'ai un probleme lors du backtest de mon EA.

Comme vous pourrez voir sur le graphique, il y a une chute brutale et je ne sais pas d ou ca vient j ai un stop loss regler sur 10 pips

Olá Targetik,

Esse é um " teste de fim de estratégia" normal...

O testador fecha todas as negociações abertas quando o testador termina... e todas as suas negociações abertas ativas normalmente fecham com uma perda.

Eu apenas ignoro a última negociação...ou eu reajusto as datas para passar essa negociação para que ela possa fechar corretamente...ou eu defino a data da última negociação fechada para que eu não tenha nenhuma negociação aberta no final do teste.

Espero que isto ajude,

Robert

 

[lang=fr]Merci beaucoup [/lang]

 

Grande Fio!

--

 

Recuperar a maior equidade das otimizações?

É possível recuperar informações sobre o maior patrimônio alcançado por cada execução de um determinado conjunto de resultados de otimização no MT4?

Até onde posso dizer, o MT4 não fornece informações na janela de resultados sobre o maior patrimônio líquido alcançado por uma estratégia durante os testes anteriores - seja nos resultados da otimização ou no relatório de uma única execução manual. (O mais próximo que chega é o drawdown $, o que eu acho que requer que você saiba o valor do trough relevante para determinar qual foi o pico anterior - e você só pode adivinhar isso a partir do saldo final). Presumivelmente, o testador de estratégia teria sabido exatamente esse valor mais alto de patrimônio líquido em algum momento durante seus cálculos. Existe alguma maneira de recuperar esses dados para obter resultados de otimização?

Posso pensar em um trabalho parcial ao redor. A maior eqüidade alcançada durante um único teste manual de retorno poderia ser vista pela adição de uma variável no EA que atua como um registro da "maior marca de água" atingida em termos de eqüidade, e depois imprimir isso para a revista no final da passagem (ou sempre que). O problema é que a informação da revista não parece estar disponível quando a mesma estratégia é executada como parte de uma otimização... Isto seria bom para um pequeno número de tiragens manuais, mas não é adequado para um número maior de otimizações.

O único outro trabalho que me ocorre é usar um indicador que atua como um EA e carregá-lo na carta terminal normal. Ao inserir uma "hora de início" como uma variável externa, poderia manter uma contagem de lucros e perdas (desde que as posições não sejam abertas dentro de castiçais). O problema com isso é o mesmo, no entanto. Você ainda precisaria digitar manualmente as diferentes variáveis externas para cada execução diferente das possibilidades de otimização - que poderiam ser muitas!

Alternativamente, você poderia colocar um limite artificial no patrimônio líquido em um EA, e então fechar todas as posições e terminar a negociação no EA uma vez que um patrimônio líquido pré-determinado tivesse sido alcançado. Então, você poderia ver uma lista do número de passagens que terminaram com esse valor nos resultados das otimizações. No entanto, você não saberia se uma determinada passagem teria alcançado um patrimônio líquido maior, a não ser que você tivesse passado por um grande número de passagens com diferentes limites de patrimônio líquido. No entanto, isto parece ser um trabalho muito desajeitado e ineficiente.

(Mesmo poder ver um gráfico simples da balança versus número de comércio seria um começo - mas isso também não parece estar disponível a partir das otimizações).

Alguém conhece um método melhor que funcionaria mais eficientemente para as otimizações?

 

Acho que acabei de encontrar a resposta à minha própria pergunta, então postarei aqui no caso de alguém ainda querer saber a resposta.

Uma solução é usar variáveis globais(Variáveis globais - Documentação MQL4). Acontece que as variáveis globais são definidas ou atualizadas durante cada execução de uma otimização. Estou me referindo aqui às variáveis globais do terminal do cliente, não apenas às "variáveis globais" dentro de um EA. Como a variável é global, pode-se então consultá-la usando algo fora do Testador de Estratégia. Você poderia simplesmente adicionar uma variável normal (dupla) dentro do EA que se atualiza para a maior equidade de sempre a cada tick, depois definir uma variável global para esse valor na seção deinit() desse mesmo EA. Esta variável global poderia então ser consultada usando GlobalVariableGet() em um script em uma janela normal do gráfico no terminal uma vez que cada passagem da otimização esteja concluída, e o valor resultante poderia ser exibido como um Comentário ou registrado no diário do terminal usando Print.

O único problema com esta abordagem é que você teria que executar manualmente o script depois de cada passagem na otimização (antes da próxima passagem) - assim você ainda precisaria sentar e assistir às otimizações. Eu não acho que uma EA poderia ser usada para consultar a variável global, porque a EA precisaria executar várias vezes para capturar várias execuções da otimização. É muito provável que você não estaria recebendo nenhum ticks durante uma otimização, porque você estaria desconectado dos dados ao vivo a fim de preservar suas configurações de espalhamento. Suponho que os vários métodos de envio de "carrapatos falsos" para a EA não funcionariam de uma execução de otimização até a carta terminal normal...

Isto é menos problemático se você estiver usando uma conta com um tamanho de spread estável, caso em que você poderia executar otimizações enquanto estiver conectado aos dados recebidos ao vivo, sem correr muito o risco de alterar os dados de spread. No entanto, ainda seria um problema se você quisesse otimizar durante o fim de semana. Além disso, se seu próximo passe de otimização for concluído antes que um novo tick seja recebido, então os dados do último passe ficariam sem registro.

Você poderia contornar isso definindo uma variável global SEPARAR com cada passe da otimização, e então lê-los todos no final pressionando F3. Isso poderia ser feito com uma operação de ciclo no deinit() para recuperar o número atual de variáveis globais ("n"), e então nomear a variável global atual "n+1", e defini-la para o valor de equidade relevante. Dessa forma, você poderia vê-las todas no final pressionando F3, e o nome da variável seria o mesmo que o número da passagem da passagem (desde que não houvesse variáveis globais no início da otimização - o que pode ser facilmente alcançado executando um script com GlobalVariablesDeleteAll() antes de cada otimização). Não tenho certeza de qual é o número máximo de variáveis globais - mas desde que você tenha um número razoável de otimizações, acho que deve ser bom. Infelizmente eu não acho que os dados da tecla F3 sejam exportáveis, então você teria que copiá-los usando uma tampa de tela ou uma boa caneta e papel (ou apenas ter uma instalação MT4 separada para cada otimização se você estiver usando um número estupendo de passes). Suponho que você poderia, alternativamente, escrever um script para então Imprimir todos os nomes e valores das variáveis globais para o diário terminal depois que a otimização estiver completa, e depois exportar AQUELE diário.

Este método poderia, naturalmente, ser usado para recuperar quase todos os dados das otimizações, em vez de ter que confiar nas informações limitadas da janela de resultados da otimização do Strategy Tester! Espero que isso ajude alguém :-)

 

p.s. - Acabei de perceber que tanto o Print como o Alert permitem apenas 64 caracteres, de modo que você não poderia escrever um roteiro para Imprimir as variáveis globais se estivesse usando mais do que um punhado de otimizações. (A menos que você imprimisse cada variável global em uma linha separada do diário terminal, e depois clicasse e copiasse todas elas, uma a uma, para se sobressair ou similar. Não parece haver uma maneira de selecionar mais de uma entrada no periódico de cada vez).

Ao contornar isto, você poderia usar uma operação de ciclo para escrever os valores de cada uma das variáveis globais em seqüência em uma string massiva (usando \n para colocar cada valor de variável global em uma nova linha), e então enviar essa string para você mesmo por e-mail usando SendMail(). Não parece haver um limite para o número de caracteres no Send Mail. Você pode facilmente copiar esses dados de e-mail para um documento de texto em seu computador, e usar o botão Data\Import External Data\Import Data no Excel para importar esses dados no formato que você quiser. Se você também copiar os resultados da otimização para um documento de texto, e depois importá-los para o Excel usando o mesmo método (selecionando "Delimited" na primeira tela, depois marcando a caixa "Other" e digitando "=" nessa caixa de entrada para separar o texto dos números), você pode então simplesmente alinhar os dados de seu e-mail até os dados exportados diretamente da otimização. Dessa forma, você terá qualquer informação extraída da otimização usando variáveis globais na mesma linha dos dados relevantes exportados da otimização para uma determinada passagem. Simples.