Questions des débutants MQL5 MT5 MetaTrader 5 - page 471

 
Mike:
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

 
Mike:
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. :)
Essayez de désactiver l'auto-dimensionnement des fenêtres d'indicateurs.
"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) );

  } 

 
Leo59:
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)
Où désactiver cette auto-échelle ?
 
Artyom Trishkin:

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, "Apply to" - il n'y a qu'une liste de prix. Les calculs de la MA sont corrects, les trois lignes sont vérifiées en ajoutant un indicateur unique avec une période de 4, puis 9, puis 14 à la fenêtre avec l'indicateur 3MA. Dans chaque cas, l'indicateur unique coïncide avec la ligne correspondante de l'indicateur 3MA
 
Mike:
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.
Quel est le problème alors ? Je suppose que vous n'aimez pas le décalage visuel des lignes dans les différentes fenêtres. Appuyez sur Ctrl+D, déplacez la souris sur les lignes de l'indicateur et regardez dans la fenêtre de données pour voir si elles correspondent...
 
-Aleks-:

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];

 
Mike:

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.

 
Mike:

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];

Alors qu'est-ce qu'on obtient ? On demande l'indice négatif du tableau ou quoi ?
 
-Aleks-:

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];

Est-ce qu'il s'avère que nous demandons un indice négatif du tableau ou quoi ?
Dans le cas où Variant est négatif, l'expression -Variant donne un index positif pour une recherche de tableau.
Dans le même cas, nous avons besoin de valeurs Fibo négatives, donc -arrFibo.
Raison: