Bibliothèque: Expert - page 6

 
fxsaber:

L'auteur d'un EA ne recommandera jamais de trader son EA lorsque les résultats du testeur sont médiocres.

Il ne le fera pas, mais il ne s'agit pas de signaux - les Expert Advisors sont vendus indépendamment du centre de courtage. Il devrait donc être obligatoire de spécifier le vendeur, où il obtient de tels résultats, ce qui constitue en quelque sorte une publicité pour le DC.....

 
Aleksey Vyazmikin:

Je ne vais pas m'agiter, mais il ne s'agit pas de signaux - les conseillers sont vendus indépendamment du DC. Il devrait alors être obligatoire de spécifier le vendeur, où il obtient de tels résultats, ce qui constitue en quelque sorte une publicité pour le DC.....

Probablement, le raisonnement théorique est parfois bon. Mais je suis toujours intéressé par la pratique liée à ce message. Il a été écrit dans ce fil de discussion pour une raison précise.

Je propose d'arrêter le fludding de tous les côtés.

 
fxsaber:

Sur le marché, j'ai constaté à de nombreuses reprises que les auteurs joignaient des fichiers d'ensemble de leurs CT pour chaque personnage. En conséquence, les acheteurs les utilisent.


Je propose d'utiliser la logique suivante pour les CT du marché

  • Un paramètre d'entrée est ajouté
  • Si ce dossier est spécifié par l'utilisateur, le conseiller expert récupère automatiquement tous les jeux de ce dossier et exécute les versions correspondantes.
  • L'utilisateur n'a qu'à placer le fichier de l'ensemble dans le dossier et à spécifier le chemin d'accès à ce dossier lors du démarrage de l'Expert Advisor (l'auteur de l'Expert Advisor peut insérer ce chemin d'accès immédiatement).
  • Si l'utilisateur commet une erreur et exécute le programme deux fois, il peut être automatiquement empêché de le faire.

Cette approche est également pratique pour lancer vos propres TS en un seul clic.

Bien entendu, la solution peut être universelle pour les deux plateformes. En gros, il suffit d'ajouter une ligne au code source de n'importe quel Expert Advisor.


C'est très probablement de cette manière que je lancerai les EAs à partir de maintenant. Si quelqu'un voit un défaut dans cette méthode ou une option d'amélioration, faites-le moi savoir.

L'exécution dans le testeur sera différente de celle en ligne (les dossiers sont différents, après tout), pour faire correspondre une copie particulière de l'EA à un ensemble, vous devez faire quelque chose de supplémentaire.

Et la simple gestion de ce troupeau d'EA sans sa propre visualisation semble difficile.

De plus, le changement de l'ensemble des ensembles s'accompagnera du redémarrage de tous les EA.


Les graphiques MT individuels servent de "fichiers transparents", qui sont classés dans le "dossier dur" du profil. Cela vous permet de mettre les informations nécessaires dans chaque fichier ou d'extraire/remplacer facilement le fichier nécessaire. Et vous pouvez passer à un autre "dossier dur" en changeant de profil. C'est assez pratique.

J'ai été confronté à la nécessité de remplacer un paramètre dans tous les EA (par exemple, le risque). Je l'ai fait par un remplacement de masse dans les fichiers modèles ou par le biais d'une variable maître spéciale. Il serait pratique d'intégrer cela dans une fonction pratique.

 
Andrey Khatimlianskii:

L'exécution dans le testeur sera différente de celle en ligne (les dossiers sont différents), pour faire correspondre une copie spécifique de l'EA à l'ensemble, vous devez faire quelque chose de supplémentaire.

Il n'y aura aucune différence.

Bien, et le simple fait de gérer ce troupeau d'EA sans sa propre visualisation semble difficile.

Ce n'est pas plus compliqué qu'aujourd'hui.

De plus, les changements d'ensemble seront accompagnés d'un redémarrage de tous les conseillers.

L'EA sera démarré normalement. Seulement si vous le souhaitez, vous pouvez spécifier un dossier avec les ensembles.

Les graphiques MT individuels servent de "fichiers transparents", qui sont classés dans le "dossier dur" du profil. Cela vous permet de mettre les informations nécessaires dans chaque fichier ou d'extraire/remplacer facilement le fichier nécessaire. Et vous pouvez passer à un autre "dossier dur" en changeant de profil. C'est très pratique.

Bien sûr, vous pouvez même lire/écrire automatiquement les profils dans MQL5\Profiles\Charts\.... Mais les profils sont très différents.

J'ai rencontré le besoin de remplacer un paramètre dans tous les EA (par exemple, le risque). Je l'ai fait par un remplacement de masse dans les fichiers modèles ou par le biais d'une variable maître spéciale. Il serait pratique de l'intégrer dans une fonction pratique.

Une telle fonctionnalité figure parmi les exemples de la bibliothèque.


Toutefois, il convient de faire la distinction entre la modification des paramètres d'entrée par la méthode de redémarrage et la modification manuelle via F7. La première est un redémarrage à part entière, la seconde ne l'est pas. Il y a des cas où vous avez besoin de la seconde. Mais cela ne peut pas être mis en œuvre dans MQL.

 
fxsaber:

Il n'y aura pas de différence.

Comment ? En sélectionnant l'ensemble que vous voulez ?


fxsaber:

Ce n'est pas plus compliqué qu'aujourd'hui.

Pour l'instant, chaque EA en cours d'exécution a son propre ensemble.

Mais comment le "manager", qui exécute 10 Expert Advisors, se comportera-t-il si certains d'entre eux changent de paramètres manuellement ? Et que se passera-t-il après le redémarrage du gestionnaire ? Les jeux d'origine seront-ils lancés ?

 
Andrey Khatimlianskii:

Comment ? En sélectionnant un ensemble nécessaire ?

MQL_TESTER.

Désormais, chaque conseiller expert en cours d'exécution dispose de ses propres paramètres.

Mais comment le "gestionnaire", qui a 10 conseillers experts en cours d'exécution, se comportera-t-il si certains d'entre eux voient leurs paramètres modifiés manuellement ? Et que se passera-t-il après le redémarrage du gestionnaire ? Les jeux d'origine seront-ils lancés ?

Le gestionnaire n'est pas censé être utilisé. Apparemment, seul un code me permettra de montrer ce que je veux dire. Je vous remercie de votre participation.

 
fxsaber:

MQL_TESTER.

Pouvez-vous donner une réponse un peu plus détaillée ?

Il est possible de déterminer que le démarrage se fait dans le testeur, bien sûr. Mais il n'y a pas d'accès au dossier sets (ou il y en a un si vous avez accès au dossier kamon), et il est inutile de lire ces sets - vous ne devez tester qu'un seul d'entre eux.

Et après le test, vous devez le faire correspondre avec l'Expert Advisor en cours d'exécution (par exemple, pour l'arrêter ou modifier certains paramètres). Pour ce faire, dois-je aller dans le dossier contenant les jeux, trouver celui qui est nécessaire et l'éditer ?


Dans ce cas, trader sur tous les jeux à partir d'un seul EA semble plus raisonnable. Avec la possibilité de choisir une ou plusieurs stratégies (sets).

 
Andrey Khatimlianskii:

Puis-je obtenir une réponse un peu plus détaillée ?

Il est possible de déterminer que le démarrage se fait dans le testeur, bien sûr. Mais il n'y a pas d'accès au dossier sets (ou il y en a un, si kamon), et il n'y a pas d'intérêt à lire ces sets - vous ne devez en tester qu'un seul.

Et après le test, vous devez le faire correspondre avec le Conseiller Expert en cours d'exécution (par exemple, pour l'arrêter ou modifier certains paramètres). Pour ce faire, dois-je aller dans le dossier contenant les sets, trouver le set nécessaire et l'éditer ?

Un fichier opt personnalisé est utilisé pour le Testeur. À partir de ce fichier, n'importe quel ensemble est lancé en un seul clic. C'est très pratique.

Si vous n'avez pas de fichier d'options, vous travaillez à l'ancienne. C'est-à-dire que rien n'est compliqué.

Il semble alors plus raisonnable de négocier toutes les séries à partir d'un seul EA. Avec la possibilité de choisir une ou plusieurs stratégies (ensembles).

Un tel choix est toujours disponible dans le Tester - charger un set.

 
Je vous recommande d'intégrer un tel contrôle à vos outils d'évaluation.
// Exemple multiplateforme de protection contre le lancement erroné d'un clone d'EA.

#include <fxsaber\Expert.mqh> // https://www.mql5.com/fr/code/19003

string GetExpertData( const ulong Chart = 0 ) 
{ 
  string Str = NULL; 

  MqlParam Parameters[]; 
  string Names[]; 

  if (EXPERT::Parameters(Chart, Parameters, Names)) 
  { 
    Str += "\n" + ::ChartSymbol(Chart) + " " + ::EnumToString(::ChartPeriod(Chart)) + " " + Parameters[0].string_value + "\n"; 

    const int Amount = ::ArraySize(Names); 

    for (int i = 0; i < Amount; i++) 
      Str += (string)i + ": "+ Names[i] + " = " + Parameters[i + 1].string_value + "\n"; 
  } 

  return(Str); 
} 

// Le même conseiller est-il en cours d'exécution ?
long IsRunning( void )
{ 
  long Res = 0;
  const string Str = GetExpertData();
  long Chart = ::ChartFirst(); 

  while (!Res && (Chart != -1)) 
    if ((Chart != ::ChartID()) && EXPERT::Is() && (Str == GetExpertData(Chart)))
      Res = Chart;
    else
      Chart = ::ChartNext(Chart); 

  return(Res); 
}

input int Range1 = 1;
input int Range2 = 1;

int OnInit()
{
  return(!MQLInfoInteger(MQL_TESTER) && IsRunning() &&
         (MessageBox("This EA is already running." +
                     GetExpertData() + "\nRun?", MQLInfoString(MQL_PROGRAM_NAME), MB_YESNO) == IDNO) ?
         INIT_FAILED : INIT_SUCCEEDED);
}
 

// MT4-advisor indique dans quel mode Long/Short il a été exécuté.

#include <fxsaber\Expert.mqh> // https://www.mql5.com/fr/code/19003

int GetLongShortFlag( const int Chart_ID = 0 )
{
  MqlParam Params[];
  string Names[];
  
  const int Res = EXPERT::Parameters(Chart_ID, Params, Names);
  
  return(((Res & 3) << 1) + (Res & 1));
}

string LongShortToString( const int Chart_ID = 0 )
{
  const int Flag = GetLongShortFlag(Chart_ID);
  string Str = NULL;
  
  if ((bool)(Flag & SYMBOL_TRADE_MODE_LONGONLY) && (bool)(Flag & SYMBOL_TRADE_MODE_SHORTONLY))
    Str = "Long & Short";
  else if ((bool)(Flag & SYMBOL_TRADE_MODE_LONGONLY))
    Str = "Only Long";
  else if ((bool)(Flag & SYMBOL_TRADE_MODE_SHORTONLY))
    Str = "Only Short";
    
  return(Str);
}

int OnInit()
{
  Alert(LongShortToString());
  
  return(INIT_FAILED);
}