Questions des débutants MQL5 MT5 MetaTrader 5 - page 1331
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
Aidez à corriger l'indicateur, il n'est pas affiché dans le terminal MT5, il donne des erreurs lors de la compilation.
Aidez à réparer l'indicateur, il ne s'affiche pas dans le terminal MT5, il donne des erreurs lors de la compilation.
Le plus simple est de définir ArraySetAsSeries(Open,true) ; ArraySetAsSeries(Close,true) ; et ainsi de suite dans OnCalculate au tout début de tous les tableaux.
c'est la surprise traditionnelle sur un lieu plat : en 5 les directions d'indexation par défaut sont différentes de celles en 4.
L'indicateur n'utilise pas de tampons, il construit simplement des objets graphiques. Après le démarrage, appuyez sur Ctrl+B et voyez où il les a placés.
En fouillant dans la documentation et les forums ...
Comment rendre les variables de type pointeur globales [dans l'exemple var], si elles sont créées dans OnInit() par string :
CObj* var=new CObj(p1,p2,p3);
et le nombre d'objets et les paramètres du constructeur ne sont pas connus à l'avance et sont calculés dans OnInit() ?
En fouillant dans la documentation et les forums ...
Comment rendre globales les variables de type pointeur, si elles sont créées dans OnInit() :
et le nombre d'objets et les paramètres du constructeur ne sont pas connus à l'avance et sont calculés dans OnInit() ?
Je ne comprends rien, mais passe un tableau de pointeurs CArrayObj aux objets créés dans OnInit()
Rien de compris, mais passer un tableau de pointeurs CArrayObj aux objets créés dans OnInit()
Artem, merci pour la réponse.
Je m'excuse pour le manque de clarté de la question)
Il existe trois variables globales de type pointeur vers un objet dans Expert Advisor : var1, var2, var3.
Avant d'exécuter OnInit(), on ne sait pas si toutes ces variables seront nécessaires (ceci est lié aux délais), on ne connaît pas non plus les paramètres des constructeurs, qui vont initialiser les objets.
Comment créer de telles variables dans OnInit() pour qu'elles soient globales ?
Artem, merci pour votre réponse.
Je m'excuse pour le manque de clarté de la question)
Trois variables globales de type pointeur peuvent être utilisées dans l'EA : var1, var2, var3.
Avant d'exécuter OnInit(), on ne sait pas si toutes ces variables seront nécessaires (ceci est lié aux délais), on ne connaît pas non plus les paramètres des constructeurs qui vont initialiser les objets.
Comment créer de telles variables dans OnInit(), afin qu'elles soient globales ?
Je ne sais pas quel constructeur magique vous avez là, qui ne contient que des inconnues :)
Il n'est pas nécessaire de déclarer au préalable les objets en tant qu'instances.
Vous devez déclarer un tableau CArrayObj. Vos objets eux-mêmes doivent être des descendants de CObject.
Créez votre objet par new et ajoutez un pointeur sur celui-ci à la liste.
Créez l'objet suivant et ajoutez-le à la liste, et ainsi de suite.
Cette liste - un pointeur vers elle (et la liste est déclarée globalement) - est passée à vos constructeurs.
Mais voici comment vous alliez faire les constructeurs avec des arguments inconnus à l'avance - je ne comprends pas du tout. Essayez de le clarifier
Mais voici comment vous allez faire des constructeurs avec des arguments inconnus à l'avance - je suis un peu confus ici. Essayez de l'expliquer
Création d'objets de type CIsNewBar pour chaque horizon temporel utilisé pour chaque symbole.
HH. Il yavait un problème avec la classeCArrayObj: lors de l'accès aux éléments de typeCArrayObj* ArrayObj. At(0), les membres de classe de l'objet qui est At(0) sont inaccessibles, bien que ces membres de classe soient exactement publics, c'est-à-dire une construction de type ArrayObj.At(0).method(parameter) ne fonctionne pas.Les caractères sont spécifiés par une ligne avec des séparateurs dans le paramètre d'entrée, donc vous ne pouvez pas créer tous les objets au préalable avant OnInit().
C'est-à-dire que le premier paramètre inconnu du constructeur est un symbole.
Le deuxième paramètre inconnu du constructeur est un délai, car chaque symbole aura son propre ensemble de délais, également transmis par une chaîne avec des délimiteurs dans le paramètre d'entrée.
Et j'ai également peur d'utiliser ces bibliothèques, peut-être que quelque chose va changer dans celles-ci lors de la mise à jour du terminal, et mon Expert Advisor va soudainement cesser de fonctionner...
Créer des objets de type CIsNewBar pour chaque horizon temporel utilisé pour chaque symbole.
P.S.Il y avait un problème avec la classeCArrayObj: lors de l'accès aux éléments de typeCArrayObj* ArrayObj. At(0), les membres de classe de l'objet que At(0) n'est pas disponible, bien que ces membres de classe soient exactement publics, c'est-à-dire une construction comme ArrayObj.At(0).method(parameter) ne fonctionne pas.Les caractères sont spécifiés par une ligne avec des délimiteurs dans le paramètre d'entrée, il est donc impossible de créer tous les objets avant OnInit().
C'est-à-dire que le premier paramètre inconnu du constructeur est un symbole.
Le deuxième paramètre inconnu du constructeur est un délai, car chaque symbole aura son propre ensemble de délais, également transmis par une chaîne avec des délimiteurs dans le paramètre d'entrée.
Et j'ai également peur d'utiliser ces bibliothèques, peut-être que quelque chose va changer dans celles-ci lors de la mise à jour du terminal, et mon Expert Advisor va soudainement cesser de fonctionner...
C'est faux d'une certaine façon...
Écrivez en mots simples ce que vous voulez faire. Sans aucune référence à vos tentatives pour tout coder.
C'est juste que ça ne semble pas juste...
Écrivez en mots simples ce que vous voulez faire. Sans aucune mention de vos tentatives pour tout coder.
Conseiller expert multi-devises.
La liste des symboles est spécifiée via le paramètre d'entrée, la chaîne avec le délimiteur "AUDUSD,EURUSD,GBPUSD...", le nombre de symboles n'est pas prédéfini.
Pour chaque symbole, il existe deux horizons temporels, sur lesquels fonctionne son "propre" système de trading.
En conséquence, il existe deux paramètres d'entrée, des chaînes de caractères délimitées par : une courte période de temps pour un symbole respectif "M1,M30,M5..."
une longue période de temps pour le symbole respectif "H1,D1,H4.."
Par exemple, pour AUDUSD, les horizons temporels sont M1 et H1, pour EURUSD M30 et D1, etc.
Dans OnTick(), pour chaque symbole, il est nécessaire de suivre l'apparition d'une nouvelle barre sur les deux horizons temporels (court et long) pour prendre des décisions de trading.
J'ai essayé de l'écrire aussi simplement que possible).
Conseiller expert multi-devises.
La liste des symboles est définie via un paramètre d'entrée, une chaîne de caractères avec le séparateur "AUDUSD,EURUSD,GBPUSD...", le nombre de symboles n'est pas prédéfini.
Pour chaque symbole, il existe deux horizons temporels, sur lesquels fonctionne son "propre" système de trading.
En conséquence, il existe deux paramètres d'entrée, des chaînes de caractères délimitées par : une courte période de temps pour un symbole respectif "M1,M30,M5..."
une longue période de temps pour le symbole respectif "H1,D1,H4.."
Par exemple, pour AUDUSD, les horizons temporels sont M1 et H1, pour EURUSD M30 et D1, etc.
Dans OnTick(), pour chaque symbole, il est nécessaire de suivre l'apparition d'une nouvelle barre sur les deux horizons temporels (court et long) pour prendre des décisions de trading.
J'ai essayé de l'écrire de la manière la plus simple possible).
Avez-vous déjà une classe pour un nouveau bar ?
Et à quoi ressemblent exactement les paramètres d'entrée ?