Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 471

 
Mike:
1. Alle Spiele.
2. Einen solchen Parameter gibt es nicht.
In einem anderen Thread wurde mir gesagt, dass dieses Problem in MT4 nicht lösbar ist. :(

2. Ich weiß nicht, woher Sie die MA in einem separaten Fenster haben, um Ihnen etwas über den Parameter sagen zu können. Aber... Wenn Sie unter Indikatoren --> Oszillatoren --> Gleitende Durchschnitte des Oszillators wählen, steht dort "Anwenden auf:".

Wenn Sie also versuchen, einen anderen Indikator in ein separates Fenster zu stellen, kann er in einigen Fällen nicht nur auf die Standardpreise aus der Aufzählung ENUM_APPLIED_PRICE angewendet werden, sondern auch auf Daten dieses Indikators, die sich bereits im Fenster befinden. Vielleicht sind Sie gerade in dieser Situation.

3. Was ist das Problem? Dass die drei MAs nicht drei ähnlichen (nach Ihrer Aussage) MAs entsprechen? Es ist also nicht unlösbar, es ist Unsinn. Wenn sie richtig gemacht sind, müssen sie übereinstimmen. Was ist der Unterschied - drei separate MAs mit eigenen Parametern oder dieselben drei MAs mit denselben Parametern, aber in einen Indikator mit drei Puffern gepackt... Können Sie den Unterschied erkennen? Ich weiß es nicht. Und wenn Sie das sehen, dann suchen Sie nach Unstimmigkeiten bei der Berechnung der MAKs.

Übrigens... Alligator ist ein Indikator mit drei MAs, die jeweils eigene Parameter haben. Konfigurieren Sie die Parameter auf die gleiche Weise mit Ihren drei separaten MAs und sie werden übereinstimmen. Aber Sie haben dieses ganze Tohuwabohu in einem separaten Fenster... Also ... als Beispiel

 
Mike:
Ich habe einen 3MA(4,9,14)-Indikator erstellt und beschlossen, ihn zu vergleichen, um seine Korrektheit mit einem Fenster zu überprüfen, in dem die drei Indikatoren MA(4), MA(9) und MA(14) sind. Mir standen die Haare zu Berge. :)
Versuchen Sie, die Selbstskalierung der Anzeigefenster zu deaktivieren.
"Bei drei Indikatoren - MA(4), MA(9), MA(14) - wird das Indikatorfenster durch den ersten Indikator in diesem Fenster selbst skaliert. In Ihrem Fall ist es wahrscheinlich die MA(4)
 

Können Sie mir bitte einen Entwurf geben, um den Wert des eingebauten Indikators aus dem oberen Zeitrahmen zu erhalten, aber innerhalb dieses Zeitrahmens.

D.h. das aktuelle Diagramm ist 15 Minuten, ich brauche, um den Wert des Indikators, berechnet nach Tag, aber 45 Minuten vor, wie man dies tun?

Hier ist ein einfacher Algorithmus, der den Wert des Indikators zurückgibt, allerdings nur für den aktuellen Balken.

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:
Versuchen Sie, die Selbstskalierung der Anzeigefenster zu deaktivieren, vielleicht beruhigt sich die Lage dann.
"wenn die drei Indikatoren MA(4), MA(9), MA(14) sind", wird das Indikatorfenster durch den ersten Indikator, der diesem Fenster zugeordnet ist, selbst skaliert. In Ihrem Fall ist es wahrscheinlich MA(4)
Wo kann man diese Selbstskalierung deaktivieren?
 
Artyom Trishkin:

2. Ich weiß nicht, woher Sie die MA in einem separaten Fenster haben, um Ihnen etwas über den Parameter sagen zu können. Aber... Wenn Sie unter Indikatoren --> Oszillatoren --> Gleitende Durchschnitte des Oszillators wählen, steht dort "Anwenden auf:".

Wenn Sie also versuchen, einen anderen Indikator in ein separates Fenster zu stellen, kann er in einigen Fällen nicht nur auf die Standardpreise aus der Aufzählung ENUM_APPLIED_PRICE angewendet werden, sondern auch auf Daten dieses Indikators, die sich bereits im Fenster befinden. Vielleicht sind Sie gerade in dieser Situation.

3. Was ist das Problem? Dass die drei MAs nicht drei ähnlichen (nach Ihrer Aussage) MAs entsprechen? Es ist also nicht unlösbar, es ist Unsinn. Wenn sie richtig gemacht sind, müssen sie übereinstimmen. Was ist der Unterschied - drei separate MAs mit eigenen Parametern oder dieselben drei MAs mit denselben Parametern, aber in einen Indikator mit drei Puffern gepackt... Können Sie den Unterschied erkennen? Ich weiß es nicht. Und wenn Sie das sehen, dann suchen Sie nach einer Unstimmigkeit in den MAK-Berechnungen.

Übrigens... Alligator ist ein Indikator mit drei MAs, die jeweils eigene Parameter haben. Konfigurieren Sie die Parameter auf dieselbe Weise wie Ihre drei separaten MVs und sie werden übereinstimmen. Aber Sie haben dieses ganze Tohuwabohu in einem separaten Fenster... Also ... als Beispiel

Artyom, "Bewerben bei" - es gibt nur eine Auflistung der Preise. Die MA-Berechnungen sind korrekt, alle drei Linien werden überprüft, indem ein einzelner Indikator mit einer Periode von 4, dann 9, dann 14 zu dem Fenster mit dem 3MA-Indikator hinzugefügt wird. In jedem Fall deckt sich der einzelne Indikator mit der entsprechenden Linie des 3MA-Indikators
 
Mike:
Artyom, "Bewerben bei" - es gibt nur eine Aufzählung von Preisen. Die MA-Berechnungen sind korrekt, alle drei Linien wurden überprüft, indem ein einzelner Indikator mit Periode 4, dann 9, dann 14 zum 3MA-Indikatorfenster hinzugefügt wurde. In jedem Fall deckt sich der einzelne Indikator mit der entsprechenden Linie des 3MA-Indikators
Wo liegt dann das Problem? Ich nehme an, dass Sie die optische Ungleichheit der Linien in den verschiedenen Fenstern nicht mögen. Drücken Sie Strg+D, bewegen Sie die Maus über die Indikatorlinien und sehen Sie im Datenfenster nach, ob sie übereinstimmen...
 
-Aleks-:

Können Sie mir bitte einen Entwurf geben, um den Wert des eingebauten Indikators aus dem oberen Zeitrahmen zu erhalten, aber innerhalb dieses Zeitrahmens.

D.h. das aktuelle Diagramm ist 15 Minuten, ich brauche, um den Wert des Indikators, berechnet nach Tag, aber 45 Minuten vor, wie man dies tun?

Hier ist ein einfacher Algorithmus, der den Wert des Indikators zurückgibt, allerdings nur für den aktuellen Balken.

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

  } 

Ich kann die Frage nicht beantworten, aber die Funktion kann vereinfacht und erheblich beschleunigt werden.
Erstellen Sie beim Initialisieren des Indikators ein statisches Array

double arrFibo[13] = {0.0, 0.236, 0.382, ..., 2.236};

und alle if iniDelta() können durch ersetzt werden:

if (Variant>0)
    Fibo =  arrFibo[ Variant];
else
    Fibo = -arrFibo[-Variant];

 
Mike:

Ich kann die Frage nicht beantworten, aber die Funktion kann vereinfacht und erheblich beschleunigt werden.
Während der Initialisierung des Indikators erstellen Sie ein statisches Array

double arrFibo[13] = {0.0, 0.236, 0.382, ..., 2.236};

und alle if's iniDelta() können durch ersetzt werden:

if (Variant>0)
    Fibo =  arrFibo[ Variant];
else
    Fibo = -arrFibo[-Variant];

Danke, ich werde es versuchen, vielleicht wird es dann besser.

 
Mike:

Ich kann die Frage nicht beantworten, aber die Funktion kann vereinfacht und erheblich beschleunigt werden.
Erstellen Sie bei der Initialisierung des Indikators ein statisches Array

double arrFibo[13] = {0.0, 0.236, 0.382, ..., 2.236};

und alle ifs iniDelta() können durch ersetzt werden:

if (Variant>0)
    Fibo =  arrFibo[ Variant];
else
    Fibo = -arrFibo[-Variant];

Ich habe es so gemacht, wie Sie geschrieben haben, aber es hat nicht so funktioniert, wie es sein sollte - ich weiß noch nicht, was genau falsch ist - ich muss drucken....

Ich verstehe das mit der Schnur nicht.

else           Fibo = -arrFibo[-Variant];

Was erhalten wir also? Fragen wir nach dem Minus-Index des Arrays oder was?
 
-Aleks-:

Ich habe es so gemacht, wie Sie geschrieben haben, aber es funktioniert nicht so, wie es sollte - ich weiß noch nicht, was falsch ist - ich muss drucken....

Das mit der Linie verstehe ich nicht.

else           Fibo = -arrFibo[-Variant];

Stellt sich heraus, dass wir einen Minus-Index des Arrays anfordern oder was?
Wenn Variant negativ ist, gibt der Ausdruck -Variant einen positiven Index für ein Array zum Abrufen.
Im gleichen Fall benötigen wir negative Fibo-Werte, also -arrFibo.