MetaTrader 5 Strategy Tester: bugs, bugs, sugestões para melhorias - página 64

 

Parece que ao iniciar o teste (ou seja, clicando em "Start" no Testador de Estratégia), o agente Testador não está a copiar os ficheiros necessários (incluindo a DLL) para a sua pasta interna MQL{Libraries folder. Identifiquei dois eventos:

Se eu tiver um ficheiro "Test.dll" no meu EA, então

1) Strategy Tester queixa-se de que o ficheiro Test.dll.ex5 não foi encontrado

2) O agente Test não copia Test.dll para a sua pasta interna e, portanto, o Testador de Estratégia queixa-se de que Test.dll não pode ser encontrado

% appdata% Roaming Metaquotes Tester <MT5 ID> Agente-127.0.0.1-3000 MQL5 Bibliotecas

 
Rashid Umarov:

Não houve proibição

Havia um grave bloqueio de IP - o servidor não estava disponível. Era impossível entrar através de um anonimizador, porque a palavra-chave era suposto estar errada.

Em geral, protecção automática padrão contra utilizadores inescrupulosos.

 
Luis:

Parece que ao iniciar o teste (ou seja, clicando em "Start" no Testador de Estratégia), o agente Testador não está a copiar os ficheiros necessários (incluindo a DLL) para a sua pasta interna MQL{Libraries folder. Identifiquei dois eventos:

Se eu tiver um ficheiro "Test.dll" no meu EA, então

1) Strategy Tester queixa-se de que o ficheiro Test.dll.ex5 não foi encontrado

2) O agente Test não copia Test.dll para a sua pasta interna e, portanto, o Testador de Estratégia queixa-se de que Test.dll não pode ser encontrado

% appdata% Roaming Metaquotes Tester <MT5 ID> Agente-127.0.0.1-3000 MQL5 Bibliotecas

Tenho o mesmo erro no Testador de Estratégia!

2020.02.25 02:03:35.725 Testador file ***.dll.ex5 open error [2]

Se renomear a biblioteca (adicionar a extensão .ex5), obtém outro erro:

2020.02.25 02:09:32.567 2020.02.18 00:00:00 Não é possível chamar 'Receive_Information', '***.dll' não está carregado

2020.02.25 02:09:32.568 2020.02.18 00:00:00 chamada de função de importação não resolvida



 
Slava:

Reproduzido exactamente com o botão de paragem premido.

Se precisar de fazer uma optimização responsável, é provavelmente melhor fazê-lo depois de reiniciar o Terminal, sem premir o botão Stop.

 
fxsaber:

Se precisar de fazer uma optimização responsável, é provavelmente melhor fazê-lo depois de reiniciar o Terminal, sem premir o botão Stop.

Possivelmente. Mas não devemos depender disso.

Este comportamento (com o premir do botão de paragem) foi corrigido, e a correcção está incluída no último lançamento

 
Slava:

Possivelmente. Mas não devemos depender disso.

Este comportamento (com o botão de paragem) foi corrigido, e a correcção está incluída no último lançamento

Depois é preciso procurar novamente a razão pela qual o passe de optimização não é o mesmo que o passe único.

 
fxsaber:

Então temos de procurar novamente a razão pela qual o passe de optimização não é o mesmo que o passe único.

O perito em testes está a contar milissegundos de carraças dando discrepâncias?

Foi com isso que detectámos o problema, e depois verificámo-lo com o mesmo Conselheiro Especialista

 
Slava:

O teste EA conta milissegundos de carrapatos dando discrepâncias?

Apanhou o problema e depois foi verificado pelo mesmo perito

Esta EA em 2340 não mostrou mais discrepâncias.


O desajuste do passe ocorreu na EA ao vivo. Vou utilizar o método que se provou da última vez.

Fórum sobre comércio, sistemas automatizados de comércio e testes estratégicos

MetaTrader 5 Strategy Tester: bugs, bugs, sugestões para melhorias

fxsaber, 2020.02.20 08:57

Comparei as estatísticas de tempo obtidas durante a optimização da AG. E a pilha da passagem única.


No estado quadro, a execução passa por carraças que não estão na história: reparei imediatamente que há muitos acordos/ordens, que são executados em exactamente um segundo.

Por exemplo, um único passe na história tem uma entrada em 2019.06.04 02:00:00.206, e um passe de enquadramento em 2019.06.04 02:00:00.000(a história do tick não tem tick nessa altura).


Demora muito tempo a fazer isto...

 
Ambiente de experimentação:

MT5 construir 2342 beta
uma EA sem ordem de mercado (apenas ordem pendente)
16487771 ticks dados de símbolos personalizados
4 agentes locais de ensaio
4 núcleo físico da CPU, 32g ram, Windows 7 x64


Método experimental:

Estabelecer uma operação de tranding virtual correspondente para cada operação comercial real.

Usando as funções FrameAdd () e FrameNext () para produzir alguma informação do processo de optimização e registá-la num ficheiro de texto local (Excel A a T).


Resultado da experiência:

Há menos de 20% de hipóteses de que a tarefa de optimização seja concluída na perfeição, com os mesmos resultados correctos de um único teste.

Mas na grande maioria dos casos, todos os resultados devolvidos pela tarefa de optimização estão errados.



Durante um único teste e um teste de optimização bem sucedido, todos os resultados das operações comerciais reais e virtuais são idênticos.

Durante o teste de optimização falhado, apenas as transacções virtuais podem devolver o resultado correcto da transacção, enquanto todos os dados devolvidos pelas operações comerciais reais, tais como o número de transacções e o montante do lucro, estão todos errados.

(Em circunstâncias normais, uma verdadeira operação de negociação chamaria a função OrderSend () correctamente e daria feedback à informação sobre o estado da transacção na OnTradeTransaction () e OnTrade ().

B: número do passe de encomenda
D: quantidade de carraças processadas
F: soma de todos os preços pedidos
H: soma de todos os preços de oferta
J: quantidade de encomendas virtuais pendentes
L: quantidade de comércios virtuais
N: lucro líquido do comércio virtual

P: quantidade de encomendas reais pendentes
R: quantidade de comércios reais
T: lucro líquido do comércio real


Todos os valores da coluna D a N estão correctos (caixa verde) significa assinalar o processamento de dados na tarefa de optimização funciona sempre correctamente.


Valores errados em caixa vermelha:

1. sobre P:
P deve ser exactamente o mesmo que J, porque tanto virtual como real devem contar o número de ordens pendentes sob as mesmas condições prévias.
As pré-condições são cumpridas, introduzir o bloco de código para pendente, P ++ imediatamente. Depois disso, introduzir OrderSend ().
Os resultados extremamente anormais de P significam que as instruções subsequentes às vezes saltam correctamente (J) e às vezes não saltam correctamente quando o programa está a correr nas mesmas condições.

2. sobre R:
R é contado na OnTradeTransaction ().
A ordem em P, se accionada, deve ser contada em R.
Todos os zeros R significam que as actividades comerciais reais no funcionamento da EA nunca entraram na OnTradeTransaction ().
Talvez porque os resultados actuais P são apenas erros aleatórios, não pingentes significativos?

3. sobre T:
O lucro ou perda em T deve provir da posição em R.
Se as posições em R são todas zero, de onde vêm os cálculos de lucro/perda em T?


4. Uma nota final:
O valor de P é muito próximo do valor de "Total Trades" devolvido pelo testador de estratégia, mas não exactamente o mesmo.
Com base nos meus múltiplos testes, parece que o valor de "Total Trades" está sempre na mesma sequência aritmética que o parâmetro de optimização de entrada da EA, e tem o mesmo valor de passo.
É normal que os parâmetros de entrada sejam sequências aritméticas, mas o valor de uma variável cujo significado é completamente irrelevante é também uma sequência aritmética semelhante?

 

Porque é que um moderador não entra aqui a correr e apaga o posto e deixa-o em vez disso:

<DELETED>

Este é um fórum de língua inglesa

Publicar em inglês

? Dois pesos e duas medidas?

Razão: