MetaTrader 5 Strategy Tester: bug, errori, suggerimenti per il miglioramento - pagina 3

 

Dopo l'ottimizzazione, ho trovato questo

In due passaggi, dove i profitti e i ritiri sono molto vicini, il fattore di recupero è molto diverso.


ZZY Il modo grezzo "per pips". Non consiglio di usarlo ancora. Soprattutto se stai ottimizzando.

 

L'ottimizzatore MT5 non ha questa funzione per MT4.



Quindi dovete farlo in questo modo.

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;
  }
// ....


Altrimenti sarà molto brutto e richiederà molto tempo.

 

Dopo l'ottimizzazione, gli agenti non si scaricano per un po' di tempo (un numero decente di minuti) mentre sono pronti al combattimento. Questa è una soluzione davvero bella.

A volte gli agenti consumano molta memoria, che è necessaria dopo l'ottimizzazione. Così ho deciso di liberarlo disabilitandolo.


Tuttavia, non hanno scaricato.


È possibile farli scaricare tramite la voce di menu "Disable" o creare la voce di menu "Unload Forced"?

 
Il rapporto Tester "Maximum position holding time" non tiene conto dei fine settimana?
 

Prestazioni.

Corsa singola
SSD
Corsa singola
RAM-Drive
Secondo passaggio dell'ottimizzatore
Unità SSD/RAM
Passaggio singolo
Virtuale
Ottimizzatore di secondo passaggio
Virtuale
72 secondi 64 secondi 28 secondi 26 secondi 18 secondi


Le corse singole sono state fatte "a caldo" - dopo la prima corsa singola una seconda corsa è stata avviata immediatamente.

Bisogna fare qualcosa per la frenata a corsa singola. È 2,5 volte più lento di Optimizer.

E non si tratta solo di registri ridondanti. Virtual non registra nulla, ma è ancora molto più veloce nell'ottimizzatore.

 

È una buona soluzione nascondere completamente gli intervalli delle modifiche dei parametri di input quando viene selezionata una singola corsa?


Quando carico un file di set, prima era immediatamente visibile da quale ottimizzazione era selezionato. Ora non lo è più.


ZZY Finché non spunti la casella, non puoi vedere la gamma. Questo è diventato molto scomodo. E quando la casella è selezionata, non si può vedere il valore predefinito.

 

Ragazzi, sono stufo dei registri a passaggio singolo. Assolutamente impossibile lavorare con RAM-Drive a causa loro. Gigabyte di spazzatura in pochi passaggi. È una vera seccatura. Il RAM-Drive si intasa molto rapidamente.

Io uso Virtual. Non ho problemi in questo senso. Tuttavia, vorrei risolvere radicalmente questo problema tramite WinAPI.


Potete consigliarmi di mandare automaticamente in crash Tester\Agent-127.0.0.1-300x\logs\*.log prima di eseguire una singola esecuzione? Voglio scrivere una soluzione una volta e dimenticare questa cattiveria per sempre.

Il problema è che anche manualmente questi file non possono essere rimossi perché sono occupati dal Terminale. C'è un'opzione Unlocker. Dovrò vedere se c'è una versione per console.


In generale, qualsiasi aiuto possibile in questo caso.


SZY E cosa dovrebbe fare il limite massimo della dimensione dei logs....

 
fxsaber:

Ragazzi, sono stufo dei registri a passaggio singolo. Assolutamente impossibile lavorare con RAM-Drive a causa loro. Gigabyte di spazzatura in pochi passaggi. È un vero pezzo di merda. Il RAM-Drive si intasa molto rapidamente.

Io uso Virtual. Non ho problemi in questo senso. Tuttavia, vorrei risolvere radicalmente questo problema tramite WinAPI.


Potete consigliarmi di mandare automaticamente in crash Tester\Agent-127.0.0.1-300x\logs\*.log prima di eseguire una singola esecuzione? Voglio scrivere una soluzione una volta e dimenticare questa cattiveria per sempre.

Il problema è che anche manualmente questi file non possono essere rimossi perché sono occupati dal Terminale. C'è un'opzione Unlocker. Dovrò vedere se c'è una versione per console.


In generale, qualsiasi aiuto possibile in questo caso.


SZY E cosa dovrebbe fare il limite massimo della dimensione dei logs....

Proibire la scrittura nella cartella logs?

 
Andrey Khatimlianskii:

Proibire la scrittura nella cartella logs?

Questa opzione non funziona.


Eseguo un tale file batch nella cartella Terminal una volta dopo aver riavviato il computer.

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:


Dopodiché, non viene creato alcun file di log. Finora non ho notato alcun lag dalla parte del Tester. Sembra essere una soluzione che funziona.

 
fxsaber:

Questa opzione non funziona.

Come si fa a vietare la registrazione?

Motivazione: