MT4-Tester VS MT5-Tester - página 2

 
fxsaber:

Excesso (100.000 USD no início)

Você tem uma estranha noção de descrever as condições de teste.

Esta abordagem de detalhes lança uma grande sombra sobre todas as suas conclusões subseqüentes.

 
fxsaber:

Isto não funciona agora no MT4.

Funciona agora no MT4.

Provar e explicar tecnicamente como isto é conseguido.


Eu não tenho nenhum objetivo de denegrir o MT5. Estou apenas fazendo uma comparação reprodutível. Certamente o testador MT5 é inatingível em alguns aspectos, mas o MT4 tuning também é capaz de dar coisas que o MT5 não tem, mas que são realmente solicitadas. Vimos que um teste preciso em carrapatos personalizados reais no MT4 é 100% verdadeiro. Bem, e a regulamentação de todos os tipos de configurações (comissão, travessões, regras de ativação de ordens pendentes, etc.) do testador está lá. Em geral, há coisas que ainda não estão implementadas no MT5.

Há ou há provas exatas de que os deslizes e as regras de ativação funcionam exatamente como indicado?

Você pode provar e explicar tecnicamente como um programa externo pode mudar as condições de acionamento do pedido no motor de teste MT4? Não por injeção profunda neste motor?

 
Renat Fatkhullin:

Você tem uma estranha noção de descrever as condições de teste.

Esta abordagem de detalhes lança uma grande sombra sobre todas as suas conclusões subseqüentes.

Se eu não lhe disse algo, não o fiz de propósito. Acho que lhes dei todos os dados antes. Mas vou repeti-lo mais uma vez.

  • Exagero total.
  • Você começa com 100 000 USD.
  • Os intervalos estão nas telas.
  • Não foram estabelecidas condições para a fuga forçada do passe.
  • Os reais carrapatos EURUSD M1 de 2017.04.10 - 2017.04.16 (semana).
  • Somente um agente local (1 núcleo) está habilitado.

 
Existe alguma maneira de realmente medir quantas porcentagens são atribuídas em um determinado teste MT5?
Encriptar parâmetros de teste (resultados) => Enviar para loopback => Decodificar parâmetros de teste (resultados)

Se tirarmos 50 ms do teto, obtemos 260 * 2 * 50 / 1000 = 26 seg.
O que não é muito pouco.
Seria interessante conhecer os números reais.
 

Renat Fatkhullin:
Докажите и объясните технически, как это достигается.

Como isso é tecnicamente alcançado - não sei. Prove-o - não pronto de imediato (eu o farei depois de dormir).

Há ou há provas precisas de que o deslizamento e as regras de ativação são exatamente como declaradas?

Você pode provar e explicar tecnicamente como um programa externo pode mudar as condições de acionamento de pedidos no motor do MT4 testador? Não por injeção profunda neste motor?

O simples fato de que o spread não foi fixado por anos sugere que a injeção é profunda. Esta característica do MT4 é muito popular em muitos fóruns. A única coisa que a desencoraja é que não é livre. Mas o julgamento é pleno, para que todos possam experimentá-lo. De fato, instalei o próprio julgamento há algumas horas para criar este fio condutor.

A construção só pode suportar depois de um pouco de descanso. Na verdade, todos podem verificar as declarações já agora, se desejarem.

 
Primeiros passes 20/260
QR      0       03:29:37.031    Tester  0 : passed in 0:37:27.366
HK      0       03:30:36.307    Tester  1 : passed in 0:00:58.406
MM      0       03:30:40.510    Tester  2 : passed in 0:00:04.196
OF      0       03:30:41.731    Tester  3 : passed in 0:00:01.217
IH      0       03:30:42.538    Tester  4 : passed in 0:00:00.811
MQ      0       03:30:44.880    Tester  5 : passed in 0:00:00.764
LK      0       03:30:45.577    Tester  6 : passed in 0:00:00.687
PL      0       03:30:46.255    Tester  7 : passed in 0:00:00.671
MF      0       03:30:46.929    Tester  8 : passed in 0:00:00.671
GO      0       03:30:47.602    Tester  9 : passed in 0:00:00.671
CO      0       04:15:27.776    Tester  10 : passed in 0:44:40.160
ND      0       04:17:28.477    Tester  11 : passed in 0:01:59.450
HM      0       04:17:34.594    Tester  12 : passed in 0:00:06.099
CK      0       04:17:36.172    Tester  13 : passed in 0:00:01.575
QP      0       04:17:37.080    Tester  14 : passed in 0:00:00.905
LN      0       04:17:37.840    Tester  15 : passed in 0:00:00.765
NG      0       04:17:38.555    Tester  16 : passed in 0:00:00.702
ML      0       04:17:39.244    Tester  17 : passed in 0:00:00.687
RJ      0       04:17:39.925    Tester  18 : passed in 0:00:00.670
CS      0       04:17:40.603    Tester  19 : passed in 0:00:00.671

Parâmetros de entrada

Você pode ver que há freios selvagens quando Shift = 1. Por exemplo, aqui está como o MT4 lida com o passe zero

2017.05.08 04:47:13.779 EURUSD,M1: 1865415 tick events (7292 bars, 1865515 bar states) processed in 0:00:33.541 (total time 0:00:34.289)

Isto é, mais de 60 vezes mais rápido.


SZ

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

Bichos, insetos, perguntas

fxsaber, 2017.04.26 15:08

Favor mostrar o alcance e o passo dos parâmetros otimizados nos logs do otimizador.

E também em registros de agentes tais linhas

NS      0       14:11:00.853    Tester  756 : passed in 0:00:04.789
MJ      0       14:11:03.447    Tester  757 : passed in 0:00:02.574
RM      0       14:11:05.860    Tester  758 : passed in 0:00:02.340

Acompanhar com informações sobre a execução relevante - nome EA e seus parâmetros de entrada.

 
fxsaber:

Pode-se ver que os freios selvagens quando Shift = 1. Por exemplo, aqui está como o MT4 lida com um passe zero

Tornou-se inútil esperar que a otimização terminasse, então parei.

A execução de um passe único zero mostrou (não esperou pela conclusão) que, quando o passe estava em execução, o desempenho do testador caiu muito.

As funções históricas não estão envolvidas.

 
fxsaber:

Se eu não disse bem, não quis dizer isso. Acho que dei a vocês todos os detalhes antes. Mas vou dizer novamente.

  • Excesso total de mortes.
  • A partir de 100.000 USD.
  • Os intervalos estão nas telas.
  • Não foram estabelecidas condições para a fuga forçada do passe.
  • Os reais carrapatos EURUSD M1 de 2017.04.10 - 2017.04.16 (semana).
  • Somente um agente local (1 núcleo) habilitado.

Ok, aqui estão meus resultados sobre o mesmo (somente servidor Alpari-MT5-Demo):

  • Windows 10 Pro, Intel Xeon E5-2690 @ 2.60GHz

  • 1 núcleo: 27 mins 55 segs
    2017.05.08 05:13:09.636 Tester          optimization finished, total passes 260
    2017.05.08 05:13:09.647 Statistics      optimization done in 27 minutes 55 seconds
    2017.05.08 05:13:09.647 Statistics      local 260 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
    

  • 8 núcleos: 6 minutos 11 segundos
    2017.05.08 04:38:18.663 Tester          optimization finished, total passes 260
    2017.05.08 04:38:18.674 Statistics      optimization done in 6 minutes 11 seconds
    2017.05.08 04:38:18.674 Statistics      local 260 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
    
  • 24 núcleos: 3 minutos 33 segundos
    2017.05.08 05:17:40.990 Tester          optimization finished, total passes 260
    2017.05.08 05:17:41.000 Statistics      optimization done in 3 minutes 33 seconds
    2017.05.08 05:17:41.000 Statistics      local 260 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
    

Claramente não faz sentido otimizar em um único núcleo em MT5 e mesmo em 8 núcleos tudo vai muito rápido. Tenho certeza de que seus 14 minutos em MT4 são feitos em uma CPU fechada em potência por núcleo, para que os tempos possam ser comparados. Tenho até mesmo uma freqüência por núcleo de apenas 2,6 Ghz.

Por que não há redução linear no tempo? Porque as tarefas são desiguais por causa do número de ofícios. Alguns passes têm 100 negócios (o cálculo leva um segundo), e alguns têm 230.000 negócios (até 50 segundos). Como a velocidade de cálculo é totalmente determinada por quem e como as passagens mais longas são distribuídas, o caminho crítico em pacotes não é muito reduzido.


Seus atrasos se devem puramente ao escaneamento ineficiente do histórico de transações na versão de lançamento. Os casos de desaceleração são passes com 200.000 ou mais negócios.

Todo o exemplo do Expert Advisor é escrito para que ele faça apenas uma coisa - ele escaneia toda a história dos negócios em cada tick de uma maneira terrivelmente ineficiente. Ou seja, 1,8 milhões de rescisões completas de toda a história por um passe. E mais, o código de seleção MT5 não é nativo, mas uma muleta na forma de embalagem estilo MT4, que dá ainda mais despesas.


Como mostrei anteriormente, reescrevemos drasticamente a operação e a amostragem de grandes histórias comerciais e agora não há diferença na profundidade da história.

Anexou o último build 1598 para verificar, onde tudo corre rápido. Basta substituir os arquivos no diretório MetaTrader 5.

Aqui está o registro dos passes:

OK      0       04:45:17.505    History EURUSD,M1: history cache allocated for 484457 bars and contains 473528 bars from 2016.01.04 00:00 to 2017.04.07 23:59
IR      0       04:45:17.540    History EURUSD,M1: history begins from 2016.01.04 00:00
RF      0       04:45:24.469    Tester  0 : passed in 0:00:07.188
KO      0       04:45:26.727    Tester  1 : passed in 0:00:02.188
CQ      0       04:45:27.857    Tester  2 : passed in 0:00:01.109
QJ      0       04:45:28.758    Tester  3 : passed in 0:00:00.890
NL      0       04:45:29.525    Tester  4 : passed in 0:00:00.750
ME      0       04:45:30.237    Tester  5 : passed in 0:00:00.688
LO      0       04:45:30.923    Tester  6 : passed in 0:00:00.671
RP      0       04:45:31.612    Tester  7 : passed in 0:00:00.672
NJ      0       04:45:32.363    Tester  8 : passed in 0:00:00.734
RS      0       04:45:33.065    Tester  9 : passed in 0:00:00.687
MK      0       04:45:42.777    Tester  10 : passed in 0:00:09.703
HP      0       04:45:45.928    Tester  11 : passed in 0:00:03.094
EN      0       04:45:47.354    Tester  12 : passed in 0:00:01.406
HG      0       04:45:48.313    Tester  13 : passed in 0:00:00.953
LL      0       04:45:49.110    Tester  14 : passed in 0:00:00.781
QJ      0       04:45:49.828    Tester  15 : passed in 0:00:00.703
NS      0       04:45:50.523    Tester  16 : passed in 0:00:00.688
MH      0       04:45:51.215    Tester  17 : passed in 0:00:00.672
DF      0       04:45:51.901    Tester  18 : passed in 0:00:00.672
FO      0       04:45:52.646    Tester  19 : passed in 0:00:00.735
NE      0       04:46:04.884    Tester  20 : passed in 0:00:12.219

Um passe zero com 216k trocas (Shift=1, Limite=5 parâmetros) trabalhado em 7 segundos.

Arquivos anexados:
MetaTester64.zip  7571 kb
terminal64.zip  14201 kb
 
Renat Fatkhullin:

Todo o exemplo do Expert Advisor está escrito de tal forma que ele faz apenas uma coisa - escaneia de forma assustadoramente ineficiente todo o histórico do negócio em cada tick. Isso é 1,8 milhões de rescisões completas de toda a história do comércio por uma passagem. E o código MT5 não é nativo, mas uma muleta na forma de invólucro estilo MT4, o que dá ainda mais despesas.

Comprovação
bool Func1( datetime, datetime ){ return false; };
bool Func2( long ){ return false; };

#define HistorySelect Func1
#define HistorySelectByPosition Func2

#include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006

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

MT4-Tester VS MT5-Tester

fxsaber, 2017.05.08 01:11

Se houver qualquer dúvida de que a desaceleração do MT5 é causada pelo uso de uma biblioteca de terceiros, aqueles dispostos podem reescrever a lógica simples do MT4 deste EA na MQL5 à sua própria maneira e testar a hipótese.
 
Renat Fatkhullin:

Como mostrei anteriormente, reescrevemos drasticamente a operação e a amostragem de grandes histórias comerciais e agora não há nenhuma diferença na profundidade da história.

Anexei o último build 1598 para verificar, onde tudo funciona rapidamente. Basta alterar os arquivos no diretório MetaTrader 5.

1598 funciona muito mais rápido do que 1596. E funciona mesmo em lugares onde as funções da História não são utilizadas de forma alguma. Aparentemente, o terminal causou aquelas funções lentas em suas entranhas durante a corrida.


Otimizando o MT4

2017.05.08 02:35:33.074 Lucky: optimization started
2017.05.08 02:49:51.431 Lucky: optimization finished in 0:14:18
2017.05.08 02:49:51.436 There were 260 passes done during optimization


Otimizando o MT5

2017.05.08 07:40:38.429 Tester  Experts\MT4Orders\Lucky.ex5 on EURUSD,M1 from 2017.04.10 00:00 to 2017.04.16 00:00
2017.05.08 07:40:38.597 Tester  EURUSD: preliminary downloading of history ticks started, it may take quite a long time
2017.05.08 07:40:39.600 Tester  EURUSD: preliminary downloading of history ticks completed, 100.38 Kb in 0:01.170 (85.80 Kb/sec)
2017.05.08 07:40:39.600 Tester  EURUSD: ticks data begins from 2016.11.01 00:00
2017.05.08 07:40:39.600 Tester  complete optimization started
2017.05.08 07:40:39.600 Tester  size of initial task batch is 260
2017.05.08 07:40:39.612 Core 1  agent process started
2017.05.08 07:40:39.612 Core 1  connecting to 127.0.0.1:3000
2017.05.08 07:40:41.620 Core 1  connected
2017.05.08 07:40:41.622 Core 1  authorized (agent build 1598)
2017.05.08 07:40:42.771 Core 1  common synchronization completed
2017.05.08 07:40:42.797 Core 1  EURUSD: ticks synchronized already [43 bytes]
2017.05.08 08:04:54.332 Tester  optimization finished, total passes 260
2017.05.08 08:04:54.342 Statistics      optimization done in 24 minutes 16 seconds
2017.05.08 08:04:54.342 Statistics      local 260 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
2017.05.08 08:04:54.342 Core 1  connection closed


Agora o MT5 é 1,7 vezes mais lento que o MT4.


ZS Nem todas as pistas combinam perfeitamente. Portanto, um dos três é definitivamente mentiroso (MT4+TDS, MT5, MT4Orders). Vamos pesquisar.

Razão: