Discussão do artigo "Otimização Walk Forward contínua (Parte 8): Melhorias e correções do programa"

 

Novo artigo Otimização Walk Forward contínua (Parte 8): Melhorias e correções do programa foi publicado:

O programa foi modificado com base nos comentários e solicitações dos usuários e leitores desta série de artigos. Este artigo contém uma nova versão do otimizador automático. Esta versão implementa os recursos solicitados e fornece outras melhorias, que eu descobri ao trabalhar com o programa.

A versão anterior do programa tinha uma entrada em fase de datas para otimizações do histórico e forward, o que era inconveniente. Desta vez, eu implementei a entrada automatizada dos intervalos de tempo necessários. Os detalhes da funcionalidade podem ser descritos a seguir. O intervalo de tempo selecionado deve ser automaticamente dividido em otimização forward e histórico. A etapa para ambos os tipos de otimização é fixa e definida antes da divisão em intervalos. Cada novo intervalo de forward deve começar no dia seguinte após o intervalo anterior. O deslocamento dos intervalos do histórico (que se sobrepõem) é igual as janelas de forward. Ao contrário das otimizações do histórico, as de forward não se sobrepõem e implementam um histórico de negociação contínuo. 

Para implementar esta tarefa, eu decidi transferir esta funcionalidade para uma janela gráfica separada e torná-la independente e não diretamente relacionada à interface principal. Como resultado, nós temos a seguinte hierarquia de objetos.

 


Autor: Andrey Azatskiy

 

Eu não esperava que você continuasse o desenvolvimento. O suporte a várias ferramentas é legal! Estou surpreso por não haver feedback. Acho que a culpa é da complexidade do artigo. Levei uma semana para lê-lo. Poucas pessoas têm o nível de treinamento em C# e OOP que você tem. Aqueles que conseguirem entender o que está escrito aqui poderão concluir o programa sozinhos. De qualquer forma, aceite meus agradecimentos por seu trabalho. Com essa mão de obra, você pode escrever seu próprio testador e colocá-lo no mercado. Você provavelmente o compraria. Testarei o trabalho do otimizador e compartilharei minhas impressões aqui. Muito obrigado!

 
Good Beer:

Eu não esperava que você continuasse o desenvolvimento. O suporte a várias ferramentas é legal! Estou surpreso por não haver feedback. Acho que a culpa é da complexidade do artigo. Levei uma semana para lê-lo. Poucas pessoas têm o nível de treinamento em C# e OOP que você tem. Aqueles que conseguirem entender o que está escrito aqui poderão concluir o programa sozinhos. De qualquer forma, aceite meus agradecimentos por seu trabalho. Com essa mão de obra, você pode escrever seu próprio testador e colocá-lo no mercado. Você provavelmente o compraria. Testarei o trabalho do otimizador e compartilharei minhas impressões aqui. Muito obrigado!

Obrigado por uma avaliação tão elogiosa, mas eu mesmo tenho muito a aspirar no campo da programação e da negociação, portanto, não elogie demais.

 

Olá novamente! Não vou elogiá-lo de forma alguma, mas como se sugerisse gentilmente que seu excelente trabalho seria bem complementado por uma versão resumida no kodobase na forma de um manual limpo e um arquivo com um aplicativo compilado. E para aqueles que querem se envolver no trabalho - esses artigos. Quem puder entendê-los poderá escrever um programa desse tipo..... Haveria uma resposta entre as massas, porque, em potencial, ele é o melhor otimizador avançado entre os apresentados em MQL5.
Agora, sobre a realização do potencial: o Autoset não funciona! Ou melhor, não funciona corretamente. No Metatrader, a data Till não participa da otimização, e o teste futuro deve começar diretamente a partir dessa data do período de teste. A data From do próximo forward deve coincidir com a data Till do anterior. O mesmo se aplica ao período de otimização.
Por exemplo, testamos março de 2020. A definição da data de início é um tópico separado. Na versão atual, ao definir 4 semanas de março e uma semana de fevereiro, eu esperava obter dois períodos futuros com um detalhamento de 3 semanas (21 dias) - período histórico e 1 semana (7 dias) - período futuro. Tudo em uma base de segunda a segunda.

autoset
No final das contas, o primeiro estava correto - de segunda a segunda. E então: aqui vamos nós!
O período futuro começou na terça-feira, 17 de março, enquanto deveria ter sido na segunda-feira, 16! O próximo período do forwаd - teria começado na quarta-feira, 25 de março, se o intervalo permitisse. E o próximo Nystory começa em 17 de março, embora o último dia do período anterior tenha sido 15 de março (16 não está envolvido).

períodos

Você mesmo não usou o Autoset?
E um pouco sobre a definição da data de início. Em futuros, o histórico provavelmente é limitado, mas em forex há histórico suficiente para testes. Portanto, por que quebrar a cabeça com a definição da primeira data? Talvez devêssemos definir o período para a cobertura total por meio de forwards, e as datas do histórico seriam determinadas automaticamente. Por exemplo, no meu exemplo, teríamos 5 períodos avançados (se o Autoset funcionar corretamente) e a primeira data do Histoty seria 3 de fevereiro.
Estou aguardando o patch. Até lá, vou inserir os períodos manualmente, provavelmente terei tempo.

 

Digitei os períodos manualmente e o executei. Falhou novamente. É correto digitar os períodos dessa forma ou é necessário ter uma alternância estrita?

períodos de teste

Não há nada na guia de resultados do otimizador: nem para frente nem no histórico. O Expert Advisor registrou três otimizações históricas para cada ativo. Não houve nenhuma avançada, embora o otimizador parecesse contá-las. Essa janela aparecia de tempos em tempos:

janela

Após a otimização, o nome do conjunto de otimização aparece no canto superior esquerdo (janela de otimização), mas quando você clica no botão Load bot params, a janela aparece:

janela 2

Houve pausas de cerca de 30 segundos entre as etapas de otimização. Especialmente quando a barra de progresso chega ao final. Isso consumirá muito tempo no total.

 
Com relação ao autocompletar, percebi: há tempo ali! Não notei isso no início. Por que 12:00? Deveria ser 0-00. Portanto, a data Till está incluída no teste. E você não pode alterá-la. É a mesma coisa com o preenchimento manual!
 
Good Beer:
Com relação ao autocompletar, percebi: há tempo ali! Não notei isso no início. Por que 12:00? Deveria ser 0-00. Portanto, a data Till está incluída no teste. E você não pode alterá-la. É a mesma coisa com o preenchimento manual!

É isso mesmo, isso acontece porque as datas são contadas de 00:00 a 0:00.
Quanto ao fato de que o forward não começa no último dia do histórico, mas é movido um dia para frente, é lógico que você não voltará um dia para negociar o forward, não é? A máquina do tempo ainda não foi inventada, mas é uma pena)
Com relação ao erro de que não há dados para criar, você tem certeza de que conectou o descarregamento automático e a geração de relatórios no Expert Advisor? Há duas opções aqui: ou você não incluiu no código do EA a funcionalidade de descarregamento automático e geração de relatórios, ou os resultados de negociação do EA não passaram pelos filtros de otimização que você definiu.

 
Os períodos podem ser digitados até mesmo dispersos ou em ordem, isso não afeta o processo, eles são classificados por si mesmos em ordem. Se você tiver interesse em ver a lógica, posso sugerir métodos responsáveis pela classificação dos períodos e pelo preenchimento automático das datas de otimização.
 
Com relação à configuração do tempo de otimização (ou seja, não apenas o ano, mas também a hora), essa é uma limitação da plataforma. Observe a descrição da criação de um arquivo de configuração, seção [Tester], campos "FromDate", "ToDate" - o formato do valor aceito "YYYYYY.MM.DD".

E para remover a data "From", certamente não o farei, pois é conveniente e necessário limitar o intervalo.
Запуск платформы - Для продвинутых пользователей - Справка по MetaTrader 5
Запуск платформы - Для продвинутых пользователей - Справка по MetaTrader 5
  • www.metatrader5.com
По завершении установки в меню "Пуск" создается группа программ торговой платформы, а на рабочем столе дополнительно помещается ярлык программы. Используйте их для запуска. Нельзя запускать одновременно две копии платформы из одной директории. Чтобы одновременно запустить несколько копий, установите соответствующее количество программ в разные...
 

Olá, os artigos da sua série foram muito úteis. Não sou bom em C#, então estou tentando aprender com suas lições

Fiz o download dos arquivos anexados das Partes 4 a 7, mas não consigo criar o projeto "Metatrade Auto Optimiser". Recebi um erro como o da figura:


Attached filesfrom Part 8 that's my first time seeing your program interface, it succeeded in launching mt5 when optimisation mode is disable, and www when I turn on it like this picture I got error



Por favor, ajude-me a corrigi-lo. Obrigado

 
Andrey Azatskiy:

É isso mesmo, isso acontece porque as datas são contadas de 00:00 a 0:00.
E quanto ao fato de que o forward não começa no último dia do histórico, mas é movido um dia para frente, então tudo é lógico, você não vai voltar um dia para negociar o forward? A máquina do tempo ainda não foi inventada, mas é uma pena).

Você entendeu errado. Seu tempo de otimização é de 12:00 a 12:00. E não consigo encontrar nenhum lugar para mudar isso.

períodos

Por isso, perdemos 12 horas do primeiro dia do histórico e somos otimizados por 12 horas para o período futuro. Por esse motivo, o período avançado é movido um dia para frente, porque esse dia é usado pelo histórico.

Como há sete dias em uma semana, o período de otimização deve ser dividido em sete dias. O período do histórico termina na segunda-feira 0-00 e o período futuro começa na segunda-feira 0-00. Acontece que na segunda-feira não testamos, mas fazemos um avanço. Não há máquina do tempo.