Discussion de l'article "Créez votre propre robot de trading en 6 étapes !" - page 2

 
bivmail:

Je commençais à m'enthousiasmer, mais je n'arrive pas à contourner ce problème (comm - j'ai lu sur le transfert d'adresse mémoire, mais cela n'a pas fonctionné de cette façon non plus) :

Le compilateur renvoie l'erreur 'm_MethodFast' - expression constante requise, ' m_MethodSlow' - expression constante requise

Bien sûr, ce sont des questions pour les nuls. Peut-être devrais-je poser ces questions dans un autre fil, afin de ne pas encombrer l'article ?


ENUM_MA_METHOD l_array1_select_method[2];
l_array1_select_method[0]=MethodFast();
l_array1_select_method[1]=MethodSlow();
 

Oui. la deuxième méthode n'a pas fonctionné non plus :

il bute

1) '=' - valeur l requise //...Search(l_array1_select_method_n2.At(i_array1_n2))=-1)

2) 'At' - le paramètre de EnumToString doit être une énumération //...EnumToString(l_array1_select_method_n2.At(i_array1_n2))) ;

expression non booléenne

#include <Arrays\ArrayInt.mqh>
   CArrayInt l_array1_select_method_n2;
   l_array1_select_method_n2.Add(m_MethodFast);
   l_array1_select_method_n2.Add(m_MethodSlow);
   //int total_array1_n2=l_array1_select_method_n2.Total()-1;// ArraySize(l_array1_select_method_n2) ;

   CArrayInt l_array2_enum_ma_method_n2;
   l_array2_enum_ma_method_n2.Add(MODE_SMA);
   l_array2_enum_ma_method_n2.Add(MODE_EMA);
   l_array2_enum_ma_method_n2.Add(MODE_SMMA);
   l_array2_enum_ma_method_n2.Add(MODE_LWMA);

   bool YesErrorsFlag_n2=false;
   for(int i_array1_n2=0;i_array1_n2<l_array1_select_method_n2.Total()-1;i_array1_n2++)
     {
      if(l_array2_enum_ma_method_n2.Search(l_array1_select_method_n2.At(i_array1_n2))=-1)
        {
         YesErrorsFlag_n2=true;
         PrintFormat("Invalid smoothing type %s moving average !",EnumToString(l_array1_select_method_n2.At(i_array1_n2)));
        }
     }

   if(YesErrorsFlag_n2)
     {
      return(false);
     }

Ceci n'a aucune utilité pratique. Laissons-le tel quel dans l'exemple...

 
bivmail:

Oui. la deuxième méthode n'a pas fonctionné non plus :

elle bute

1) '=' - valeur l requise //...Search(l_array1_select_method_n2.At(i_array1_n2))=-1)

2) 'At' - le paramètre de EnumToString doit être une énumération //...EnumToString(l_array1_select_method_n2.At(i_array1_n2))) ;

expression non booléenne

Ceci n'a aucune utilité pratique. Laissons-le tel quel dans l'exemple....

Attachons le code adapté à la compilation (parce que les télépathes sont fastidieux).
 

Bonjour, j'ai le problème suivant.

J'ai fait toutes les étapes selon les instructions jusqu'à la fin. J'ai compilé l'EA et essayé de le tester - aucune transaction n'a eu lieu pendant toute l'année du test et il donne une erreur - genetic pass (nn, numéro de séquence) tested with error "cannot initialise expert".

J'ai essayé de compiler l'Expert Advisor à partir du signal ma_cross.mqh, qui est fourni avec l'article, il donne la même erreur. Enfin, j'ai essayé l'Expert Advisor prêt à l'emploi qui est fourni avec l'article, et encore une fois la même erreur !!! Quel est le problème, pouvez-vous me le dire ?


 
Essayez de recompiler l'indicateur personnalisé fourni "Custom Moving Average.mq5". Si la version du fichier Custom Moving Average.ex5 ne coïncide pas avec la version actuelle du compilateur, le handle de l'indicateur ne sera pas créé lors de l'initialisation du conseiller expert généré. Il semble que vous soyez dans ce cas.
Переход на новые рельсы: пользовательские индикаторы в MQL5
Переход на новые рельсы: пользовательские индикаторы в MQL5
  • 2009.11.23
  • Андрей
  • www.mql5.com
Я не буду перечислять все новые возможности и особенности нового терминала и языка. Их действительно много, и некоторые новинки вполне достойны освещения в отдельной статье. Вы не увидите здесь кода, написанного по принципам объектно-ориентированного программирования — это слишком серьезная тема для того, чтобы просто быть упомянутой в контексте как дополнительная вкусность для кодописателей. В этой статье остановимся подробней на индикаторах, их строении, отображении, видах, а также особенностях их написания по сравнению с MQL4.
 

Merci pour votre aide, j'ai recompilé, mais le problème persiste. De plus, je tiens à préciser que j'ai téléchargé metatrader il y a une semaine depuis le site officiel de metatrader, je doute donc que quoi que ce soit ait eu le temps de devenir obsolète.

De plus, j'ai essayé de tester cet Expert Advisor à partir de deux ordinateurs différents.

 
danielalmaty:

Merci pour votre aide, j'ai recompilé, mais le problème persiste. De plus, je tiens à préciser que j'ai téléchargé metatrader il y a une semaine depuis le site officiel de metatrader, je doute donc que quoi que ce soit ait eu le temps de devenir obsolète.

De plus, j'ai essayé de tester cet Expert Advisor à partir de deux ordinateurs différents.

Vous devriez essayer de faire des tests simples (pas d'optimisation). Le journal contiendra des informations plus détaillées sur la raison de la non-initialisation de l'Expert Advisor.
 

J'ai essayé d'exécuter un seul test sans optimisation, aucune erreur, tout se passe bien, mais pas une seule transaction n'a été effectuée dans le test pendant toute la période.

 
danielalmaty:

J'ai essayé d'exécuter un seul test sans optimisation, aucune erreur, tout se passe bien, mais pas une seule transaction n'a été effectuée dans le test pendant toute la période.

Pouvez-vous montrer les paramètres de l'Expert Advisor et me dire sur quel serveur de trading vous effectuez les tests? Avez-vous un compte actif ?
 

Début des tests sur le serveur MIGBank-Demo.

Les paramètres du Conseiller Expert sont les suivants

//+------------------------------------------------------------------+
//| Entrées|
//+------------------------------------------------------------------+
//--- les entrées pour l'expert
input string         Expert_Title             ="ssssa";  // Nom du document
ulong                Expert_MagicNumber       =847;      // 
bool                 Expert_EveryTick         =false;    // 
//--- entrées pour le signal principal
input int            Signal_ThresholdOpen     =10;       // Valeur seuil du signal à ouvrir [0...100]
input int            Signal_ThresholdClose    =10;       // Valeur seuil du signal à fermer [0...100]
input double         Signal_PriceLevel        =0.0;      // Niveau de prix pour exécuter une transaction
input double         Signal_StopLevel         =50.0;     // Niveau de Stop Loss (en points)
input double         Signal_TakeLevel         =50.0;     // Niveau de Take Profit (en points)
input int            Signal_Expiration        =4;        // Expiration des ordres en attente (en barres)
input int            Signal_MaCross_FastPeriod=13;       // My_MA_Cross(13,MODE_SMA,21,...) Période de MA rapide
input ENUM_MA_METHOD Signal_MaCross_FastMethod=MODE_SMA; // My_MA_Cross(13,MODE_SMA,21,...) Méthode de MA rapide
input int            Signal_MaCross_SlowPeriod=21;       // My_MA_Cross(13,MODE_SMA,21,...) Période de MA lente
input ENUM_MA_METHOD Signal_MaCross_SlowMethod=MODE_SMA; // My_MA_Cross(13,MODE_SMA,21,...) Méthode des MA lentes
input double         Signal_MaCross_Weight    =1.0;      // My_MA_Cross(13,MODE_SMA,21,...) Poids [0...1.0]
//--- des intrants pour de l'argent
input double         Money_FixLot_Percent     =10.0;     // Pourcentage.
input double         Money_FixLot_Lots        =0.1;      // Volume fixe

Comme je l'ai dit, j'ai essayé d'exécuter l'Expert Advisor fourni avec l'article et j'ai obtenu le même résultat. Vous pouvez donc voir les paramètres en téléchargeant le fichier de l'article.