Bibliothèque: Expert - page 12

 
Si le Conseiller Expert nécessite le chargement d'une DLL, il ne coche pas lui-même cette case ? Il s'agit du mode expert, semble-t-il. Je ne vois pas l'interface. Dois-je modifier le code ou le modèle moi-même ?
 
traveller00:
Si le Conseiller Expert nécessite le chargement d'une DLL, il ne coche pas lui-même cette case ? Il s'agit du mode expert, semble-t-il. Je ne vois pas l'interface. Dois-je modifier le code ou le modèle moi-même ?

Il y avait des exemples avec DLL ci-dessus.

 

J'aimerais clarifier la sémantique du code de retour de la méthode Parameters. Actuellement, en cas d'erreur lors de la réception d'une chaîne avec un modèle, la méthode renvoie 0. Cela suppose que 0 signifie une erreur.

Dans tous les autres cas, le code de retour est une chaîne de caractères :

Res = (int)EXPERT::StringBetween(Str, EXPERT_FLAGS, STRING_END);

c'est-à-dire que c'est la valeur de expertmode du modèle qui est renvoyée, qui peut être égale à 0 tout à fait légalement. EXPERT est utilisé de cette manière dans d'autres projets, en particulier dans Tester :

void OnTimerReal()
{
  ...
  if ((this.Symb += BeginTick) && EXPERT::Parameters(0, Params, Names))
  {
    ... открытие рабочего чарта
  }
}

Par conséquent, si la méthode renvoie 0, Tester ne fonctionne pas. Pourquoi ? Si le drapeau de négociation réelle est réinitialisé, cela ne signifie pas que le test devrait être interdit, à mon avis. De plus, Tester ne fait rien silencieusement dans ce cas.

 
Stanislav Korotky:

J'aimerais clarifier la sémantique du code de retour de la méthode Parameters. Actuellement, en cas d'erreur lors de la réception d'une chaîne avec un modèle, la méthode renvoie 0. Cela suppose que 0 signifie une erreur.

La valeur de retour a changé depuis les premières publications. Ainsi, historiquement, la valeur de retour s'est avérée ne rien dire sur l'existence ou non d'une erreur.

Dans tous les autres cas, la valeur de retour est une chaîne de caractères :

c'est-à-dire la valeur expertmode du modèle, qui peut être égale à 0 en toute légalité. Dans d'autres projets, en particulier dans Tester, EXPERT est utilisé de cette manière :

Par conséquent, si la méthode renvoie 0, Tester ne fonctionne pas. Pourquoi ? Si le drapeau de négociation réel est réinitialisé, cela ne signifie pas que les tests doivent être interdits, à mon avis. En particulier, Tester ne fait rien silencieusement dans ce cas.

D'après le code que vous avez cité, en effet, il ne fonctionnera pas si l'autotrading est désactivé. Je ne sais plus si c'est une erreur ou si c'est fait exprès. Très probablement, cela a été fait exprès pour qu'il soit possible de connecter des DLL.


ZY Je vais devoir mettre à jour la bible. Il y a une forte tendance à partager avec Sequence. Comme je suis le seul à avoir besoin de cette fonctionnalité, ce n'est pas une priorité de la mettre à jour.

 

C'est la seule fois où la construction de la détection de la boucle infinie a fonctionné.

ME      3       15:22:12.123    Message Endless loop:
KS      3       15:22:12.123    Message Expert.mqh
IP      3       15:22:12.123    Message 169
DG      3       15:22:12.123    Message bool EXPERT::TemplateApply(const long,const string&,const bool)
FQ      3       15:22:12.123    Message Condition: !::IsStopped()&&::ChartGetInteger(Chart_ID,CHART_COLOR_STOP_LEVEL,0,Value)&&(!(bool)((int)Value>>24))


Cela s'est produit dans Expert.mqh à ce moment-là.

      while (_CS(!::IsStopped() && ::ChartGetInteger(Chart_ID, CHART_COLOR_STOP_LEVEL, 0, Value) && (!(bool)((int)Value >> 24))))
        ::Sleep(1); // https://www.mql5.com/ru/forum/170952/page190#comment_18830346


J'utilise Expert.mqh tous les jours, mais c'est la première fois que je rencontre ce problème. Apparemment, il s'agit d'une situation très rare. N'oubliez pas.

 
Beau travail, mais je suppose que pour l'instant, il charge l'expert avec le préréglage par défaut ? Il serait également intéressant de pouvoir charger des fichiers SET pour l'expert choisi.
 

Bonjour, merci EXPER.mqh est extraordinaire.

1. comment puis-je activer "Algo trading" pour EA ouvert avec EXPERT::Run(....).

2. j'utilise la version 2019. Existe-t-il une version plus récente ?

 
upinsa #:

1) Comment puis-je activer "Algo trading" pour un EA ouvert avec EXPERT::Run(....) ?

Lisez ceci.

2) J'utilise la version 2019. Existe-t-il une version plus récente ?

Dernière version.


 
static bool GetInputNames( MqlParam &Parameters[], string &InputNames[] )
  {
    const int Size = ::ArraySize(Parameters);
    bool Res = (Size > 1);

    if (Res)
    {
      ::ArrayResize(InputNames, Size - 1);

      for (int i = 1; (i < Size) && Res; i++)
      {
        InputNames[i - 1] = EXPERT::GetInputName(Parameters[i]);
        Res &= (InputNames[i - 1] != NULL);
      }
    }

    return(Res);
  }

groupe de saisie "【label1】" ;

Cette situation ne semble pas être prise en compte. Lorsque le paramètre est un groupe, il n'y a pas de valeur spécifique, et la valeur reçue sera nulle, de sorte que les paramètres suivant le groupe ne seront pas reçus.

 
hini #:

groupe d'entrée "【label1】" ;

Cette situation ne semble pas être prise en compte. Lorsque le paramètre est un groupe, il n'y a pas de valeur spécifique, et la valeur reçue sera nulle, de sorte que les paramètres suivant le groupe ne seront pas reçus.

S'il y a un problème, veuillez fournir des fichiers mq5 prêts à être reproduits.