![MQL5 - Langage des stratégies de trading intégré au terminal client MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
dans un EA en contournant le besoin de valeurs d'entrée pour chaque indicateur.
L'alternative dans son backtester est de modifier manuellement chaque indicateur
avec un tampon de signal.
Essayez ceci : c'est un peu direct, mais c'est la seule approche possible jusqu'à présent.
Sorties :
Eléments ENUM :
Compte=3
0 x1=-10
1 x2=0
2 x3=11
Il est important de spécifier des valeurs raisonnables pour les paramètresstart etstop, car le cycle de la valeur minimale à la valeur maximale (qui est utilisé par défaut lorsque les paramètres sont ignorés) s'exécute trop lentement si l'on tient compte du fait que des fonctions string sont utilisées à l'intérieur.
bool AddEnum(ENUMTYPE enumIn) {
enumIn = 0;
//iterate through enum and add as combo box
for(int i = 0; i<sizeof(enumIn); i++, enumIn++) {
m_list.AddItem(EnumToString(enumIn),i);
PrintFormat("adding %i = %s", i, EnumToString(enumIn));
}
return(0);
}
J'ai ajouté ceci à la classe CComboBox, afin que je puisse passer n'importe quel type ENUM, et qu'il l'ajoute comme une boîte combo.
Mais vous pouvez le modifier pour faire ce dont vous avez besoin.
Le problème est que si vous ne passez pas un ENUM et passez quelque chose comme un double ou un float, vous risquez de planter votre application.
Je ne pense pas qu'il y ait un moyen de vérifier le type de données passé.
bool AddEnum(ENUMTYPE enumIn) {
enumIn = 0;
//iterate through enum and add as combo box
for(int i = 0; i<sizeof(enumIn); i++, enumIn++) {
m_list.AddItem(EnumToString(enumIn),i);
PrintFormat("adding %i = %s", i, EnumToString(enumIn));
}
return(0);
}
J'ai ajouté ceci à la classe CComboBox, afin que je puisse passer n'importe quel type ENUM, et qu'il l'ajoute comme une boîte combo.
Mais vous pouvez le modifier pour faire ce dont vous avez besoin.
Le problème est que si vous ne passez pas un ENUM et passez quelque chose comme un double ou un float, vous risquez de planter votre application.
Je ne pense pas qu'il y ait un moyen de vérifier le type de données passé.
Oui, c'est vrai, oups. Je viens de le remarquer.
Il se trouve que lorsque j'ai fait ça, le ENUM que j'utilisais avait en fait 4 propriétés:-)
enum Combolist1{item1, item2, item3, item4, item5} ;
for(int i = 0 ; GetLastError()==0 ; i++) {Par exemple, il y a une définition d'un enum :
enum ENUM_FRUIT {APPLE, BANANA, GRAPE};
Ensuite, je veux l'utiliser dans une boucle :
FRUIT_FIRST=APPLE, FRUIT_LAST=GRAPE};
for (ENUM_FRUIT i = APPLE; i <= FRUIT_LAST; ++i) {
Print(EnumToString(i));
}
#define FRUIT_FIRST APPLE
#define FRUIT_LAST GRAPE
for (ENUM_FRUIT i = APPLE; i <= FRUIT_LAST; ++i) {
Print(EnumToString(i));
}
PERIOD_M1, PERIOD_M2, PERIOD_M3, PERIOD_M4, PERIOD_M5, PERIOD_M6,
PERIOD_M10, PERIOD_M12, PERIOD_M15, PERIOD_M20, PERIOD_M30, PERIOD_H1,
PERIOD_H2, PERIOD_H3, PERIOD_H4, PERIOD_H6, PERIOD_H8, PERIOD_H12,
PERIOD_D1, PERIOD_W1, PERIOD_MN1};
ENUM_TIMEFRAMES next(ENUM_TIMEFRAMES curr){
for(int i=0; gcPeriods[i] != curr; ++i){}
return gcPeriods[i+1];
}
Mauvaise conception de ce qui
cela signifie le nombre de membres dans un enum ?
Je sais que cette conversation est assez ancienne mais voici un moyen facile de remplir un tableau de n'importe quel type d'énumération.
J'ajoute juste ma solution pour les générations futures sur la façon dont j'ai résolu ce problème.
Le problème est donc de connaître le nombre d'entrées de l'énumération de façon dynamique avec la possibilité d'ajouter ou de supprimer des valeurs de l'énumération. J'ai besoin de le savoir pour créer des tableaux de taille fixe avec des valeurs d'énumération comme index de tableau. Ce que j'ai tendance à faire, c'est d'ajouter une valeur réservée à la fin de l'énumération qui n'est jamais utilisée que comme valeur de longueur. Voici un exemple.
C'est agréable et facile parce que vous n'avez pas besoin d'être fixé à la dernière entrée partout commeVous pouvez aussi ajouter plus d'entrées à la fin de l'énumération et le tableau et la boucle fonctionneront toujours.