Questions des débutants MQL5 MT5 MetaTrader 5 - page 471
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
1. Tous les matchs.
2. Ce paramètre n'existe pas.
On m'a dit dans un autre fil que ce problème est insoluble dans MT4. :(
2. Je ne sais pas où vous avez trouvé le MA dans une fenêtre séparée pour pouvoir vous dire quoi que ce soit sur le paramètre. Mais... Si vous allez dans Indicateurs --> Oscillateurs --> Moyennes mobiles de l'oscillateur, il y a "Appliquer à :".
Ainsi, si vous essayez de mettre un autre indicateur dans une fenêtre séparée, dans certains cas, il peut être appliqué non seulement aux prix standard de l'énumération ENUM_APPLIED_PRICE, mais aussi aux données de cet indicateur qui se trouvent déjà dans la fenêtre. Peut-être êtes-vous dans cette situation.
3. Quel est le problème ? Que les trois MAs ne correspondent pas à trois MAs similaires (selon votre déclaration) ? Donc ce n'est pas insoluble, c'est un non-sens. S'ils sont faits correctement, ils sont forcément assortis. Quelle est la différence - trois MAs séparées avec leurs propres paramètres ou les trois mêmes MAs avec les mêmes paramètres, mais entassées dans un indicateur avec trois buffers... Vous voyez la différence ? Je ne le fais pas. Et si vous le voyez, alors cherchez une incohérence dans le calcul des MAKs.
D'ailleurs... Alligator est trois MA en un seul indicateur, chacune avec ses propres paramètres. Configurez les paramètres de la même manière avec vos trois MA distinctes et elles coïncideront. Mais vous avez toutes ces bacchanales dans une fenêtre séparée... Alors... à titre d'exemple
J'ai créé un indicateur 3MA(4,9,14) et j'ai décidé de le comparer pour vérifier son exactitude avec une fenêtre où les trois indicateurs sont MA(4), MA(9), MA(14). Mes cheveux se sont hérissés. :)
"Lorsqu'il y a trois indicateurs - MA(4), MA(9), MA(14)", la fenêtre d'indicateurs est auto-échelonnée par le premier indicateur rattaché à cette fenêtre. Dans votre cas, il s'agit probablement de la MA(4)
Pouvez-vous s'il vous plaît me donner une conception pour obtenir la valeur de l'indicateur intégré à partir du cadre temporel supérieur, mais à l'intérieur de ce cadre temporel.
Par exemple, le graphique actuel est de 15 minutes, j'ai besoin d'obtenir la valeur de l'indicateur, calculée par jour, mais il y a 45 minutes, comment faire ?
Voici un algorithme simple qui renvoie la valeur de l'indicateur, mais uniquement pour la barre actuelle.
double iDelta(int Variant,int n,int TF,int index)
{
double Fibo=0;
if(Variant==1) Fibo=0.236;
if(Variant==2) Fibo=0.382;
if(Variant==3) Fibo=0.5;
if(Variant==4) Fibo=0.618;
if(Variant==5) Fibo=0.764;
if(Variant==6) Fibo=1;
if(Variant==7) Fibo=1.236;
if(Variant==8) Fibo=1.382;
if(Variant==9) Fibo=1.5;
if(Variant==10) Fibo=1.618;
if(Variant==11) Fibo=2.0;
if(Variant==12) Fibo=2.236;
if(Variant==-1) Fibo=-0.236;
if(Variant==-2) Fibo=-0.382;
if(Variant==-3) Fibo=-0.5;
if(Variant==-4) Fibo=-0.618;
if(Variant==-5) Fibo=-0.764;
if(Variant==-6) Fibo=-1;
if(Variant==-7) Fibo=-1.236;
if(Variant==-8) Fibo=-1.382;
if(Variant==-9) Fibo=-1.5;
if(Variant==-10) Fibo=-1.618;
if(Variant==-11) Fibo=-2.0;
if(Variant==-12) Fibo=-2.236;
return ( NormalizeDouble(iOpen(Symbol(),TF,index)+iATR(Symbol(), TF, n, index+1)*Fibo,Digits) );
}
Essayez de désactiver l'auto-dimensionnement des fenêtres d'indicateurs, peut-être que les choses se calmeront.
"où les trois indicateurs sont MA(4), MA(9), MA(14)" la fenêtre d'indicateur est auto-échelonnée par le premier indicateur attaché à cette fenêtre. Dans votre cas, il s'agit probablement de MA(4)
2. Je ne sais pas où vous avez trouvé le MA dans une fenêtre séparée pour pouvoir vous dire quoi que ce soit sur le paramètre. Mais... Si vous allez dans Indicateurs --> Oscillateurs --> Moyennes mobiles de l'oscillateur, il y a "Appliquer à :".
Ainsi, si vous essayez de mettre un autre indicateur dans une fenêtre séparée, dans certains cas, il peut être appliqué non seulement aux prix standard de l'énumération ENUM_APPLIED_PRICE, mais aussi aux données de cet indicateur qui se trouvent déjà dans la fenêtre. Peut-être êtes-vous dans cette situation.
3. Quel est le problème ? Que les trois MAs ne correspondent pas à trois MAs similaires (selon votre déclaration) ? Donc ce n'est pas insoluble, c'est un non-sens. S'ils sont faits correctement, ils sont forcément assortis. Quelle est la différence - trois MAs séparées avec leurs propres paramètres ou les trois mêmes MAs avec les mêmes paramètres, mais entassées dans un indicateur avec trois buffers... Vous voyez la différence ? Je ne le fais pas. Et si vous le voyez, alors cherchez un décalage dans le calcul des MAKs.
D'ailleurs... Alligator est trois MA en un seul indicateur, chacune avec ses propres paramètres. Configurez les paramètres de la même manière que vos trois MA distinctes et elles correspondront. Mais vous avez toutes ces bacchanales dans une fenêtre séparée... Alors... à titre d'exemple
Artyom, "Appliquer à" - il n'y a qu'une énumération de prix. Les calculs de la MA sont corrects, les trois lignes ont été vérifiées en ajoutant un indicateur unique avec la période 4, puis 9, puis 14 à la fenêtre de l'indicateur 3MA. Dans chaque cas, l'indicateur unique coïncide avec la ligne correspondante de l'indicateur 3MA.
Pouvez-vous s'il vous plaît me donner une conception pour obtenir la valeur de l'indicateur intégré à partir du cadre temporel supérieur, mais à l'intérieur de ce cadre temporel.
Par exemple, le graphique actuel est de 15 minutes, j'ai besoin d'obtenir la valeur de l'indicateur, calculée par jour, mais il y a 45 minutes, comment faire ?
Voici un algorithme simple qui renvoie la valeur de l'indicateur, mais uniquement pour la barre actuelle.
double iDelta(int Variant,int n,int TF,int index)
{
double Fibo=0;
if(Variant==1) Fibo=0.236;
if(Variant==2) Fibo=0.382;
if(Variant==3) Fibo=0.5;
if(Variant==4) Fibo=0.618;
if(Variant==5) Fibo=0.764;
if(Variant==6) Fibo=1;
if(Variant==7) Fibo=1.236;
if(Variant==8) Fibo=1.382;
if(Variant==9) Fibo=1.5;
if(Variant==10) Fibo=1.618;
if(Variant==11) Fibo=2.0;
if(Variant==12) Fibo=2.236;
if(Variant==-1) Fibo=-0.236;
if(Variant==-2) Fibo=-0.382;
if(Variant==-3) Fibo=-0.5;
if(Variant==-4) Fibo=-0.618;
if(Variant==-5) Fibo=-0.764;
if(Variant==-6) Fibo=-1;
if(Variant==-7) Fibo=-1.236;
if(Variant==-8) Fibo=-1.382;
if(Variant==-9) Fibo=-1.5;
if(Variant==-10) Fibo=-1.618;
if(Variant==-11) Fibo=-2.0;
if(Variant==-12) Fibo=-2.236;
return ( NormalizeDouble(iOpen(Symbol(),TF,index)+iATR(Symbol(), TF, n, index+1)*Fibo,Digits) );
}
Je ne peux pas répondre à la question, mais la fonction peut être simplifiée et considérablement accélérée.
Lors de l'initialisation de l'indicateur, créez un tableau statique
double arrFibo[13] = {0.0, 0.236, 0.382, ..., 2.236};
et tous les if dansiDelta() peuvent être remplacés par :
if (Variant>0)
Fibo = arrFibo[ Variant];
else
Fibo = -arrFibo[-Variant];
Je ne peux pas répondre à la question, mais la fonction peut être simplifiée et considérablement accélérée.
Pendant l'initialisation de l'indicateur, créez un tableau statique
double arrFibo[13] = {0.0, 0.236, 0.382, ..., 2.236};
et tous les ifs dansiDelta() peuvent être remplacés par :
if (Variant>0)
Fibo = arrFibo[ Variant];
else
Fibo = -arrFibo[-Variant];
Merci, je vais essayer, ce sera peut-être mieux.
Je ne peux pas répondre à la question, mais la fonction peut être simplifiée et considérablement accélérée.
Dans l'initialisation de l'indicateur, créez un tableau statique
double arrFibo[13] = {0.0, 0.236, 0.382, ..., 2.236};
et tous les ifs dansiDelta() peuvent être remplacés par :
if (Variant>0)
Fibo = arrFibo[ Variant];
else
Fibo = -arrFibo[-Variant];
J'ai fait. comme vous l'avez écrit, mais cela n'a pas fonctionné comme il se doit - je ne sais pas encore ce qui ne va pas exactement - je dois imprimer.....
Je ne comprends pas la ficelle.
else Fibo = -arrFibo[-Variant];
J'ai fait comme vous l'avez écrit, mais cela ne fonctionne pas comme il le faudrait - je ne sais pas encore ce qui ne va pas - je dois imprimer.....
Je ne comprends pas pour la ligne.
else Fibo = -arrFibo[-Variant];
Dans le même cas, nous avons besoin de valeurs Fibo négatives, donc -arrFibo.