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

 

As teclas de atalho de controlo de velocidade não funcionam no Viewer.



ZS Está a funcionar. Aparentemente, é uma espécie de bicho traiçoeiro.

 
Tendo testado o Expert Advisor em carraças reais com diferentes corretores no MT5 com a qualidade de modelagem de 99-100% com os mesmos parâmetros de entrada, obtive resultados absolutamente diferentes: desde lucros cósmicos a perdas. Antes disso, deixei propositadamente o MT4 porque é mais difícil alcançar a mesma qualidade de modelagem ali. Então qual foi o resultado? Como se comportaria o Consultor Especialista no comércio real? Talvez alguém me dê uma boa dica?
 
ganri:
Tendo testado o Expert Advisor em carraças reais em diferentes corretores utilizando o MT5 com a qualidade de modelagem de 99-100% com os mesmos parâmetros de entrada, obtive resultados absolutamente diferentes: desde um lucro cósmico até uma perda. Antes disso, deixei propositadamente o MT4 porque é mais difícil alcançar a mesma qualidade de modelagem ali. Então qual foi o resultado? Como se comportaria o Consultor Especialista no comércio real? Talvez alguém me dê uma boa dica?

O testador+consultor é uma função matemática que atribui um número (lucro) a cada vector (séries numéricas - citações).

De forma correspondente, (em geral) diferentes vectores significam lucros diferentes. E estes lucros não têm de obedecer a nenhuma regra (por exemplo, ser positivos).


Corretores diferentes significam vectores diferentes (aspas). Não importa se são carraças, barras, ou outra coisa qualquer. O que importa é que os vectores são diferentes.

 
fxsaber:

O testador+consultor é uma função matemática que atribui um número (lucro) a cada vector (séries numéricas - citações).

De forma correspondente, (em geral) diferentes vectores significam lucros diferentes. E estes lucros não têm de obedecer a nenhuma regra (por exemplo, ser positivos).


Corretores diferentes significam vectores diferentes (aspas). Não importa se são carraças, barras, ou outra coisa qualquer. O principal é que os vectores são diferentes.

Tanto quanto sei, nesta situação, devemos escolher o corretor que tem os melhores resultados nos testes da EA e trabalhar com ela. Obrigado.

 

Em ME é lógico separar estas definições de depuração.

Por exemplo, deve depurar no Terminal em EURUSD, e no Testador em EURUSD_Custom. Agora é impossível configurá-lo dessa forma.

Talvez faça sentido criar para o Testador um campo de texto de definições onde possamos introduzir tais definições.

[Tester]
Period=M1
Optimization=0
Model=0
FromDate=2019.07.22
ToDate=2019.07.24
ForwardMode=0
Deposit=10000
Currency=USD
ProfitInPips=0
Leverage=100
ExecutionMode=0
OptimizationCriterion=6
Visual=1

Teremos então uma flexibilidade total de configurações. O GUI não está sobrecarregado.

Cadeia de pesquisa: Uluchshenie 001.

 
Apenas um Agente está habilitado. A sua janela de visualização, uma vez feita, não está fechada. No Testador, a Optimização é seleccionada e iniciada.
2020.02.15 11:23:01.818 Tester  complete optimization started
2020.02.15 11:23:01.855 Core 1  agent still started in visual mode

O botão vermelho Stop permanece aceso mesmo que se feche o Viewer. Nada acontece, é preciso premir à mão - Stop. Depois disso, dá.

2020.02.15 11:25:52.278 Tester  optimization finished, total passes 0
2020.02.15 11:25:52.278 Statistics      optimization done in 2 minutes 51 seconds
2020.02.15 11:25:52.279 Tester  stopped by user

E até cria um ficheiro opt-file com zero passes.


Provavelmente, é necessário corrigir o comportamento aqui.

Cadeia de pesquisa: Uluchshenie 002.
 

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

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

fxsaber, 2020.02.11 01:58

Há muito que se procurou a causa do estranho comportamento do testador em carraças reais. Encontrei-o.
const bool Init = EventSetTimer(1);

void Func()
{
  static datetime PrevTime = 0;
  
  const datetime time = TimeTradeServer();
  
  if (time < PrevTime)
    DebugBreak(); // Срабатывает
  
  PrevTime = time;
}

void OnTick()
{
  Func();
}

void OnTimer()
{
  Func();
}

O tempo do servidor avança e depois regressa. Acontece no servidor de comércio real, mas consegui criar reprodução no símbolo personalizado.


Corre

sinput datetime inDateFrom = D'2020.01.01';

void OnStart()
{
  const string Name = "TEMP12345";                                                           // Имя кастомного символа
  const string SymbOrig = "EURUSD";                                                          // Имя оригинального символа

  MqlTick Ticks[];
  
  const int Size = CopyTicksRange(SymbOrig, Ticks, COPY_TICKS_ALL, (long)inDateFrom * 1000); // Считали EURUSD-тики.
    
  if ((Size > 0) && CustomSymbolCreate(Name, NULL, SymbOrig) && SymbolSelect(Name, true))    // Создали символ на основе EURUSD.
  {
    CustomTicksReplace(Name, 0, LONG_MAX, Ticks);                                            // Поместили в него историю EURUSD.        
    
    CustomRatesDelete(Name, D'2020.01.03 23:00', D'2020.01.04 00:00');                       // Удалили несколько баров.
  }
}


Será criado um símbolo com histórico de carrapatos, mas com várias barras apagadas. Depois começamos a depurar a EA acima neste modo.

[Tester]
Symbol=TEMP12345
Period=M1
Optimization=0
Model=4
FromDate=2020.01.01
ToDate=2020.01.08
ForwardMode=0
Deposit=100000
Currency=USD
ProfitInPips=1
Leverage=100
ExecutionMode=0
OptimizationCriterion=6


Pára.

Podemos ver que o tempo passou um segundo ciclo de tempo.

Cadeia de pesquisa: Oshibka 002.

 

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

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

fxsaber, 2020.02.01 13:43

Mesmo esta EA é mais do dobro da lenta do Virtual no modo pips.

input int inFakeRange = 0;
sinput int inOffset = 10000;

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

#define  Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK)

void OnTick()
{
  static long Ticket = -1;
  
  if (Ticket == -1)
    Ticket = OrderSend(_Symbol, OP_BUYLIMIT, 1, Ask - inOffset * _Point, 0, 0, 0);
}

Porque é que isto está a acontecer? Todo o Expert Advisor está no primeiro tick ao definir BuyLimit. Nada mais!

Cadeia de pesquisa: Uluchshenie 003.
 
Fixe!
2020.02.18 13:24:06.618 Core 1  pass 0 returned result 0 in 0:00:05.288 + history synchronization 0:00:03.098
 

Não é possível definir o tamanho do carrapato para menos ou igual a um.

Se prescrever e depois entrar novamente, o valor é zero. Para valores superiores a um, tudo está bem.

Cadeia de pesquisa: Uluchshenie 004.