Bibliothèque: MultiTester - page 15

 
Сергей Таболин:

Est-il déjà possible de zipper ou non ? (C'est comme - et si ça marche ))))

Oui, les zips dans KB ont été discrètement corrigés - les mises à jour y arrivent. Les dates des fichiers à l'intérieur deviennent égales à la date de la mise à jour. Ces dates permettent donc de comprendre immédiatement à quelle date le contenu correspond.

 
fxsaber:

Les journaux de bord des testeurs doivent être examinés.

Le redémarrage du terminal et l'attente d'environ 10 minutes sont utiles. Même une alerte apparaît. Vous devriez commencer à tester immédiatement après avoir ouvert le terminal ; ne feuilletez même pas les tendances. Mais avec le temps, tout peut être interrompu ou mis en boucle. La dernière fois, j'ai eu une passe normale de 172. Si la situation se répète, j'enverrai le journal. Je n'ai pas remarqué d'écart par rapport à la norme auparavant.
 
Good Beer:
Vous devez commencer les tests immédiatement après avoir ouvert le terminal ; ne feuilletez même pas les tendances.

Il ne s'agit pas d'une situation normale. La norme est que tout fonctionne sans aucune condition.

 

Sur la base de MTTester, vous pouvez comparer l'efficacité de différentes logiques de trading.

Par exemple, il y a TS1 et TS2. Nous devons comprendre laquelle est la meilleure (conditionnellement, bien sûr).


Nous optimisons chaque TS, puis nous exécutons les meilleurs passages en tant que simples sur différents intervalles OOS.

Tout cela peut être fait automatiquement via MTTester.


Nous comparons les résultats OOS et décidons quel TS est le meilleur.

 

Un journal intéressant vient d'apparaître

2019.12.21 13:38:35.994 Tester  Ready to set
2019.12.21 13:38:36.617 Tester  i=100

sur le code.

  static bool ClickStart( const bool Check = true, const int Attempts = 100 )
  {
    bool Res = !Check || MTTESTER::IsReady();

    if (Res)
    {
      static const int ControlID[] = {0xE81E, 0x804E, 0x2712, 0x4196};
      GET_HANDLE

      user32::SendMessageW(Handle, BM_CLICK, 0, 0);

      Res = !Check || !MTTESTER::IsReady();

      int i = 0;
      for (i = 0; (i < Attempts) && (!Res)/* && !::IsStopped() */; i++) // Le destructeur global peut avoir besoin de
        if (Res = !Check || !MTTESTER::IsReady())
          ::Sleep(100);
      Print("i="+(string)i);
    }

    return(Res);
  }

Print("Ready to set");
MTTESTER::SetSettings2(TesterInput);
MTTESTER::ClickStart();

Idéalement, à i=100, il devrait dormir pendant au moins 10 secondes. Je n'ai pas encore compris comment il a pu faire cela en une seconde (et essentiellement exécuter incorrectement). Mais il faut dire que le bouton a été pressé, oui. Apparemment, il y a un décalage dans l'indication du bouton. Parce qu'il y a une deuxième instance qui tourne en parallèle sur le test et qui charge le CPU à 100%.

 

Je crois que j'ai compris. Les conditions n'étaient pas claires. C'est probablement la raison pour laquelle ils ont dû changer le nombre de tentatives à 50 la dernière fois. Il ne dort que lorsqu'il réussit, lorsqu'il est sur le point de sortir de toute façon. Et ça passe vite quand c'est le bon moment pour dormir. Il doit s'agir d'un insecte. Et le bug est triste, visiblement il ne s'est pas manifesté pendant près d'un mois, et j'espérais que les passages allaient bien. Je vais devoir tout retester. Et je n'arrêtais pas de me demander pourquoi rarement, mais parfois des passages ne s'emboîtent pas.

Je pense que ça doit être

if (!(Res = !Check || !MTTESTER::IsReady()))
 
traveller00:

Apparemment, il est censé être

Oui, la boucle perdait de son sens à cause de mon inattention. Merci de vous être penché sur la question et d'avoir indiqué clairement l'emplacement. Je la téléchargerai à nouveau si possible.

 
fxsaber:

Oui, la boucle perdait de son sens à cause de mon inattention. Merci d'avoir résolu le problème et de l'avoir clairement signalé. Je vais le retélécharger si possible.

Mise à jour.

 

En attendant la mise à jour, j'ai trouvé les raisons pour lesquelles la liste des tâches du multitester tournait en boucle.

La première était un gestionnaire de tâches tiers "process lasso" sur mon ordinateur. Il aide avec la souris et le clavier sans fil, mais n'aime pas qu'une application prenne tous les cœurs du processeur. Les processus de l 'agent de test s'interrompaient et les résultats étaient perdus. Vous obteniez une tâche incomplète, avec à chaque fois un nouveau résultat. L'augmentation de la priorité du métatester a tout arrangé.

Le deuxième problème est que multitester ne supporte pas forward. Si le forward n'est pas activé, tout fonctionne bien. Mais s'il est activé, la liste des tâches commence à s'enliser. Les tests en aval commencent lorsque le message "DONE" apparaît à la fin d'une passe. Multitester veut faire défiler la liste, mais l'avance démarre. Le bouton "START" est actionné et l'ancienne tâche est lancée. Quel est le critère de votre algorithme pour terminer une passe ?

Merci de prendre en compte le forward dans les prochaines versions de multitester.

 
Good Beer:

Merci de prendre en compte cette avancée dans les prochaines versions de multitestera.

Je n'ai jamais utilisé le mode "Forward" de ma vie. Je l'essaierai probablement un jour.