Bibliothèque: MultiTester - page 44

 

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading

Test de 'CopyTicks

fxsaber, 2024.02.26 12:41 pm

Si CopyTicks se bloque pendant 60 secondes et renvoie l'erreur 4403, essayez de changer le point d'accès au serveur. Même si le ping vers celui-ci est moins favorable.

Dans ce sens, la sélection automatique d'un point d'accès par le terminal est dangereuse.

Sans lancer cet indicateur (une instance pour tout le terminal), je ne quitte plus le terminal de combat, où le travail avec CopyTicks est en cours.

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

#property indicator_chart_window
#property indicator_plots 0

input int inIntervalAlert = 5; // Intervalle de temporisation de l'erreur (sec)
input int inMaxPoints = 5;     // Nombre de points du premier serveur

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'indicateur fait sortir tous les Expert Advisors/scripts en cours d'exécution de l'erreur timeout correspondante en une seule fois. Ensuite, ils continuent à fonctionner normalement.

 
fxsaber #:

Sans exécuter cet indicateur (une instance pour l'ensemble du terminal), je ne quitte plus le terminal de combat, où se déroule le travail avec CopyTicks.



L'indicateur force tous les Expert Advisors/scripts en cours d'exécution à quitter l'erreur timeout correspondante en une seule fois. Ensuite, ils continuent à fonctionner normalement.

Veuillez me donner des cas réels où vous avez besoin de travailler avec CopyTicks dans un Expert Advisor tout le temps. Je ne l'utilise vraiment que dans OnInit() pour obtenir des ticks historiques afin d'exécuter des filtres numériques. Dans MQL4, je devais attendre plusieurs minutes pour que les tampons se remplissent.

 
Alexey Volchanskiy #:

Veuillez me donner des exemples concrets de cas où un Expert Advisor a besoin de travailler avec des CopyTicks en permanence.

Ne sautez pas (et ne doublez pas) les ticks sur Real, comme cela se produit dans le Tester. Le Conseiller Expert sur Real reçoit exactement la même séquence de données de prix qu'il recevra dans le Tester lorsque vous déciderez de l'exécuter sur l'intervalle passé dans le futur.

 

Je dois être complètement idiot ou avoir raté quelque chose.

Si j'ai un EA que je voudrais exécuter un test non visuel (non optimisation) de chaque jour pendant un an... Donc chaque jour est testé avec les paramètres codés en dur, comment puis-je le faire ? Quelqu'un pourrait-il écrire un court tutoriel comme.

1. Télécharger la bibliothèque - Instructions d'installation

2. Ecrire ce code pour sélectionner votre EA par nom dans votre ea et tel fichier.

3. Sélectionnez vos dates de début et de fin ici

4. Spécifiez la période et la durée de chaque back test ici.

5. Ajoutez ces codes supplémentaires pour que tout fonctionne correctement, placez vos #includes au bon endroit, etc.

6. Spécifiez et sauvegardez les résultats au format csv pour chaque backtest quotidien.

Etc etc etc etc

Je suis perdu sur la façon de mettre en œuvre cette solution qui semble que cette bibliothèque est spécifiquement construite pour @fxsaber J'ai lu tous vos exemples courts et passé en revue le code dans chaque fichier et ne semble pas trouver de documentation qui décrit les cas d'utilisation ou un guide étape par étape n'importe où pourriez-vous s'il vous plaît m'aider à résoudre ce problème ?


Je n'ai pas eu le temps de m'en rendre compte, mais j'ai eu l'occasion de me rendre compte que je n'avais pas le temps de m'en rendre compte et que je n'avais pas eu le temps de m'en rendre compte.

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

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading

Bibliothèques : MultiTester

fxsaber, 2022.12.12 13:20

Il faut parfois faire la même chose sur des terminaux qui fonctionnent. Automatisation de cette action ci-dessous sur l'exemple.

Résultat, un seul clic permet de collecter les données de tous les terminaux. Grâce à MTTESTER::RunEX5 - exécute EX5 sur le terminal requis (portable).

Application.

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

Le script indique quels sont les terminaux en cours d'exécution qui sont portables.

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

Bonjour

J'ai besoin d'exécuter un script(situé dans \MQL5\Scripts\) en cliquant sur un objet créé par un indicateur ( situé dans \MQL5\Indicators\)(pas par les touches de raccourci).

J'ai essayé d'utiliser MTTESTER::RunEX5 mais il y a beaucoup d'erreurs de base. Qu'est-ce qui ne va pas ?

J'ai passé "MultiTester_Example1" et "MultiTester_Example2" dans \MetaQuotes\Terminal\D..5\MQL5\Experts\fxsaber\MultiTester.

J'ai passé "MultiTester.mqh" et tous les autres fichiers .mqh dans \MetaQuotes\Terminal\D..5\MQL5\Include\fxsaber\MultiTester.

Voici les erreurs que j'ai reçues

dans EX1 :

'sinput' - token inattendu Ex1.mq5 3 1

'=' - utilisation illégale de l'affectation Ex1.mq5 3 23

'sinput' - jeton inattendu Ex1.mq5 4 1

'=' - utilisation illégale de l'affectation Ex1.mq5 4 23

'sinput' - jeton inattendu Ex1.mq5 5 1

'=' - utilisation illégale de l'affectation Ex1.mq5 5 24

'sinput' - jeton inattendu Ex1.mq5 6 1

'=' - utilisation illégale de l'affectation Ex1.mq5 6 31


dans EX2 :

fonction de traitement des événements non trouvée Ex2.mq5 1 1


dans MultiTester.mqh :

expression non booléenne TesterSettings.mqh 104 37

expression non booléenne TesterSettings.mqh 118 39

SetTesterSettings' - identificateur non déclaré MultiTester.mqh 43 13

')' - expression attendue MultiTester.mqh 43 31

SetTesterSettings' - identificateur non déclaré MultiTester.mqh 51 10

')' - expression attendue MultiTester.mqh 51 28


dans Task.mqh :

fichier 'C:\Users\...\...\....\...\Terminal\D0...75\MQL5\Include\fxsaber\TesterCache\TesterCache.mqh' introuvable Task.mqh 5 11

TESTERCACHE' - déclaration sans type Task.mqh 80 38

.

.

.

voir l'instanciation du modèle 'MTTESTER::TASK::GetMaxFitnessPos<unknown>' Task.mqh 244 29


 
Asa Social #:

J'ai besoin d'exécuter un script(situé dans \MQL5\Scripts\) en cliquant sur un objet créé par un indicateur (situé dans \MQL5\Indicators\) (pas par Hotkeys).

Voir l'exemple ici.

J'ai essayé d'utiliser MTTESTER::RunEX5 mais il y a beaucoup d'erreurs de base. Qu'est-ce qui ne va pas ?

Un code non compilé ne peut techniquement pas être publié dans Codebase. Le problème est de votre côté.
Библиотеки: Expert - Попробуйте использовать ChartApplyTemplate. Запустите советник на всех чартах, где уже есть запущенный советник.
Библиотеки: Expert - Попробуйте использовать ChartApplyTemplate. Запустите советник на всех чартах, где уже есть запущенный советник.
  • 2017.08.28
  • Automated-Trading
  • www.mql5.com
После этого задать ему нормальное значение через ChartSetInteger. Если же нужно еще и советник запустить на том же чарте. а оттуда запускать на нужном уже нам чарте советник. Библиотека работает без DLL - полностью удовлетворяет требованиям Маркета
 

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading

Bibliothèques : MultiTester

fxsaber, 2022.12.12 13:20

MTTESTER::RunEX5 - exécute EX5 sur le terminal requis (portable).

portable-restriction supprimée.