Testeur de stratégie MetaTrader 5 : bugs, anomalies, suggestions d'amélioration - page 23

 
Slava:

Le testeur s'est arrêté car OnInit renvoie un code non nul

C'est pourquoi il n'y a pas de statistiques.

Merci, je vous tiendrai au courant. Il est intéressant que les graphiques soient toujours construits avec les transactions effectuées.

 
Andrey Pogoreltsev:

Les agents surchargent la mémoire en essayant de parcourir le Mexique sans rien faire, et leur nombre de tâches ne fait qu'augmenter. Les journaux montrent les erreurs suivantes :

Vous devez regarder les journaux des agents.

L'erreur 14 signifie que le prix de l'offre est nul pour cet outil. C'est-à-dire qu'il y a une barre de gauche dans l'historique

PS Il est préférable d'effectuer un seul test. Alors l'erreur est sûre d'apparaître dans le journal de l'agent de test. Lors de l'optimisation, les erreurs ne sont affichées que jusqu'à la fin de OnInit.

 

L'icône du groupe disparaît lorsque tous sont fermés, l'option permettant de sélectionner un paramètre pour l'optimisation disparaît.


input group "ORDER"
input double K = 30;
input double TP_0 = 500;
input double MaxLoss = 0.25;
input group "FUNCTIONS"
input bool MultipleStopOrders = true;
input bool CloseAllPosReversSig = true;
input group "MONEY MANAGEMENT SETTING"
input double StartLot = -0.01;
input group "ORDERS SETTING"
input int MagicNumber_ = 2000; // Magic Number
input int Slippage = 50;       // Slippage
 
Slava:

Demande importante de ne pas modifier les paramètres d'entrée de l'EA, qui ne sont pas définis dans le presse-papiers.

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

Bibliothèques : MultiTester

fxsaber, 2019.11.06 11:24

Lorsque vous examinez un grand nombre de caches d'optimisation après une exécution multi-test, vous faites la même chose.

  1. Vous choisissez le meilleur passage pour effectuer une seule manche (via PCM).
  2. Si vous l'aimez, vous désactivez l'optimisation et augmentez l'intervalle.
  3. Vous appuyez sur Start.

La majeure partie du temps est consacrée à l'étape 2, ce qui entraîne souvent des erreurs. Nous souhaitons une semi-automatisation. Et il y a une solution !


Copiez ce texte dans le presse-papiers.

[Tester]
Optimization=0
FromDate=2019.01.01


Il suffit ensuite d'appuyer sur CTRL+V dans l'onglet Paramètres. Cela désactivera automatiquement l'optimisation et fixera la bonne date.


ZZZ était pressé d'être excité. Les paramètres d'entrée de l'EA sont remis à leur valeur par défaut avec ce tampon.

 
fxsaber:

Une grosse demande pour ne pas modifier les paramètres d'entrée d'un EA qui n'est pas défini dans le presse-papiers.

Oui. Corrigez le comportement.

PS Le comportement décrit n'est pas reproductible. S'il n'y a pas de section [TesterInputs] dans le texte inséré, l'onglet des paramètres du conseiller expert n'est pas touché du tout.

 
Slava:
Oui. Corriger le comportement

Merci !

 
fxsaber:

Merci !

Ne pas jouer
 
Slava:

PS Le comportement décrit n'est pas reproduit. S'il n'y a pas de section [TesterInputs] dans le texte à insérer, l'onglet des paramètres du conseiller expert n'est pas touché du tout.

Conseiller expert

input int Range = 0; // 0 .. 100

double OnTester() { return(Range); }


Lecture


 
Il est probable que cette fonctionnalité standard n'aggravera la situation de personne.

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

Caractéristiques du langage mql5, conseils et astuces

fxsaber, 2019.11.06 16:57

Parfois, dans l'optimisation génétique, les quelques milliers de premiers passages suffisent pour comprendre déjà plus ou moins le résultat.

Lorsque vous exécutez automatiquement un grand nombre d'optimisations, vous voulez que tout fonctionne plus rapidement. C'est pourquoi nous aurons besoin d'un mécanisme pour interrompre l'optimisation.

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

// Выключает Оптимизацию ( и одиночный проход)
bool OptimizationStop( void )
{
  return(!MTTESTER::IsReady() && MTTESTER::ClickStart(false));
}


Application.

// Демонстрация прерывания Оптимизации.

sinput int inAmountPasses = 20; // Через сколько проходов закончить
input int Range = 0; // 0..10000

double OnTester()
{
  int Data[];
  
  return(FrameAdd(NULL, 0, 0, Data)); // Сгенерировали TesterPass
}

void OnTesterPass()
{
  static int Amount = 0;
  
  ulong Pass;
  string Name;
  long ID;
  double Value;
  int Data[];

  while (FrameNext(Pass, Name, ID, Value, Data))
    if (++Amount > inAmountPasses)
    {
      OptimizationStop(); // Как достигли нужного количества проходов, выключили оптимизатор.
      
      break;
    }
}
 
fxsaber:

Conseiller


Lecture


Allons au fond des choses
Raison: