Messieurs les camarades ! J'ai lu l'article ! J'ai fait tout ce qui est écrit dans l'article, et je pense que maintenant je vais arriver au paradis. Mais non - Master MKL 5 n'a pas vu mon fichier avec les signaux. J'ai tout vérifié à nouveau, tout refait, vérifié à nouveau, mais le signal n'est pas visible dans l'assistant de création d'Expert Advisors. Je joins mon fichier, que j'ai créé conformément aux recommandations de l'article. Aidez-moi à comprendre ce que j'ai mal fait ou au contraire, l'auteur de l'article n'a pas ajouté quelque chose d'important, ce qui fait que ça ne colle pas du tout. En bref, aidez-moi de toutes les manières possibles.
Ledescripteur de classe est une partie importante du texte source.
Il y a deux erreurs évidentes dans votre descripteur. L'une d'entre elles vous empêche de détecter le signal parce qu'un ENUM inexistant est spécifié. La seconde causera des problèmes lors de la compilation (nom de paramètre incorrect).
Encore une subtilité. Il ne doit y avoir qu'un seul espace avant le mot-clé, dans chaque ligne de descripteur. (Je pense que cette restriction sera supprimée à l'avenir, mais pour l'instant c'est ainsi).
// wizard description start
//+---------------------------------------------------------------------------+
//| Description of the class |
//| Title=Сигнал пересечению ценой скользящей средней |
//| Type=Signal |
//| Name=Sample |
//| Class=CSampleSignal |
//| Page= |
//| Parameter=PeriodMA,int,12 |
//| Parameter=ShiftMA,int,0 | было SniftMA
//| Parameter=MethodMA,ENUM_MA_METHOD,MODE_EMA |
//| Parameter=AppliedMA,ENUM_APPLIED_PRICE,PRICE_CLOSE | было ENUM_MA_APLLIED_PRICE
//| Parameter=Limit,double,0.0 |
//| Parameter=StopLoss,double,50.0 |
//| Parameter=TakeProfit,double,50.0 |
//| Parameter=Expiration,int,10 |
//+---------------------------------------------------------------------------+
// wizard description end
Plus loin dans le texte.
Ne pas avoir de constructeur est une mauvaise chose. Il faut initialiser les données membres avec des valeurs par défaut. Après tout, dans le cas général, la méthode de définition d'un paramètre peut ne pas être appelée.
Enfin, les méthodes sont mal décrites
void LimitMA (int value) {m_limit=value;}
void StopLoss (int value) {m_stop_loss=value;}
void TakeProfit (int value) {m_take_profit=value;}
doivent
void LimitMA (double value) {m_limit=value;}
void StopLoss (double value) {m_stop_loss=value;}
void TakeProfit (double value) {m_take_profit=value;}
Merci beaucoup pour votre réponse, bien sûr. J'ai tout corrigé et cela a fonctionné.
Mais en compilant l'Expert Advisor lui-même, il m'a donné une erreur, que je n'aurais pas trouvée par moi-même si le compilateur l'avait trouvée. D'ailleurs, lorsque vous m'avez répondu, vous avez dû la corriger sans vous en apercevoir, mais elle figure dans le texte original de l'article.
Dans l'article.
void Limit(double value) { m_limit=value; }
en réponse à ma demande d'aide
void LimitМА(double value) { m_limit=value;}
absence de MA dans le fichier de signal, lors de la compilation de l'Expert Advisor lui-même après sa génération réussie, il génère l'erreur suivante
1 erreur(s), 0 avertissement(s) 2 1
Dans mon cas, au moins à la ligne 77, nous voyons
signal.Limit(Inp_Signal_Sample_Limit) ;
insérer MA après le mot Limit
L'erreur dans le texte de l'Expert Advisor disparaît.
Si je me trompe, je vous prie de m'excuser. Je ne suis pas un professionnel.
Et encore une chose : cette erreur apparaît quoi qu'il arrive :
'--' - l-value requise 1234.mq5 31 57
'--' - l-value requise 1234.mq5 31 59'--' - l-value requise 1234.mq5 31 61
'--' - valeur l requise 1234.mq5 31 63
"--" - valeur l requise 1234.mq5 31 65
"--" - valeur l requise 1234.mq5 31 67
'--' - valeur l requise 1234.mq5 31 69
'--' - valeur l requise 1234.mq5 31 71
"--" - valeur l requise 1234.mq5 31 73
"--" - valeur l requise 1234.mq5 31 75
"--" - valeur l requise 1234.mq5 31 77
"--" - valeur l requise 1234.mq5 31 79
"--" - valeur l requise 1234.mq5 31 81
"--" - valeur l requise 1234.mq5 31 83
"--" - valeur l requise 1234.mq5 31 85
"--" - valeur l requise 1234.mq5 31 87
"--" - valeur l requise 1234.mq5 31 89
"--" - valeur l requise 1234.mq5 31 91
"--" - valeur l requise 1234.mq5 31 93
"--" - valeur l requise 1234.mq5 31 95
'--' - valeur l requise 1234.mq5 31 97
'--' - valeur l requise 1234.mq5 31 99
"--" - valeur l requise 1234.mq5 31 101
"--" - valeur l requise 1234.mq5 31 103
"--" - valeur l requise 1234.mq5 31 105
"--" - valeur l requise 1234.mq5 31 107
"--" - valeur l requise 1234.mq5 31 109
"--" - valeur l requise 1234.mq5 31 111
"--" - valeur l requise 1234.mq5 31 113
"--" - valeur l requise 1234.mq5 31 115
'-' - opérande attendu 1234.mq5 31 117
'Inp_Signal_Sample_Expiration' - identificateur non déclaré 1234.mq5 77 22
32 erreur(s), 0 avertissement(s) 33 1
Allez à la ligne 31 de l'EA pour voir ce qui suit
input double Inp_Signal_Sample_StopLoss =50.0 ;
input double Inp_Signal_Sample_TakeProfit=50.0;
input int Inp_Signal_Sample_Expiration=10-------------------------------------------------------------;
//--- entrées pour l'argent
entrée double Inp_Money_FixLot_Percent =10.0 ;
input double Inp_Money_FixLot_Lots =0.1 ;
Supprimez la queue sous la forme d'une ligne pointillée venant de 10 et toutes les erreurs disparaissent.
Le conseiller expert est prêt à travailler et à optimiser.

- www.mql5.com
Oui, et par conséquent, la description ne devrait pas être Limit, mais aussi LimitMA.
Oui, LimitMA, j'ai vérifié.
En général, pour l'avenir... Lors de la création d'un descripteur de classe, utilisez plus activement le copier-coller, car le compilateur ne vérifie pas les commentaires (qui constituent le descripteur), et la coïncidence des noms de méthodes et des noms de paramètres du descripteur est importante. Cela n'apparaît que lors de la compilation de l'Expert Advisor et provoque des émotions négatives. Toutefois, comme vous pouvez le constater, il n'y a rien de fatal.
Et encore une chose : cette erreur apparaît quoi qu'il arrive :
'--' - l-value requise 1234.mq5 31 57

- www.mql5.com
Bonjour !
- Il y a une coquille dans le fichier joint, si je ne m'abuse ! Dans la description de la fonction CheckOpenLong, dans les lignes de calcul des variables sl et tp, les signes doivent être inversés.
- J'ai modifié la fonction CheckOpenLong comme suit :
bool CSampleSignal::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration) { Print("Close(0)=",DoubleToString(Close(0),5)," Close(1)=",DoubleToString(Close(1),5)); Print("Open(0)=",DoubleToString(Open(0),5)," Open(1)=",DoubleToString(Open(1),5)); Print("MA(0)=",DoubleToString(MA(0),5)," MA(1)=",DoubleToString(MA(1),5)); return(false); }
c'est-à-dire qu'elle devrait simplement sortir les valeurs de Close, Open et MA pour la dernière barre et la barre précédente. Donc, si la valeur de EveryTick est fausse, tout fonctionne comme il se doit, mais si elle est vraie, au lieu de valeurs, elle affiche des zéros ! Pouvez-vous me dire ce qui ne va pas ? Qu'est-ce que je fais de travers ?
Je vous remercie.
Bonjour !
- Il y a une coquille dans le fichier joint, si je ne m'abuse ! Dans la description de la fonction CheckOpenLong, dans les lignes de calcul des variables sl et tp, les signes devraient être inversés.
- J'ai modifié la fonction CheckOpenLong de la manière suivante : c'est à dire qu'elle ne doit sortir que les valeurs de Close, Open et MA pour la dernière barre et la barre précédente. Donc si la valeur de EveryTick est fausse, alors tout fonctionne comme il se doit, mais si elle est vraie - au lieu des valeurs, elle affiche des zéros ! Pouvez-vous me dire ce qui ne va pas ? Qu'est-ce que je fais de travers ?
Je vous remercie.
En ce qui concerne le point 1, merci d'avoir trouvé l'erreur. Elle sera corrigée.
Pour le point 2, il y avait une petite incohérence avec MQL5, corrigée. Elle devrait apparaître dans la prochaine version.

- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Vous acceptez la politique du site Web et les conditions d'utilisation
Un nouvel article Assistant MQL5 : Comment Créer un Module de Signaux de Trading a été publié :
L'article explique comment écrire votre propre classe de signaux de trading avec l’implémentation de signaux sur le croisement du prix et de la moyenne mobile, et comment l'inclure dans le générateur de stratégies de trading de l'assistant MQL5, et décrit également la structure et le format de la description de la classe générée pour l'assistant MQL5.
MetaTrader 5 fournit un outil puissant pour une vérification rapide des idées de trading. C'est le générateur de stratégies de trading duMQL5 Wizard. L'utilisation de l'assistant MQL5 pour la création automatique de codes Expert Advisor est décrite dans l'article « Assistant MQL5 : Création d'Expert Advisors sans Programmation". L'ouverture du système de génération de code vous permet d'ajouter vos propres classes de signaux de trading, de systèmes de gestion d'argent et de modules de suivi aux celles standard
Cet article décrit les principes d'écriture demodules de signaux de trading pour les utiliser lors de la création d'Expert Advisors avec l'assistant MQL5.
L'Expert Advisor créé avecMQL5 Wizard, est basé sur quatre piliers - quatre classes de base:
Figure 1. La structure de la classe de baseCExpert
Auteur : MetaQuotes