pour continuer...
J'ai pensé à convertir les lignes de cet exemple :
if(m_method_fast!=MODE_SMA && m_method_fast!=MODE_EMA && m_method_fast!=MODE_SMMA && m_method_fast!=MODE_LWMA)
if(m_method_slow!=MODE_SMA && m_method_slow!=MODE_EMA && m_method_slow!=MODE_SMMA && m_method_slow!=MODE_LWMA)
Dans l'algorithme :
1) deux tableaux :
le premier contient m_method_fast et m_method_slow
le second contient les valeurs de l'énumération ENUM_MA_METHOD.
2) Dans une boucle, en prenant la valeur du premier tableau, vérifier si elle se trouve dans le second.
Pouvez-vous me dire comment mettre cela en œuvre ?
Je comprends qu'il est nécessaire de connecter CArray . Mais quel type ?
Qui peut, s'il vous plaît, écrire une partie du code, parce que les choses élémentaires de base, et avec la syntaxe je ne peux pas encore attraper.
Je vous remercie.
- www.mql5.com
pour continuer...
J'ai pensé à convertir les lignes de cet exemple :
if(m_method_fast!=MODE_SMA && m_method_fast!=MODE_EMA && m_method_fast!=MODE_SMMA && m_method_fast!=MODE_LWMA)
if(m_method_slow!=MODE_SMA && m_method_slow!=MODE_EMA && m_method_slow!=MODE_SMMA && m_method_slow!=MODE_LWMA)
Dans l'algorithme :
1) deux tableaux :
le premier contient m_method_fast et m_method_slow
le second contient les valeurs de l'énumération ENUM_MA_METHOD.
2) Dans une boucle, en prenant la valeur du premier tableau, vérifier si elle se trouve dans le second.
Pouvez-vous me dire comment mettre cela en œuvre ?
Je comprends qu'il est nécessaire de connecter CArray . Mais quel type ?
Qui peut, s'il vous plaît, écrire une partie du code, parce que les choses élémentaires de base, et avec la syntaxe je ne peux pas encore attraper.
Je vous remercie !
Comme ceci :
func(int& array1[],int& array2[]) { int total1=ArraySize(array1); int total2=ArraySize(array2); //--- for(int i=0;i<total1;i++) { for(int j=0;j<total2;j++) { if(array1[i]==array2[j]) { // l'a trouvé } } } }
Oui, j'en suis déjà arrivé là dans C++ pour débutants :-)
Sauf qu'il n'existe pas de type de données ENUM_MA_METHOD à cet endroit
Comment puis-je savoir de quel type de données se compose cette énumération ? Est-il possible de parcourir en boucle l'énumération ENUM_MA_METHOD elle-même ?
Je vois deux façons de procéder :
//première façon de décrire les deux tableaux ENUM_MA_METHOD l_array_enum_ma_method[3]; l_array_enum_ma_method[0]=MODE_SMA; l_array_enum_ma_method[1]=MODE_EMA; l_array_enum_ma_method[2]=MODE_SMMA; l_array_enum_ma_method[3]=MODE_LWMA; print("array size %d", ArraySize(l_array_enum_ma_method)); print("ENUM_MA_METHOD size %d", ArraySize(ENUM_MA_METHOD)); ENUM_MA_METHOD l_array_select_method[1]; l_array_select_method[0]=m_MethodFast; l_array_select_method[1]=m_MethodSlow; //suivant le régime //deuxièmement, connecter la bibliothèque //#include <Arrays\ArrayInt.mqh> CArrayInt *l_array_enum_ma_method=new CArrayInt; l_array_enum_ma_method[0]=MODE_SMA; l_array_enum_ma_method[1]=MODE_EMA; l_array_enum_ma_method[2]=MODE_SMMA; l_array_enum_ma_method[3]=MODE_LWMA; l_array_enum_ma_method.Sort(); //--- élément de recherche if(l_array_enum_ma_method.Search(m_MethodFast)!=-1) printf("Element found"); else printf("Element not found"); //--- supprimer le tableau delete l_array_enum_ma_method;
dans la seconde, il faut connecter une bibliothèque d'un type spécifique, et quel est le type de ENUM_MA_METHOD ?
hmm... étrange, j'ai cliqué sur répondre et il s'est avéré qu'il s'agissait d'un nouveau post....
Oui, j'en suis déjà arrivé là dans C++ pour débutants :-)
Sauf qu'il n'existe pas de type de données ENUM_MA_METHOD à cet endroit
Comment puis-je savoir de quel type de données se compose cette énumération ? Est-il possible de parcourir en boucle l'énumération ENUM_MA_METHOD elle-même ?
Je vois deux façons de procéder :
dans la seconde, il faut connecter une bibliothèque d'un type spécifique, et quel est le type de ENUM_MA_METHOD ?
hmm... étrange, j'ai cliqué sur répondre et il s'est avéré que c'était un nouveau post....
Première méthode :
ENUM_MA_METHOD l_array_enum_ma_method[]={MODE_SMA,MODE_EMA,MODE_SMMA,MODE_LWMA}; //--- plus loin dans la ligne
Deuxièmement :
#include <Arrays\ArrayInt.mqh> CArrayInt l_array_enum_ma_method; //--- l_array_enum_ma_method.Add(MODE_SMA); l_array_enum_ma_method.Add(MODE_EMA); l_array_enum_ma_method.Add(MODE_SMMA); l_array_enum_ma_method.Add(MODE_LWMA); //--- plus loin dans la ligne
Je n'arrive pas à comprendre pourquoi tant d'étapes sont nécessaires ?
oops... merci beaucoup, c'est ce que j'essaie de faire... off.
Dans le premier cas, j'ai déjà vu cette façon d'enregistrer, mais je n'ai pas encore réalisé ce dont j'avais besoin,
et dans le second cas, j'ai été dérouté par ArrayInt. Je pensais que puisque Int, cela signifiait que seule la valeur numérique était stockée, mais ,
il semble que le compilateur convertisse MODE_SMA en un nombre, et lors de la récupération de la valeur, il sera nécessaire d'effectuer une conversion implicite (en utilisant des parenthèses) vers le type(ENUM_MA_METHOD), c'est-à-dire quelque chose de similaire à ce qui suit.
ENUM_POSITION_TYPE type=(ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE);
P.S. Dans la troisième section 3. Méthodes de définition des paramètres, nous devrions effacer les lignes déclarées prématurément, je pense que
:
CiCustom m_fast_ma; // indicateur en tant qu'objet CiCustom m_slow_ma; // indicateur en tant qu'objet
P.S. Dans la troisième section 3. Méthodes de définition des paramètres, je pense que nous devrions effacer les lignes déclarées prématurément :
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 ?
//première façon de décrire les deux tableaux //int *Finger_m_MethodFast ; //int *Finger_m_MethodSlow ; //Finger_m_MethodFast=&m_MethodFast ; //Finger_m_MethodFast=&m_MethodSlow ; // int l_array1_select_method[]={Finger_m_MethodFast,Finger_m_MethodFast} ; ENUM_MA_METHOD l_array1_select_method[]={m_MethodFast,m_MethodSlow}; ENUM_MA_METHOD l_array2_enum_ma_method[]={MODE_SMA,MODE_EMA,MODE_SMMA,MODE_LWMA}; int total_array1=ArraySize(l_array1_select_method); int total_array2=ArraySize(l_array2_enum_ma_method); bool NoErrorsFlag=false; for(int i_array1=0;i_array1<total_array1;i_array1++) { for(int i_array2=0;i_array2<total_array2;i_array2++) { if(l_array1_select_method[i_array1]=l_array2_enum_ma_method[i_array2]) { NoErrorsFlag=true; } } if(!NoErrorsFlag) { PrintFormat("Invalid smoothing type %s moving average !",EnumToString(l_array1_select_method[i_array1])); } } if(!NoErrorsFlag) { return(false); }
- 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 Créez votre propre robot de trading en 6 étapes ! a été publié :
Si vous ne savez pas comment les classes de trades se construisent et que vous avez peur des mots tels que « Programmation orientée objet », alors cet article est pour vous. En fait, vous n'avez pas besoin de connaître les détails pour écrire votre propre module de signaux de trading. Suivez simplement quelques règles simples. Tout le reste sera fait par l'assistant MQL5, et vous obtiendrez un robot de trading prêt à l'emploi !
Certes, l'assistant MQL5 simplifie grandement la création d'Expert Advisors, mais vous devez d'abord savoir ce qui sera utilisé comme entrée pour cela. Pour créer automatiquement un Expert Advisor à l'aide de l'Assistant MQL5, assurez-vous que ses composants adhèrent aux cinq classes de base de la section Classes de base des Expert Advisors :
Voici toute la force de la « grande et terrible » approche qu'on appelle la programmation orientée objet (POO). Mais n'ayez pas peur, maintenant presque tout le monde a un téléphone portable avec beaucoup de fonctions, et presque personne ne sait comment il fonctionne. Nous n'avons pas besoin d'étudier tout cela, nous n'aborderons que quelques fonctions de la classe CExpertSignal.
Dans cet article, nous allons passer en revue les étapes de création d'un module de signaux de trading, et vous verrez comment faire cela sans avoir à apprendre la POO ou les cours. Mais si cela vous dit, vous pouvez donc explorer davantage.
Auteur : MetaQuotes