Errori, bug, domande - pagina 2150

 
Vladislav Andruschenko:

Terminale 1755

Quando si lavora con l'Expert Advisor e si compila - la sua versione aggiornata appare sul grafico - tutto è ok

ma nel tester seleziono questo EA e dopo la compilazione viene selezionato un altro EA (precedente).

Dopo il riavvio - tutto è OK.

Problema antico.

 

Alcuni bug di tester_file. Riproduzione passo dopo passo

  1. Lascia un agente locale funzionante e pulisci la sandbox del terminale - MQL5\Files\*.*
  2. Compilare EA
    #property tester_file __FILE__
    
    sinput uint Range = 100; // Входной параметр для Оптимизации
    
    #define  SETRANGE(A, START, STEP, END) ParameterSetRange(#A, true, A, START, STEP, END)
    
    void OnTesterInit()
    {
      SETRANGE(Range, 0, 1, Range);
      
      const int handle = FileOpen(__FILE__, FILE_WRITE | FILE_BIN );
      
      // Создаем файл на 4 байта
      if (handle != INVALID_HANDLE)
      {
        FileWriteInteger(handle, 0);
        
        FileClose(handle);
      }
    }
    
    void OnTesterDeinit() { ChartClose(); }
    
    #define  TOSTRING(A) #A + " = " + (string)(A) + " "
    
    void OnTesterPass()
    {
      ulong Pass;
      string Name;
      long ID;
      double dOnTester;
      uchar Data[];
    
      while (FrameNext(Pass, Name, ID, dOnTester, Data))
        Print(TOSTRING(Pass) + TOSTRING(ID)); // Распечатываем размер файла на Агенте
    
      return;
    }
    
    double OnTester()
    {
      const int handle = FileOpen(__FILE__, FILE_READ | FILE_WRITE | FILE_BIN );
    
      const int i = (int)((handle != INVALID_HANDLE) ? FileSize(handle) : -1);
      
      // Делаем файл 4 байта, делаем - 8.
      if ((handle != INVALID_HANDLE) && (FileSize(handle) == INT_VALUE))
      {
        FileSeek(handle, 0, SEEK_END);
        FileWriteInteger(handle, 0);
              
        FileClose(handle);
      }
    
      uchar Data[];    
      FrameAdd(NULL, i, 0, Data); // Передаем размер файла до изменений.
      
      return(0);
    }

  3. Facendo questo, un messaggio apparirà nel file di log del Tester dicendo che tester_file non esiste ancora
    2018.02.28 08:37:29.574 Moving Average  tester_file 'Moving Average.mq5' is not exist
    2018.02.28 08:37:29.574 Moving Average  tester_file 'Moving Average.mq5' is not exist

  4. Esegui l'Expert Advisor attraverso i prezzi di apertura nello Strategy Tester in modalità Ottimizzazione Forza Bruta Completa. Vedremo nel registro del Tester
    2018.02.28 21:20:24.424 Statistics      optimization done in 0 minutes 03 seconds
    2018.02.28 21:20:24.424 Statistics      local 101 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)

  5. Riavvia immediatamente questa stessa ottimizzazione premendo "Start". Otterremo il rallentamento dell'Ottimizzazione di 30 volte - bug!
    2018.02.28 21:23:02.219 Statistics      optimization done in 1 minutes 06 seconds
    2018.02.28 21:23:02.219 Statistics      local 101 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)


  6. I risultati del Frame-advisor mostreranno che il file esistente non viene trasferito, poiché il processo di compilazione è stato effettuato senza di esso (vedi passo 3). Un bug o una cimice?
  7. Ricompilare l'Expert Advisor. In questo caso, non riceveremo i messaggi che sono mostrati in p. 3, il che è corretto.
  8. Riavvia l'ottimizzazione. FrameAdvisor mostrerà che il file tester_ è stato trasferito all'agente
    2018.02.28 21:28:33.449 Moving Average (EURUSD,M1)      Pass = 0 ID = 4 
    2018.02.28 21:28:33.472 Moving Average (EURUSD,M1)      Pass = 1 ID = 8 
    2018.02.28 21:28:33.495 Moving Average (EURUSD,M1)      Pass = 2 ID = 8 
    2018.02.28 21:28:33.519 Moving Average (EURUSD,M1)      Pass = 3 ID = 8 

  9. Eseguite nuovamente l'ottimizzazione. Avremo un rallentamento, come al punto 4. Ma in Frame-mode, vedremo che tester_file non è stato passato all'Optimizer al secondo avvio - bug!
    2018.02.28 21:28:43.727 Moving Average (EURUSD,M1)      Pass = 0 ID = 8 
    2018.02.28 21:28:43.797 Moving Average (EURUSD,M1)      Pass = 1 ID = 8 
    2018.02.28 21:28:43.834 Moving Average (EURUSD,M1)      Pass = 2 ID = 8 
    2018.02.28 21:28:43.864 Moving Average (EURUSD,M1)      Pass = 3 ID = 8 


  10. Eseguiremo la terza ottimizzazione e otterremo i risultati nel passo 8.
  11. In quarto luogo, otteniamo i risultati nel passo 9.
  12. Così ogni esecuzione dispari di Ottimizzazione vi dà il risultato del passo 8, l'ottimizzazione di numero pari vi dà il risultato del passo 9.

Cosa fa l'EA. In modalità frame, in OnTesterInit, crea un file di 4 byte e lo invia attraverso il meccanismo tester_file all'agente. L'agente lo apre e se vede che la dimensione del file è di 4 byte, lo aggiunge a 8 byte. L'agente stesso passa la dimensione originale del file in byte attraverso il frame. In questo modo si controlla che il file sia trasferito al primo passaggio di Optimizer, e gli altri passaggi lavorano con il file, che si trova temporaneamente nella Sandbox dell'agente stesso.

In generale, siamo riusciti a riprodurre alcuni bug.

 

questa domanda potrebbe essere già stata posta, ma nondimeno:

è possibile chiamare la finestra dei parametri dell'indicatore in MQL5?

 

Forum sul trading, sistemi di trading automatico e test di strategie di trading

Discussione su "Consulente per il trading multipiattaforma: Introduzione

fxsaber, 2016.08.17 16:51

Passiamo all'esempio di StringConcatenate. Difficile capire le persone che usano questa funzione in MT4/5. Non solo è ingombrante, ma non è nemmeno chiaro. La concatenazione delle stringhe è SEMPRE stata realizzata in entrambe le piattaforme tramite l'operatore +. Quindi usare StringConcatenate per le stringhe è paragonabile a usare la funzione "NumberSummary" per ottenere la somma dei numeri. Assurdo, in breve.

Non solo è assurdo, ma non è nemmeno multipiattaforma.

 
Andrii Djola:

questa domanda potrebbe essere già stata posta, ma nondimeno:

è possibile chiamare la finestra dei parametri dell'indicatore in MQL5?

Per quanto ne so, non esiste una funzione simile in MQL.
Ma attraverso WinAPI puoi aprire la lista di tutti gli indicatori, guardare nell'albero degli indicatori e trovare quello giusto...

 
Andrii Djola:

forse questa domanda è già stata fatta, ma comunque:

è possibile chiamare la finestra dei parametri dell'indicatore in MQL5?

Service Desk ha promesso di pensare a una tale funzione.

 

Perché succede questo?

2018.03.01 06:54:04.342 Tester versione di debug di "MQL5\Experts\MyExpert.ex5" può essere ottimizzata solo su agenti locali, no Cloud, no Farm

Come posso rimediare?


 
Nexxtor:

Perché succede questo?

2018.03.01 06:54:04.342 Tester versione di debug di "MQL5\Experts\MyExpert.ex5" può essere ottimizzata solo su agenti locali, no Cloud, no Farm

Come posso rimediare?


Compila prima, poi esegui l'ottimizzazione.

 
Nella cartella "Bases\MetaQuotes-Demo\history\" è apparsa una cartella con 2018.hcc relativa al simbolo personalizzato. Bug.
 

In continuazione di questa grande caratteristica del Tester. Eseguendo l'ottimizzazione, ottengo questo


Registro Core1

KE      0       14:23:25.855    Startup MetaTester 5 x64 build 1755 (18 Jan 2018)
KP      0       14:23:25.862    Server  MetaTester 5 started on 127.0.0.1:3000
OJ      0       14:23:25.862    Startup initialization finished
JQ      0       14:23:25.871    127.0.0.1       login (build 1755)
HG      0       14:23:38.760    Network 38520 bytes of account info loaded
JP      0       14:23:38.760    Network 1482 bytes of tester parameters loaded
QG      0       14:23:38.760    Network 2236 bytes of input parameters loaded
OP      0       14:23:38.771    Network 4605 bytes of symbols list loaded
NK      0       14:23:38.771    Tester  expert file added: Experts\fxsaber\Test.ex5. 115516 bytes loaded
NM      0       14:23:38.771    Network 1368 bytes of optimized inputs info loaded
CH      0       14:23:38.774    Tester  successfully initialized
HL      0       14:23:38.774    Network 118 Kb of total initialization data received
JF      0       14:23:38.775    Tester  Intel Core i7-2700 K  @ 3.50 GHz, 16301 MB
KL      0       14:23:38.775    Tester  optimization pass 0 started (batch of 30 tasks)


Registro Core2.

CQ      0       14:25:27.983    Startup MetaTester 5 x64 build 1755 (18 Jan 2018)
MD      0       14:25:27.988    Server  MetaTester 5 started on 127.0.0.1:3001
FO      0       14:25:27.989    Startup initialization finished
FM      0       14:25:29.021    127.0.0.1       login (build 1755)
HK      0       14:25:29.026    Network 38520 bytes of account info loaded
IL      0       14:25:29.026    Network 1482 bytes of tester parameters loaded
RK      0       14:25:29.026    Network 2236 bytes of input parameters loaded
QL      0       14:25:29.029    Network 4605 bytes of symbols list loaded
PG      0       14:25:29.030    Tester  expert file added: Experts\fxsaber\Test.ex5. 115516 bytes loaded
DI      0       14:25:29.030    Network 1368 bytes of optimized inputs info loaded
HL      0       14:25:29.032    Tester  successfully initialized
GP      0       14:25:29.032    Network 118 Kb of total initialization data received
JR      0       14:25:29.032    Tester  Intel Core i7-2700 K  @ 3.50 GHz, 16301 MB
KI      0       14:25:29.033    Tester  optimization pass 180 started (batch of 30 tasks)


Tutti gli agenti erano pronti. Non c'era nessun visualizzatore. Core2 (e Core2 - vedi schermata) è partito due minuti dopo l'avvio. Risolviamo il problema!