Discussão do artigo "Testador de estratégia personalizada com base em cálculos matemáticos rápido" - página 2

 
E eu gostei, mesmo que apenas porque não há um único artigo sobre cálculo e a referência tem pouco sobre o assunto.
 
fxsaber:

Um bom artigo para começar! Observações

  • Na verdade, é sugerido o uso de uma API de negociação proprietária. O que quase anula o desenvolvimento. Faz sentido ter seu próprio testador dentro do MT5, quando a API de negociação de seu testador coincide com a API padrão. Caso contrário, você poderá usar algum testador pronto dos concorrentes ou do mesmo R com o mesmo benefício.
  • Com o mecanismo de símbolos personalizados, não está muito claro para que esse testador pode ser necessário.
  • Seria bom ver as manipulações de bytes em um formato universal.
  • Não há comparação entre a velocidade de seu testador e a do testador padrão.
  • É razoável usar seu testador para essa finalidade também

Agradecimentos ao autor!

Por que o FrameNext é usado sem o while?

Seu próprio testador sem pipelines adicionais será mais rápido do que o padrão. Além de pesquisa. Além da possibilidade de trabalhar em uma nuvem. Portanto, verifica-se que não há muitas opções se quisermos usar a computação em nuvem de forma muito eficaz. É claro que você precisa pagar por tudo. E não se trata de usar algo assim para negociações reais. Mas escrever algo simples e testá-lo rapidamente é a melhor coisa. Veja a variante de teste da estratégia sobre médias - ela foi escrita muito rapidamente, mas os resultados, mesmo sem comissões e derrapagens, não são bons. É necessário um testador para esses testes.

 

Por algum motivo, todos prestam atenção apenas ao testador no artigo, mas ninguém falou sobre o analisador ainda. E por nada. Considero o analisador não menos importante e talvez até mais interessante do que o próprio testador. Por exemplo, esse analisador pode ser integrado ao teste de um testador de estratégia regular e obter o formato de relatório que desejamos.

Também gostaria de observar que, graças ao armazenamento de informações completas sobre cada execução, basta otimizar uma vez e depois estudar os resultados como e onde quiser. Isso não pode ser dito sobre o testador interno; as informações sobre as execuções geradas por ele são muito gerais, e é impossível recriar uma imagem de cada execução usando-o.

Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
  • www.metatrader5.com
Тестер стратегий позволяет тестировать и оптимизировать торговые стратегии (советники) перед началом использования их в реальной торговле. При тестировании советника происходит его однократная прогонка с начальными параметрами на исторических данных. При оптимизации торговая стратегия прогоняется несколько раз с различным набором параметров...
 
Vasiliy Sokolov:

Bem, como você usará a nuvem MetaTrader no Python? Até mesmo como você deseja executar um script python no MT?


Não podemos usar a nuvem, mas não poderemos usá-la para otimização automática, mesmo com o Expert Advisor em execução. Você pode executar um script python como este.

Quero dizer, o ponto principal é que os Expert Advisors devem ser capazes de se otimizar sozinhos, se entendi corretamente... não apenas rapidamente.
CreateProcess function (Windows)
  • msdn.microsoft.com
Creates a new process and its primary thread. The new process runs in the security context of the calling process. If the calling process is impersonating another user, the new process uses the token for the calling process, not the impersonation token. To run the new process in the security context of the user represented by the impersonation...
 
Maxim Dmitrievsky:

Não podemos usar a nuvem, mas não podemos usá-la para otimização automática, mesmo com o Expert Advisor em execução. Para executar um script Python como este.

Bem, o ponto principal é que os Expert Advisors devem ser capazes de se otimizar sozinhos, se eu entendi corretamente... e não apenas rapidamente.

Esse é um tópico um pouco diferente.

 
Vasiliy Sokolov:

Esse é um tópico um pouco diferente.


Bem, se você pensar na ideologia... por que precisamos de uma otimização super rápida se, de qualquer forma, temos que fazer isso manualmente?

 
Vasiliy Sokolov:

Por algum motivo, todos prestam atenção apenas ao testador no artigo, mas ninguém falou sobre o analisador ainda. E por nada. Considero o analisador não menos importante e talvez até mais interessante do que o próprio testador. Por exemplo, esse analisador pode ser integrado ao teste de um testador de estratégia regular e obter o formato de relatório que desejamos.

Também gostaria de observar que, graças ao armazenamento de informações completas sobre cada execução, basta otimizar uma vez e depois estudar os resultados como e onde quiser. Não se pode dizer o mesmo do testador interno, pois as informações sobre as execuções formadas por ele são muito gerais, e é impossível recriar a imagem de cada execução por meio dele.

Não há declarações sobre esse tópico de minha parte, porque implementei esse tipo de coisa na KB uma vez.

 
Vasiliy Sokolov:

Seu próprio testador sem tubulação adicional será mais rápido do que o padrão. Mais pesquisa. Além da possibilidade de trabalhar na nuvem. Portanto, verifica-se que, na verdade, não há muitas opções se quisermos usar a computação em nuvem de forma muito eficaz. É claro que você tem que pagar por tudo. E não se trata de usar algo assim para negociações reais. Mas escrever algo simples e testá-lo rapidamente é a melhor coisa. Veja a variante de teste da estratégia sobre médias - ela foi escrita muito rapidamente, mas os resultados, mesmo sem comissões e derrapagens, não são bons. É para isso que serve um testador.

Você não está me entendendo. Você está sugerindo escrever um TS para testes em sua API de negociação especificamente para essa finalidade. E isso equivale a usar outras soluções de testador.

E você ignorou a questão dos símbolos personalizados, bem como a comparação de velocidades em números.

 
Vasiliy Sokolov:

Pelo que entendi, os dados não serão perdidos, porque as estatísticas são coletadas por outra instância do programa.

Eles serão perdidos porque essa outra instância do programa não executará o OnTesterDeinit.

 
Vasiliy Sokolov:

Não estou entendendo. Qual é a visão universal?

Modelos. Eu publiquei algo parecido com isso na KB.

O OnTesterPass é passado para a última execução, que carrega o FrameNext. O While não é necessário nesse caso.

OnTesterPass é apenas uma reação ao evento de gravação do próximo quadro no arquivo mqd.

FrameNext está lendo um quadro do mqd-file a partir da posição atual e movendo essa posição para o próximo quadro.


Assim, se o FrameNext não for chamado pelo menos em um dos OnTesterPass, todos os OnTesterPass+FrameNext subsequentes receberão o quadro anterior em vez do quadro que chegou.

Como o artigo é um tutorial, não faria mal nenhum implementar essa nuance no código na forma dos mesmos comentários.