Mas o que está acontecendo?

 

Trata-se mais uma vez do testador/optimizador...

Discrepâncias notadas nos resultados da otimização e do teste único. Reinicialização do terminal, alteração das configurações (para ter certeza). Iniciada a otimização.

Fiz um único teste...

Como poderia ser? De onde vem este absurdo?

 

Você já garantiu que a lógica de seu código é a mesma em ambos os casos?

Não no sentido de "eu não mudei o código", mas para garantir que o comportamento técnico e lógico do robô não seja alterado.

Este tipo de reivindicação requer o máximo de detalhes técnicos possíveis, incluindo lógicas e condições de repetição. Além disso, suas próprias tentativas de entender e coletar mais informações. O programa é seu.

Gritando "escrevi algo aqui, não entendi, não descrevi os detalhes, só quero expressar minha indignação porque acho que meu programa, que eu não sei como funciona, foi de alguma forma mal conduzido por outra pessoa" é fútil.

 
Eu costumava rodar o otimizador quando era jovem e verde, agora faz vários anos desde que comecei a otimizar, apenas um testador é suficiente para entender, e o otimizador nos alimenta ilusões
 
Aleksey Semenov:
Eu costumava rodar o otimizador quando era jovem e verde, e agora não o comando há vários anos, porque o testador só precisa entender, e o otimizador só nos alimenta ilusões.

O otimizador tem uma tarefa clara: verificar o campo de opções e dar um conjunto de parâmetros para a função definida pelo negociante.

Esta é uma tarefa técnica, e ele já lidou com ela e está fazendo um ótimo trabalho.

A qualidade e robustez dos robôs devem ser monitoradas.

 
Renat Fatkhullin:

O otimizador tem uma tarefa clara: verificar o campo de opções e dar um conjunto de parâmetros para a função definida pelo negociante.

Esta é uma tarefa técnica e estava e está fazendo um ótimo trabalho.

A qualidade e robustez dos robôs devem ser monitoradas.

Eu apaguei todas as caches. Repetimos o teste de otimização. O resultado é o mesmo. Claras discrepâncias.

Claro que não sou um Expert Advisor, mas não entendo porque o otimizador tem um 100 quando usa os parâmetros 3, 5, 20 e o teste com os mesmos parâmetros mostra -20....

A lógica da EA tanto no otimizador quanto no testador é a mesma. O hardware é o mesmo. O que e como devo fazer para obter tal diferença nos resultados?

Renat Fatkhullin:

E você garantiu que a lógica de seu código não mudará em ambos os casos?

Não no sentido de "eu não mudei o código", mas no sentido de garantir um comportamento inalterado nos níveis técnicos e lógicos do robô.

Este tipo de reivindicação requer o máximo de detalhes técnicos possíveis, incluindo lógicas e condições de repetição. Além disso, suas próprias tentativas de entender e reunir mais informações. O programa é seu.

Gritando "escrevi algo aqui, não investiguei, não descrevi os detalhes, só quero expressar minha indignação porque acredito que meu programa, que eu não sei como funciona, foi de alguma forma mal conduzido por outra pessoa" é fútil.

Conselhos sobre como detectar esta "variabilidade" entre otimização e teste?

Amanhã vou postar os logs. Limparei tudo e farei a otimização e o teste. Lembro-me de sua lição )))) Estarei muito atento.


Enquanto isso, feliz Grande Vitória para todos!!!

Eu vou celebrar ))))

 
Сергей Таболин:

Removidos todos os caches completamente. Repetimos o teste de otimização. O mesmo resultado. Claras discrepâncias.

É claro que não sou especialista, mas não entendo porque o otimizador tem um resultado 100, enquanto o teste com os mesmos parâmetros mostra -20....

A lógica da EA tanto no otimizador quanto no testador é a mesma. O hardware é o mesmo. O que eu preciso fazer para obter tal diferença nos resultados?

Por favor, me aconselhe como detectar esta "variabilidade" entre o otimizador e o testador?

Amanhã vou afixar os logs. Eu limparei tudo e farei a otimização e o teste. Lembro-me de sua lição )))) Estarei muito atento.


Enquanto isso, feliz Grande Vitória para todos!!!

Eu vou celebrar ))))

Há um pequeno tópico na seção inglesa onde um usuário está fazendo a mesma pergunta.
Sua otimização e retrocesso são os mesmos para todos os seus EAs (tudo está bem), mas um EA é o mesmo que o seu.
Ele deu o resultado do backtest - você pode olhar para ele (dei-lhe uma idéia num relance - por que é a diferença).

Ele não deu o código, mas é claro que a razão está na lógica (no código) de sua EA (porque ele disse que não tinha tais problemas com todos os outros EAs - veja seu último post no tópico): https://www.mql5.com/en/forum/338047
 
É suficiente esquecer de rubricar algo no código e haverá uma diferença. Verifique o código.
 
Andrey Barinov:
Você pode simplesmente esquecer de inicializar algo em seu código e haverá uma diferença. Verifique o código.

Eu fiz variantes de teste há muito tempo, havia realmente lixo nas variáveis, o desenvolvedor venceu isso no início com seus próprios esforços? Afinal, se há lixo no meio do código, deve ser sempre o mesmo, certo?

Não sou um programador profissional, é uma questão, não conheço o princípio da programação de baixo nível

 
Sergey Golubev:
Há um pequeno tópico na seção inglesa onde um usuário está fazendo a mesma pergunta.
Sua otimização e retrocesso em todos os seus EAs (tudo está bem) e um EA é como o seu.
Ele deu o resultado do backtest - você pode olhar para ele (dei-lhe uma idéia num relance - por que é a diferença).

Ele não deu o código, mas é claro que a razão está na lógica (no código) de sua EA (porque ele disse que não tinha tais problemas com todas as outras EA - veja seu último post): https://www.mql5.com/en/forum/338047

Tudo é igual ao meu ))))

Andrey Barinov:
Você só precisa esquecer de inicializar algo no código e haverá uma diferença. Verifique o código.

Como assim? É a mesma coisa lá e ali. Como pode haver uma diferença? Especialmente porque praticamente todos os dados são inicializados em um loop. E se algo não for inicializado ali, você sai com um erro.

Fast235:

Há muito tempo atrás eu executei variantes de teste, havia lixo nas variáveis, o desenvolvedor não derrotou isso no início por seus próprios esforços? Afinal, no meio do código, se pode haver lixo, deve ser sempre o mesmo, certo?

Eu não sou um programador profissional, é uma questão.

Esse é exatamente o meu ponto de vista. Deve ser o mesmo em ambos os casos. Mesmo que eu tenha um bug em algum lugar, ele deve estar em todos os lugares. Mas, ao que parece, esta falha (minha) é de alguma forma corrigida magicamente. Mas não está absolutamente claro onde? Seja no otimizador, ou no tester....


Longe da mesa festiva por um momento )))))))))))

 
Сергей Таболин:

Tudo é igual ao meu ))))

Como assim? É a mesma coisa lá e ali. Como pode haver uma diferença? Especialmente porque praticamente todos os dados são inicializados em um loop. Se algo lá não for inicializado, você receberá um erro.

É isso que eu quero dizer. Deve ser o mesmo em ambos os casos. Mesmo que haja um bicho em algum lugar, ele deve estar em todos os lugares. Mas, ao que parece, esta falha (minha) é de alguma forma corrigida magicamente. Mas não está absolutamente claro onde? Seja no otimizador, ou no tester....


Longe da mesa de férias por um momento )))))))))))

Eu quis dizer as variáveis, quando você executa o script e em vez de 0 elas contêm os dados da última execução ou algo assim, eu não me lembro, foi há 5 anos ou algo assim

e no testador, muito provavelmente novamente você tem alguma nuance, que a propósito diz que o MQ precisa ser melhorado, eu pessoalmente não gosto de tudo no testador, a interface para executá-lo não gosta

 
Сергей Таболин:

Tudo é igual ao meu ))))

Como assim? É a mesma coisa lá e ali. Como pode haver uma diferença? Especialmente porque praticamente todos os dados são inicializados em um loop. E se algo lá não for inicializado - saída com um erro.

...

Eu dei a esse camarada ali no ramo uma idéia do porquê ele tem uma diferença nesta EA.
Afinal, quando o backtest termina (no momento do término do backtest), todas as posições abertas são fechadas à força (somente no testador).
Se ele apenas negociasse, eles não estariam fechados naquele momento.

Portanto, aqui para ele -

  • Ou a otimização da confiança (que no caso dele é preferível),
  • ou ignorar o fechamento forçado de posições em aberto somente no melhor antes de terminar, mas então ele não receberá dígitos,
  • ou escolher um intervalo de tempo para o backtest com os mesmos parâmetros de otimização, quando a EA fechará todas as posições antes do final do backtest (escolhendo ...), e então eu acho que será a mesma coisa.
Совершение сделок - Торговые операции - Справка по MetaTrader 5
Совершение сделок - Торговые операции - Справка по MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
Razão: