statisches Array ? - Seite 6

 

Zu viel Code in dieser einfachen englischen Beschreibung...

Die Fraktale werden in den Indikatorpuffern gespeichert, verstehen Sie, wie das geht? Wenn nicht, schreiben Sie etwas Code, um das zu verstehen...

Sie können die Indikatorpuffer lesen und die Bar-Nummern der Fraktale finden, von der Bar-Nummer können Sie die Kerzenwerte erhalten. . .

 
RaptorUK:

Zu viel Code in dieser einfachen englischen Beschreibung...

Die Fraktale werden in den Indikatorpuffern gespeichert, verstehen Sie, wie? Wenn nicht, schreiben Sie etwas Code, der Ihnen hilft, es zu verstehen.

Sie können die Indikatorpuffer lesen und die Bar-Nummern der Fraktale finden, von der Bar-Nummer können Sie die Kerzenwerte erhalten. . .

Ich verstehe nicht ganz, wie die Indikatorpuffer gespeichert werden.


Und das ist genau das, was ich tun wollte, finden Sie die Bar-Nummer, von den Fraktalen und erhalten die Kerze Werte

Ich werde weiter machen, aber ich wäre wahrscheinlich klarer, wenn ich wüsste, wie die Indikatoren die Werte im Puffer speichern.

Danke

 

Es gibt 3 Puffer, v1, v2 und v3, und es gibt drei weitere Doubles, val1, val2 und val3, die für die Berechnung verwendet werden. v3 und val3 scheinen nicht verwendet zu werden...

val1 und val2 enthalten den von iFractals erzeugten Wert, der für jeden Balken einzeln berechnet wird, wobei die while-Schleife die Balken durchläuft, beginnend mit Balken und absteigend bis auf Null.

Für jeden Balken wird also der Fraktalwert berechnet und in v1 für MODE_UPPER und v2 für MODE_LOWER gespeichert.

Für jeden Balken der Reihe nach . . wenn val1 größer als 0 ist, wird der Pufferwert für den Puffer v1 für die Taktnummer auf den Höchstwert dieses Taktes gesetzt, stellen Sie sich also vor, die Schleife befindet sich auf halbem Weg durch die Takte von Takt bis 0, stellen Sie sich vor, sie ist bei Taktnummer 4934, das Fraktal wird für Taktnummer 4934 berechnet, wenn der Wert größer als 0 ist, wird v1[4934] auf High[4934] gesetzt, mit anderen Worten, das 4935ste Element des Puffers v1 wird auf den Höchstwert von Taktnummer 4934 gesetzt ... vergessen Sie nicht, dass Arrays bei 0 beginnen

Zum Schluss gibt es noch eine kleine Komplikation, die Sie verstehen müssen ... Wenn Sie den Indikator laufen lassen, sehen Sie eine Reihe von Punkten von jedem fraktalen Hoch und Tief ... bis zum nächsten ... Stellen Sie sich vor, wir sind jetzt bei Takt Nummer 4933 und der Wert von val1 ist nicht größer als 0, was jetzt passiert, ist, dass der Pufferwert für diesen Takt nicht auf das Hoch dieses Taktes gesetzt wird, sondern auf den gleichen Wert wie der vorherige Eintrag für den Puffer ... vorheriger bedeutet in diesem Fall i+1, weil in der while-Schleife i abwärts zählt.

Wenn die Schleife endet und für alle Balken die Fraktale berechnet wurden, enthalten alle Einträge in den Puffern Werte . . das ist keine große Hilfe für Sie . . Sie müssen den Code ein wenig ändern.

Lesen Sie, was ich hier geschrieben habe . . wenn du nicht verstehst, was hier vor sich geht, dann hast du nichts in diesem Code zu suchen . . wenn Sie es einmal verstanden haben, können Sie weitermachen ... wenn Sie Fragen haben, fragen Sie bitte.

 
RaptorUK:

Es gibt 3 Puffer, v1, v2 und v3, und es gibt drei weitere Doubles, val1, val2 und val3, die für die Berechnung verwendet werden. v3 und val3 scheinen nicht verwendet zu werden...

val1 und val2 enthalten den von iFractals erzeugten Wert, der für jeden Balken einzeln berechnet wird, wobei die while-Schleife die Balken durchläuft, beginnend mit Balken und absteigend bis auf Null.

Für jeden Balken wird also der Fraktalwert berechnet und in v1 für MODE_UPPER und v2 für MODE_LOWER gespeichert.

Für jeden Balken der Reihe nach . . wenn val1 größer als 0 ist, wird der Pufferwert für den Puffer v1 für die Taktnummer auf den Höchstwert dieses Taktes gesetzt, stellen Sie sich also vor, dass die Schleife einen Teil des Weges durch die Takte von Takt bis 0 zurückgelegt hat, stellen Sie sich vor, dass sie bei Taktnummer 4934 ist, das Fraktal wird für Taktnummer 4923 berechnet, wenn der Wert größer als 0 ist, wird v1[4394] auf High[4394] gesetzt, mit anderen Worten, das 4395ste Element des Puffers v1 wird auf den Höchstwert von Taktnummer 4394 gesetzt ... vergessen Sie nicht, dass Arrays bei 0 beginnen

Zum Schluss gibt es noch eine kleine Komplikation, die Sie verstehen müssen ... Wenn Sie den Indikator laufen lassen, sehen Sie eine Reihe von Punkten von jedem fraktalen Hoch und Tief ... bis zum nächsten ... Stellen Sie sich vor, wir sind jetzt bei Takt Nummer 4933 und der Wert von val1 ist nicht größer als 0, was jetzt passiert, ist, dass der Pufferwert für diesen Takt nicht auf das Hoch dieses Taktes gesetzt wird, sondern auf den gleichen Wert wie der vorherige Eintrag für den Puffer ... vorheriger bedeutet in diesem Fall i+1, weil in der while-Schleife i abwärts zählt.

Wenn die Schleife endet und für alle Balken die Fraktale berechnet wurden, enthalten alle Einträge in den Puffern Werte . . das ist keine große Hilfe für Sie . . Sie müssen den Code ein wenig ändern.

Lesen Sie, was ich hier geschrieben habe . . wenn du nicht verstehst, was hier vor sich geht, dann hast du nichts in diesem Code zu suchen . . wenn Sie es verstanden haben, können Sie weitermachen ... wenn Sie Fragen haben, stellen Sie sie bitte.

Ich habe verstanden, wie der Indikator genau so funktioniert, wie Sie es beschrieben haben. Ich dachte, ich hätte auch verstanden, wie der Puffer die Werte speichert, weshalb ich verwirrt war, weil ich bei der Neukodierung der Druckausgabe nicht die Ergebnisse erhielt, die ich erwartet hatte.

Allerdings ist eine große Hürde jetzt mit dem Verständnis, wie der Puffer ist anders und NICHT tatsächlich deklariert die Anzahl der Elemente, weshalb ich nicht aus dem Puffer

Ok weiter zu drucken überwunden worden.
Ich nehme an, dass es einige Tippfehler in Ihren Verweisen auf die Taktnummer 4934 gibt , Fractal wird für die Taktnummer 4923 berechnet und sollte 4933 lauten.
Und auch für einen Wert größer als 0 wird v1[4394] auf High[4394] gesetzt == Ich nehme an, dass der vorherige Verweis auf 4923/33 auch gemeint ist, aber ich verstehe, dass es die Elementnummer ist höher als die Bar-Nummer.

Bitte korrigieren Sie mich, wenn ich mich bei den Tippfehlern irre.

Ich gehe jedoch davon aus, dass es sich um Tippfehler handelt und ich verstehe, was das bedeutet.

Ich habe mir überlegt, dass ich v3 erstellen, deklarieren und in ähnlicher Weise initialisieren würde, um es ausdrucken oder den Wert abrufen zu können.
Ursprünglich hatte ich überlegt, dass ich i-1 ausdrucken könnte, um den gespeicherten Wert von High[i] zu dem Zeitpunkt zu extrahieren, an dem er größer als 0 war, und für diesen Bar.
Oder sogar v1[i] = v1[1-1] und Drucken von v1[i] zu diesem Zeitpunkt, aber ich habe diesen Teil nicht ausgearbeitet und konnte auch nicht über den Druckteil hinauskommen, da die Anzahl der Elemente nicht deklariert wurde.

Deshalb wollte ich ein anderes v3-Schema erstellen, aber eigentlich das gleiche, nur um ein Array mit deklarierter Elementanzahl zu erstellen, aus dem ich den Wert der Fraktale für diese Balken extrahieren könnte.

Hier habe ich Probleme mit dem Design, also werde ich es noch einmal durcharbeiten

Danke

 
Agent86:

Ich verstehe, wie der Indikator genau so funktioniert, wie Sie es beschrieben haben. Ich dachte, ich hätte auch verstanden, wie der Puffer die Werte speichert, weshalb ich verwirrt war, weil ich bei der Neukodierung der Druckfunktion nicht die erwarteten Ergebnisse erhielt.

Eine große Hürde ist jetzt jedoch überwunden, da ich verstanden habe, dass der Puffer anders ist und die Anzahl der Elemente NICHT deklariert ist, weshalb ich nicht aus dem Puffer drucken konnte.

Ok, weiter geht's.
Ich nehme an, es gibt einige Tippfehler in Ihren Verweisen auf die Taktnummer 4934, Fractal wird für die Taktnummer 4923 berechnet und sollte 4933 lauten.
Und auch für einen Wert größer als 0 wird v1[4394] auf High[4394] gesetzt == Ich nehme an, dass der vorherige Verweis auf 4923/33 auch gemeint ist, aber ich verstehe, dass es die Elementnummer ist höher als die Bar-Nummer.

Bitte korrigieren Sie mich, wenn ich mich bei den Tippfehlern irre.

Entschuldigung für die Tippfehler . . . Ich habe meinen Text mit den richtigen Werten korrigiert . . . Ich bin morgens nicht gut drauf ;-)

Sehen Sie die kleine Änderung, die Sie am Code vornehmen müssen, bevor er für Sie von großem Nutzen ist?

 
    for(i=Bars; i >= 0; i--)
     {
     val3=iFractals(NULL, 0, MODE_UPPER,i);
     if(val3>0)
      {
      double v3[1000];
      v3[i]=High[i];
      Print ("v3[", i, "]= ", v3[i], " if");
      }
     else          
         {
         v3[i]=v3[i+1];
         Print ("v3[", i, "]= ", v3[i], " else");
         }
     }
Ok einige Fortschritte hier, ich denke, die Hauptsache war, dass ich nicht vorbei an der Deklaration des Puffers, die immer 0 für meine Druckstatments produziert bekommen konnte.

Ich denke, dass ich in der Lage sein könnte, von hier aus zu handeln
Ich erhalte jetzt die Werte, die ich suche, zumindest bin ich nach dem, was ich bisher sagen kann, auf dem richtigen Weg.

2011.09.24 12:26:21 2011.01.02 19:09 Agent86_5min EURUSD,M5: v3[5]= 1.3361 if
2011.09.24 12:26:21 2011.01.02 19:09 Agent86_5min EURUSD,M5: v3[6]= 1.3343 sonst
2011.09.24 12:26:21 2011.01.02 19:09 Agent86_5min EURUSD,M5: v3[7]= 1.3343 sonst
2011.09.24 12:26:21 2011.01.02 19:09 Agent86_5min EURUSD,M5: v3[8]= 1.3343 sonst
2011.09.24 12:26:21 2011.01.02 19:09 Agent86_5min EURUSD,M5: v3[9]= 1.3343 sonst
2011.09.24 12:26:21 2011.01.02 19:09 Agent86_5min EURUSD,M5: v3[10]= 1.3343 wenn
2011.09.24 12:26:21 2011.01.02 19:09 Agent86_5min EURUSD,M5: v3[11]= 1.3399 sonst


Nochmals vielen Dank
 
Ich habe den Verdacht, dass Sie das andere gar nicht wollen oder brauchen.
 
RaptorUK:
Ich habe den Verdacht, dass Sie das andere nicht wirklich wollen oder brauchen.

Ja, Sie haben Recht.