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

 

Após a optimização, encontrei isto

Em dois passes, onde os lucros e os drawdowns são muito próximos, o factor de recuperação é muito diferente.


ZZY O modo em bruto "por pips". Ainda não recomendo a sua utilização. Especialmente se estiver a optimizar.

 

O optimizador MT5 não tem essa característica MT4.



Portanto, tem de o fazer desta forma.

sinput uint inMaxOrders = 0; // Максимальное количество ордеров.
sinput double inMaxAbsoluteDD = 0; // Максимальная абсолютная просадка

bool IsMaxOrders()
{
#ifdef __MT4ORDERS__
  return(inMaxOrders && MT4ORDERS::LastTradeResult.order > inMaxOrders);
#else
  return(false);
#endif
}

bool IsMaxAbsoluteDD()
{
  static const double StartBalance = AccountInfoDouble(ACCOUNT_BALANCE);

  return(inMaxAbsoluteDD && ((StartBalance - AccountInfoDouble(ACCOUNT_EQUITY)) > inMaxAbsoluteDD));
}

void OnTick()
{
  static const bool IsTester = MQLInfoInteger(MQL_TESTER);
  
  if (IsTester && (IsMaxOrders() || IsMaxAbsoluteDD()))
  {
  #ifdef __MQL5__
    TesterStop();
  #else // __MQL5__
    ExpertRemove();
  #endif // __MQL5__
    
    return;
  }
// ....


Caso contrário será muito mau e demorará muito tempo.

 

Após a optimização, os agentes não descarregam durante algum tempo (um número decente de minutos) enquanto estão em prontidão de combate. Esta é uma solução muito fixe.

Por vezes os agentes consomem muita memória, que é necessária após a Optimização. Por isso, decidiu libertá-la, desactivando-as.


Contudo, eles, não descarregaram.


É possível fazê-los descarregar por item de menu "Desactivar" ou criar item de menu "Descarregar Forçado"?

 
O relatório do Testador "Tempo máximo de manutenção da posição" não tem em conta os fins-de-semana?
 

Desempenho.

Execução única
SSD
Execução única
RAM-Drive
Segundo passe de optimizador
SSD/RAM-Drive
Passe Único
Virtual
Segundo passe Optimizer
Virtual
72 segundos 64 segundos 28 segundos 26 segundos 18 segundos


As corridas simples foram feitas "quentes" - após a primeira corrida simples, foi iniciada imediatamente uma segunda corrida.

Algo tem de ser feito em relação à travagem de marcha única. É 2,5 vezes mais lento do que o Optimizer.

E não se trata apenas de registos redundantes. Virtual não regista nada, mas continua a ser muito mais rápido no optimizador.

 

É uma boa solução esconder completamente os intervalos de alterações dos parâmetros de entrada quando se selecciona uma única execução?


Quando carrego um ficheiro de conjunto, este costumava ser imediatamente visível a partir do qual a optimização era seleccionada. Agora não é.


ZZY Até marcar a caixa, não se consegue ver o intervalo. Isto tornou-se muito inconveniente. E quando a caixa é assinalada, não se consegue ver o valor por defeito.

 

Rapazes, estou farto dos troncos de passe único. Absolutamente impossível de trabalhar com RAM-Drive por causa deles. Gigabytes de lixo em algumas passagens simples. É um verdadeiro pedaço de lixo desagradável. O RAM-Drive fica entupido muito rapidamente.

Eu uso o Virtual. Não tenho problemas com isso neste sentido. No entanto, gostaria de resolver radicalmente este problema através do WinAPI.


Pode aconselhar-me a fazer automaticamente um crash Tester\Agent-127.0.0.1-300x{*.log ficheiros antes de executar uma única execução? Quero escrever uma vez uma solução e esquecer para sempre esta maldade.

O problema é que mesmo manualmente estes ficheiros não podem ser removidos, uma vez que estão ocupados pelo Terminal. Existe uma opção Unlocker. Terei de ver se existe uma versão de consola.


Em geral, qualquer ajuda que eu possa obter neste caso.


SZY E o que deve fazer o limite máximo do tamanho dos troncos....

 
fxsaber:

Rapazes, estou farto dos troncos de passe único. Absolutamente impossível de trabalhar com RAM-Drive por causa deles. Gigabytes de lixo em algumas passagens simples. É um verdadeiro pedaço de lixo desagradável. O RAM-Drive fica entupido muito rapidamente.

Eu uso o Virtual. Não tenho problemas com isso neste sentido. No entanto, gostaria de resolver radicalmente este problema através do WinAPI.


Pode aconselhar-me a fazer automaticamente um crash Tester\Agent-127.0.0.1-300x{*.log ficheiros antes de executar uma única execução? Quero escrever uma vez uma solução e esquecer para sempre esta maldade.

O problema é que mesmo manualmente estes ficheiros não podem ser removidos, uma vez que estão ocupados pelo Terminal. Existe uma opção Unlocker. Terei de ver se existe uma versão de consola.


Em geral, qualquer ajuda que eu possa obter neste caso.


SZY E o que deve fazer o limite máximo do tamanho dos troncos....

Proibir a escrita à pasta de registos?

 
Andrey Khatimlianskii:

Proibir a escrita na pasta dos registos?

Esta opção não funciona.


Executo um ficheiro de lote deste tipo na pasta Terminal uma vez depois de reiniciar o computador.

rem Создали RAM-Drive для Тестера.
imdisk -a -o awe -s 3 G -m Z: -p "/fs:ntfs /q /y /v:MT5Tester"

mkdir z:\Tester
mklink /j Tester z:\Tester

rem Кеш оптимизатора будет сохраняться на диске.
mkdir cache
mklink /j z:\Tester\cache cache

rem Временный RAM-Drive, чтобы на него можно было перенаправить log-папки.
imdisk -a -o awe -s 3 M -m Y: -p "/fs:ntfs /q /y /v:MT5Tester_Logs"

mkdir y:\logs
mklink /j Tester\logs y:\logs

mkdir y:\logs0
mkdir Tester\Agent-127.0.0.1-3000
mklink /j Tester\Agent-127.0.0.1-3000\logs y:\logs0

mkdir y:\logs1
mkdir Tester\Agent-127.0.0.1-3001
mklink /j Tester\Agent-127.0.0.1-3001\logs y:\logs1

mkdir y:\logs2
mkdir Tester\Agent-127.0.0.1-3002
mklink /j Tester\Agent-127.0.0.1-3002\logs y:\logs2

mkdir y:\logs3
mkdir Tester\Agent-127.0.0.1-3003
mklink /j Tester\Agent-127.0.0.1-3003\logs y:\logs3

mkdir y:\logs4
mkdir Tester\Agent-127.0.0.1-3004
mklink /j Tester\Agent-127.0.0.1-3004\logs y:\logs4

mkdir y:\logs5
mkdir Tester\Agent-127.0.0.1-3005
mklink /j Tester\Agent-127.0.0.1-3005\logs y:\logs5

mkdir y:\logs6
mkdir Tester\Agent-127.0.0.1-3006
mklink /j Tester\Agent-127.0.0.1-3006\logs y:\logs6

mkdir y:\logs7
mkdir Tester\Agent-127.0.0.1-3007
mklink /j Tester\Agent-127.0.0.1-3007\logs y:\logs7

rem Убили временный RAM-Drive
imdisk -D -m Y:


Depois disso, não são criados ficheiros de registo. Até agora não reparei em nenhum atraso do lado do Testador. Parece ser uma solução funcional.

 
fxsaber:

Esta opção não funciona.

Como se proíbe a gravação?