Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 783

 

Est-il possible de créer un modèle et de l'appliquer à plusieurs fonctions ?

template<typename T>
void Fun1(T &y)
{тело
}
void Fun1(T &r,T k)
{тело
}
int Fun1(T &r,T k)
{тело return(0);
}

Si des variables du même type sont utilisées, il serait très utile de savoir s'il est possible d'utiliser un modèle pour plusieurs fonctions.

 
Bonjour, pourriez-vous me dire comment ajouter les cotations du pétrole, des indices et des métaux ?
 
vfrfhjybgjakjncmrb:
Bonjour, pourriez-vous me dire comment ajouter des cotations pour le pétrole, les indices et les métaux ?

Cela dépend d'abord du fait que le bureau les diffuse ou non. Cela dépend également du terminal dans lequel vous travaillez. Si le bureau les diffuse, il faut alors savoir sur quels comptes et dans quelles conditions ces cotations sont diffusées, il suffit peut-être d'ouvrir la liste des instruments et ces instruments s'y trouvent. Si le bureau les diffuse dans des conditions qui vous sont impossibles, vous devez créer un tableau avec ces citations et les mettre à jour à chaque fois. Êtes-vous sûr que votre société de courtage diffusera Oil ?

 
Seric29:

Est-il possible de créer un modèle et de l'appliquer à plusieurs fonctions ?

Si des variables du même type sont utilisées, il serait très utile de savoir s'il est possible d'utiliser un modèle pour plusieurs fonctions.

Non. Une description complète de chaque fonction doit être donnée séparément. Sinon, vous ne serez pas en mesure de lire votre propre code plus tard.

 
Comment puis-je supprimer un indicateur particulier de tous les graphiques en une seule fois ? L'application d'un nouveau modèle ne fonctionne pas. Que diriez-vous d'un script ?
 
Ilya Prozumentov:

Non. Une description complète de chaque fonction doit être donnée séparément. Sinon, vous ne serez plus capable de lire votre propre code après un certain temps.

C'est dommage. Vous ne serez pas capable de lire votre propre code de toute façon si vous ne le faites pas. Je veux juste écrire des programmes compacts, car on utilise souvent des variables du même type dans les fonctions, c'est pourquoi j'ai demandé. Je pensais qu'il serait possible d'utiliser des "classes", mais je ne suis toujours pas familier avec elles. Je saurai ainsi si je dois créer des modèles pour de nombreuses fonctions.

 

Qui peut me dire pourquoi cette entrée ne fonctionne pas. Je veux accéder aux champs des structures qui stockent un tableau et le faire tourner en fonction de la condition qui sera remplie.l'exécution de la condition dépend de la fonctionArrayDimension.

   struct SD1{
   int a[10];//int q[10][2];
};SD1 a1;

struct SD2{
   int a[10][2];
};SD2 a2;

template<typename T>//,typename W
void MoveArray(T & s){//,W&e
   //Alert(ArrayDimension(s.a));
     int r=0;r=ArrayDimension(s.a);Print("r-ранг: ",r);if(r==1)пишу условие что если ранг равен 1му 
      {for(int cn=0; cn<=8; cn++)                              то крутить этот цикл
     {                
      s.a[cn]=s.a[cn+1];
     }} else if (r==2)            если ранг равен 2ум
      {for(int cn=0; cn<=8; cn++) крутить этот цикл
     {                
      s.a[cn][0]=s.a[cn+1][0];
      s.a[cn][1]=s.a[cn+1][1];
     }}  
}

Finalement,il arrive dans la première boucle malgré le fait quelaconditionif(r==1)est fausse, pourquoi il y arrive si le rang est 2um, comment malgré le faux il arrive dans le corps où quelque chose est exécuté.

   MoveArray(a2);в OnTick
   for(int i=0;i<10;i++){Print("q: ",i,": ",a2.a[i][0]);}
int yy=ArrayDimension(a2.a);Print("Ранг: ",yy," ");
 
Seric29:

C'est dommage. De toute façon, vous ne serez pas en mesure de lire votre propre code si vous ne le faites pas ou si vous ne le faites pas. Je veux juste écrire des programmes compacts, car on utilise souvent des variables du même type dans les fonctions, c'est pourquoi j'ai demandé. Je pensais qu'il serait possible d'utiliser des "classes", mais je ne suis toujours pas familier avec elles. Je saurai ainsi si je dois créer des modèles pour de nombreuses fonctions.

Je n'arrive pas à saisir l'essentiel de la manière dont la compacité serait obtenue. Dans l'exemple ci-dessus, cela permet d'économiser 2 lignes. Si vous voulez les économiser autant, vous pouvez écrire une macrosubstitution et l'utiliser dans la ligne précédant la fonction

#define  templ(T) templeate<typename T>

templ(T1) void Funct(T1 a)
 
Ilya Prozumentov:
#define  templ(T) template<typename T>

templ(T1) void Funct(T1 a)

Est-il nécessaire d'écriretempl(T1) devant chaque fonctionpour qu'elle prenne une variable ou l'argument requis ? Pourquoitempl(T) est déclaréettempl(T1) appelé, dois-je ajouter un nombre avant chaque fonction(templ(T1)templ(T2)templ(T3)) ou dois-je écriretempl(T1) partout ?Et si plusieurs paramètres sont notés danstemplate<typename T>alors comment cela se passerait-il, comme cecitemplate<typename T,typename P,typename Q>-templ(T,P,Q).

 
J'ai un problème ! Je veux traîner le profit avec un autre EA, mais cet EA ne me laisse pas tirer le stop loss pour le profit ! Quelqu'un peut-il le corriger ? L'auteur ne répond pas !
Dossiers :
cm-MA_Gread.mq4  18 kb
Raison: