Librerie: MultiTester - pagina 44

 

Forum sul trading, sui sistemi di trading automatizzati e sulla verifica delle strategie di trading

Test di 'CopyTicks'

fxsaber, 2024.02.26 12:41 pm

Se CopyTicks si blocca per 60 secondi e restituisce l'errore 4403, provate a cambiare il punto di accesso al server. Anche se il ping verso di esso è meno favorevole.

In questo senso, la selezione automatica di un punto di accesso da parte del terminale è pericolosa.

Senza lanciare questo indicatore (un'istanza per tutto il Terminale), non esco più dal Terminale di combattimento, dove si lavora con CopyTicks.

#include <fxsaber\MultiTester\MTTester.mqh> // https://www.mql5.com/it/code/26132

#property indicator_chart_window
#property indicator_plots 0

input int inIntervalAlert = 5; // Intervallo di timeout degli errori (sec)
input int inMaxPoints = 5;     // Numero di punti del primo server

int OnCalculate( const int rates_total, const int prev_calculated, const int, const double &[] )
{
  static ulong StartTime = GetTickCount64();
  const ulong CurrTime = GetTickCount64();
  
  if (!prev_calculated)
  {
    Alert("Restarted!");
    
    StartTime = CurrTime;
  }
  else if (CheckCopyTicks() != ERR_HISTORY_TIMEOUT)
    StartTime = CurrTime;
  else if (CurrTime - StartTime > (ulong)inIntervalAlert * 1000)
  {
    static int Pos = 0;
    
    const int ServerPoint = Pos++ % inMaxPoints;
        
    Alert("CopyTicks error (timeout > " + (string)(CurrTime - StartTime) +
          " ms). Trying (" + (string)Pos + ") to switch to the " +
          (string)(ServerPoint + 1) + "/" + (string)inMaxPoints + " server point.");

    MTTESTER::SetServerPoint(ServerPoint);
  }

  return(rates_total);
}

int CheckCopyTicks( const string Symb = NULL )
{
  MqlTick Tick;
  MqlTick Ticks[];
  
  ResetLastError();
  
  if (SymbolInfoTick(Symb, Tick))
    CopyTicks(Symb, Ticks, COPY_TICKS_ALL, Tick.time_msc - 1000000, 1);
    
  return(_LastError);
}


2024.10.29 16:07:24.802 CopyTicksHelper (EURUSD,M1)     Alert: CopyTicks error (timeout > 5015 ms). Trying (8) to switch to the 3/5 server point.
2024.10.29 16:07:25.909 CopyTicksHelper (EURUSD,M1)     Alert: Restarted!


L'indicatore fa sì che tutti gli Expert Advisor/script in esecuzione escano contemporaneamente dall'errore di timeout corrispondente. Poi continuano a funzionare normalmente.

 
fxsaber #:

Senza l'esecuzione di questo indicatore (un'istanza per tutto il Terminale), non esco più dal Terminale di combattimento, dove si lavora con CopyTicks.



L'indicatore costringe tutti gli Expert Advisor/script in esecuzione a uscire subito dall'errore di timeout corrispondente. E poi continuano a funzionare normalmente.

Vi prego di fornirmi casi reali in cui avete bisogno di lavorare sempre con CopyTicks in un Expert Advisor. In realtà lo uso solo in OnInit() per ottenere alcuni tick storici per eseguire i filtri digitali. In MQL4 dovevo aspettare diversi minuti prima che i buffer si riempissero.

 
Alexey Volchanskiy #:

Vi prego di fornirmi casi reali in cui un Expert Advisor ha bisogno di lavorare sempre con i CopyTicks.

Non saltare (e non raddoppiare) i tick sul Real, come avviene nel Tester. L'Expert Advisor sul Real riceve esattamente la stessa sequenza di dati di prezzo che riceverà nel Tester quando deciderete di eseguirlo in futuro sull'intervallo passato.

 

Devo essere un completo idiota o mi manca qualcosa.

Se ho un EA che vorrei eseguire un singolo test non visivo (non di ottimizzazione) di ogni giorno per un anno... Quindi ogni giorno è testato con i parametri hardcoded come posso fare? Qualcuno potrebbe scrivere un breve tutorial come.

1. Scaricare la libreria - Installare le istruzioni

2. Scrivere questo codice per selezionare il vostro EA per nome nel vostro ea e tale e tale file.

3. Selezionate qui le date di inizio e fine

4. Specificate qui il periodo e la durata di ogni back test.

5. Aggiungete questi codici aggiuntivi per far sì che tutto funzioni correttamente, inserite gli #inclusi nel posto giusto, ecc.

6. Specificare e salvare i risultati in csv per ogni backtest giornaliero.

Ecc. ecc. ecc.

Ho letto tutti i tuoi brevi esempi e ho esaminato il codice in ogni file e non riesco a trovare alcuna documentazione che descriva i casi d'uso o una guida passo-passo da nessuna parte, potresti per favore aiutarmi a capire questo?


Grazie per aver codificato ciò che tutti volevamo e di cui avevamo bisogno, sei una leggenda e adoro alcuni dei tuoi commenti come "!Did" quando qualcuno ti chiede di correggere qualcosa.

 
CheckInputs - нахождение аварийных проходов при Оптимизации советника
CheckInputs - нахождение аварийных проходов при Оптимизации советника
  • www.mql5.com
Во время Оптимизации советника некоторые проходы могут завершаться аварийно. Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий Новая версия платформы MetaTrader 5
 

Forum sul trading, sui sistemi di trading automatizzati e sulla verifica delle strategie di trading

Biblioteche: MultiTester

fxsaber, 2022.12.12 13:20

A volte è necessario fare la stessa cosa su terminali funzionanti. L'automazione di questa azione è riportata di seguito nell'esempio.

Di conseguenza, con un solo clic sono stati raccolti i dati di tutti i terminali. Grazie a MTTESTER::RunEX5 - esegue EX5 sul terminale richiesto (portatile).

Applicazione.

МультиТерминальный скрипт.
МультиТерминальный скрипт.
  • www.mql5.com
Здесь будет представлен новый вид MQL5-программ - мультитерминальный скрипт: скрипт, который сам запускается на всех открытых MT5-терминалах. Пример. Первым таким скриптом стал CustomReport по причине
 

Lo script mostra quali terminali in esecuzione sono portatili.

#include <fxsaber\MultiTester\MTTester.mqh> // https://www.mql5.com/it/code/26132
  
void OnStart()
{
  HANDLE Handles[];
  
// Eseguire tutti i terminali
  for (int i = MTTESTER::GetTerminalHandles(Handles, false); (bool)i--;)
    Print("\"" + MTTESTER::GetTerminalPath(Handles[i]) +
          "\" - " +(MTTESTER::IsPortable(Handles[i]) ? "portable." : "NOT portable."));
}
 

Salve

Ho bisogno di eseguire uno script(che si trova in \MQL5\Scripts\) facendo clic su un oggetto creato da un indicatore (che si trova in \MQL5\Indicators\)(non dai tasti di scelta rapida).

Ho provato a utilizzare MTTESTER::RunEX5 ma ci sono molti errori di base. Cosa sto sbagliando?

Ho passato "MultiTester_Example1" e "MultiTester_Example2" in \MetaQuotes\Terminal\D..5\MQL5\Experts\fxsaber\MultiTester.

Ho passato "MultiTester.mqh" e tutti gli altri file .mqh in \MetaQuotes\Terminal\D..5\MQL5\Include\fxsaber\MultiTester

questi sono gli errori che ho ricevuto

in EX1:

'sinput' - token inatteso Ex1.mq5 3 1

'=' - uso illegale dell'assegnazione Ex1.mq5 3 23

'sinput' - token inatteso Ex1.mq5 4 1

'=' - assegnazione illegale Ex1.mq5 4 23

'sinput' - token inatteso Ex1.mq5 5 1

'=' - uso illegale dell'assegnazione Ex1.mq5 5 24

'sinput' - token inatteso Ex1.mq5 6 1

'=' - uso illegale dell'assegnazione Ex1.mq5 6 31


in EX2:

funzione di gestione degli eventi non trovata Ex2.mq5 1 1


in MultiTester.mqh:

espressione non booleana TesterSettings.mqh 104 37

espressione non booleana TesterSettings.mqh 118 39

'SetTesterSettings' - identificatore non dichiarato MultiTester.mqh 43 13

')' - espressione attesa MultiTester.mqh 43 31

'SetTesterSettings' - identificatore non dichiarato MultiTester.mqh 51 10

')' - espressione attesa MultiTester.mqh 51 28


in Task.mqh:

file 'C:\Users\...\...\....\...\Terminal\D0...75\MQL5\Include\fxsaber\TesterCache\TesterCache.mqh' non trovato Task.mqh 5 11

TESTERCACHE' - dichiarazione senza tipo Task.mqh 80 38

.

.

.

vedere istanziazione del template 'MTTESTER::TASK::GetMaxFitnessPos<unknown>' Task.mqh 244 29


 
Asa Social #:

Ho bisogno di eseguire uno script(situato in \MQL5\Scripts\) facendo clic su un oggetto creato da un indicatore (situato in \MQL5\Indicators\) (non dai tasti di scelta rapida).

Vedere l'esempio qui.

Ho provato a utilizzare MTTESTER::RunEX5 ma ci sono molti errori di base. Cosa sto facendo di sbagliato?

Il codice non compilato non può essere pubblicato su Codebase. Il problema è dal lato dell'utente.
Библиотеки: Expert - Попробуйте использовать ChartApplyTemplate. Запустите советник на всех чартах, где уже есть запущенный советник.
Библиотеки: Expert - Попробуйте использовать ChartApplyTemplate. Запустите советник на всех чартах, где уже есть запущенный советник.
  • 2017.08.28
  • Automated-Trading
  • www.mql5.com
После этого задать ему нормальное значение через ChartSetInteger. Если же нужно еще и советник запустить на том же чарте. а оттуда запускать на нужном уже нам чарте советник. Библиотека работает без DLL - полностью удовлетворяет требованиям Маркета
 

Forum sul trading, sui sistemi di trading automatizzati e sulla verifica delle strategie di trading

Biblioteche: MultiTester

fxsaber, 2022.12.12 13:20

MTTESTER::RunEX5 - esegue EX5 sul terminale richiesto (portatile).

Rimossa la restrizione "portable".