Caractéristiques du langage mql5, subtilités et techniques - page 71

 

fxsaber:

Discussion de l'article "Visualiser l'optimisation des stratégies de trading dans MetaTrader 5".

fxsaber, 2018.02.22 08:39

En mode cadre, OnInit, OnDeinit, OnTick, OnTrade, OnTradeTransaction et OnTimer sont ignorés. Seul OnChartEvent fonctionne.

Bien sûr, en raison de OnChartEvent, il faut obligatoirement vérifier l'indicateur de mode de trame.

D'où vous vient cette confiance implicite ? :-)

 
Dennis Kirichenko:

Comment pouvez-vous en être si sûr ? :-)

De la pratique, bien sûr.

 

Une question alors. Le mode Cadre est-il un mode qui fait généralement référence aux tests ou non ?

 
Dennis Kirichenko:

Une question alors. Le mode Cadre est-il un mode qui s'applique généralement aux tests ou non ?

Indirectement, elle l'est. C'est juste que dans ce mode, le conseiller expert ne peut être lancé dans le terminal que par le testeur.

 

OK. Et si le conseiller expert a un gestionnaire OnTick(), alors quoi, il ne fonctionnera pas en mode cadre ?

Je pense que nous devrions préciser ici que les gestionnaires de trames sont exécutés par le terminal lui-même, tandis que tout ce qui est habituel pour les tests (OnTick(), OnTrade(), etc.) est transmis aux agents de test. ), sont transmis aux agents de contrôle. Le mode cadre est donc un mode de test composite spécial, dans lequel les agents interagissent avec le terminal.

Alors ça se passe comme ça...


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

Caractéristiques du langage mql5, subtilités et astuces

fxsaber, 2018.02.22 09:22

Indirectement, elle s'applique. C'est juste que dans ce mode, l'EA ne peut être exécuté dans le terminal que par le testeur lui-même.


Et pourquoi indirectement ? Par exemple, l'optimisation normale peut également être exécutée uniquement dans le Testeur.

 
Dennis Kirichenko:

OK. Et si le conseiller expert a le gestionnaire OnTick(), alors quoi, il ne fonctionnera pas en mode cadre ?

Je pense que nous devrions préciser ici que les gestionnaires de trames sont exécutés par le terminal lui-même, tandis que tout ce qui est habituel pour les tests (OnTick(), OnTrade(), etc.) est transmis aux agents de test. ), sont transmis aux agents de contrôle. Le mode cadre est donc un mode de test composite spécial, dans lequel les agents interagissent avec le terminal.

C'est comme ça.



Et pourquoi indirectement ? Par exemple, l'optimisation normale ne peut être exécutée que dans le Testeur.

Parce que c'est un conseiller expert en combat, même en mode cadre. C'est pourquoi nous devons vérifier le drapeau du cadre dans OnChartEvent, sinon ce genre de problème peut se produire.

sinput uint Range = 100;

#define  SETRANGE(A, START, STEP, END) ParameterSetRange(#A, true, A, START, STEP, END)

void OnTesterInit() { SETRANGE(Range, 0, 1, Range); }

void OnTesterDeinit() {}

void OnChartEvent(const int id,const long& lparam,const double& dparam,const string& sparam)
{
  static const bool IsFrame = MQLInfoInteger(MQL_FRAME_MODE);
  
//  if (!IsFrame) // без этой проверки Терминал (не только Агент) начнет выставлять ордера на реальном счете во время запуска Оптимизации
    OrderSend(_Symbol, OP_BUY, 1, Ask, 100, 0, 0);
}


Il semble que ce soit la première fois que cela soit exprimé. Ce qui signifie que Market Products crée une méchante vulnérabilité... Et cette vulnérabilité est très difficile à contourner. Et il est très difficile de le détecter.

 
fxsaber:

Parce que c'est un EA de combat même en mode cadre. C'est la raison pour laquelle vous devez vérifier l'indicateur de trame dans OnChartEvent, sinon ce genre de problème peut se produire.

Il semble que ce soit la première fois que cela soit exprimé. Ce qui signifie que Market Products crée une méchante vulnérabilité... Et cette vulnérabilité est très difficile à contourner. Sa détection est tout aussi difficile.

Cependant ! Si c'est vrai, alors, imho, c'est un fonctionnement incorrect de l'EA en mode Test...

Bravo à vous pour l'avoir remarqué !

 

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

Bugs, bugs, questions

fxsaber, 2018.02.27 08:01

Conclusion sur les EA sur OBJ_CHART

  • OnInit, OnDeinit, constructeur/destructeur global et OnChartEvent fonctionnent.
  • OnTimer, OnTick et OnBookEvent ne fonctionnent pas.
  • Seuls les événements CHARTEVENT_CHART_CHANGE et les événements personnalisés sont pris en compte.
  • Grâce à OnChartEvent+EventChartCustom EA, il est possible de créer des "événements" pour OnTimer et OnTick, mais pas pour OnBookEvent.

Par conséquent, il est possible de rendre n'importe quel conseiller expert de trading complet - de le faire fonctionner (OnTimer + OnTick) sur n'importe quel type de graphique en incluant l'indicateur approprié(exemple).

Lf OBJ_CHART est défini par CHART_IS_OBJECT.

 

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

Discussion sur le thème "Optimisation gérée : la méthode du recuit".

fxsaber, 2018.02.28 08:45

Le fichier tester_file n'est lu que s'il existait (le contenu importe peu) au moment de la compilation.

Si mq5 est compilé alors qu'il n'y avait pas de fichier correspondant, même son existence ultérieure ne sera pas perçue dans EX5.

Par conséquent, si vous générez un fichier pour tester_file dans OnTesterInit, assurez-vous que vous compilez le conseiller expert avec au moins un fichier passé vide.

Si la directive tester_file est présente, les caches de l'Optimizer ne fonctionneront pas.

 
Et vous ne pouvez pas inclure les fichiers du dossier Files_Common via tester_file...
Raison: