Fragen von einem "Dummy" - Seite 268

 
DC2008:

Ich bin mir nicht sicher, aber wahrscheinlich ist das der Grund dafür:

Ich habe keine ArrayResize, für INDICATOR_DATA und INDICATOR_CALCULATIONS die Größe wird durch das Terminal festgelegt, und zeichnet von bar 0


Dann stellt sich heraus, dass alle ArrayInitialize(array,EMPTY_VALUE); funktioniert nicht einmal für Null bar?



 
Silent:

Ich habe nicht ArrayResize, das Terminal setzt die Größe für INDICATOR_DATA und INDICATOR_CALCULATIONS und zeichnet es von der 0-ten Bar

Vielleicht nicht, aber Arrays sind dynamisch und jeder Zeitrahmen hat eine andere Anzahl von Balken! Wenn Sie von einem zum anderen wechseln, ändert sich die Größe der Arrays (dies geschieht ohne Ihre Beteiligung) und Sie sehen den Müll.

Документация по MQL5: Доступ к таймсериям и индикаторам / Bars
Документация по MQL5: Доступ к таймсериям и индикаторам / Bars
  • www.mql5.com
Доступ к таймсериям и индикаторам / Bars - Документация по MQL5
 
Silent:

Dann stellt sich heraus, dass alle ArrayInitialize(array,EMPTY_VALUE); funktioniert nicht einmal für Null bar?

In Ihrem Fall ist es das letzte Element des Arrays (auch wenn es an Takt 0 steht), da die Standardindizierung von links nach rechts erfolgt.

 
DC2008:

Vielleicht nicht, aber die Arrays sind dynamisch und jeder Zeitrahmen hat eine andere Anzahl von Balken! Wenn Sie von einem zum anderen wechseln, ändern sich die Array-Größen (dies geschieht ohne Ihr Zutun) und Sie sehen Unordnung.

Das scheint logisch zu sein. Dann macht die Initialisierung von Indikatorpuffern in der Inite überhaupt keinen Sinn, alles sollte in OnCalculate gemacht werden

DC2008:

In Ihrem Fall ist es das letzte Array-Element (auch wenn es auf 0 bar ist), weil es standardmäßig von links nach rechts indiziert ist.

Richtig, ich habe es noch nicht umgedreht.

 
Ich danke Ihnen allen!
 

Einen Fehler behoben, Arrays umgedreht, mit ArrayInitialize herumgespielt (vorerst gelassen)...

Es scheint unmöglich zu sein, den Müll in Inite loszuwerden. Auch PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,countBars); wird es nicht stoppen; es kann am Anfang des Diagramms oder am Ende erscheinen.

Ich werde es in einem Anhänger lassen, vielleicht sehen sich die Entwickler es an.

PS, aber das Auftauchen des Mülls an derselben Stelle im Diagramm nach dem Entfernen des Indikators und/oder der Neukompilierung - das ist eine Schande.

so eine Schönheit...


Dateien:
 
Silent:

Einen Fehler behoben, Arrays umgedreht, mit ArrayInitialize herumgespielt (vorerst gelassen)...

Es scheint unmöglich zu sein, den Müll in Inite loszuwerden. Auch PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,countBars); wird es nicht stoppen; es kann am Anfang des Diagramms oder am Ende erscheinen.

Ich werde es in einem Anhänger lassen, vielleicht sehen sich die Entwickler es an.

PS, aber das Auftauchen des Mülls an derselben Stelle im Diagramm nach dem Entfernen des Indikators und/oder der Neukompilierung - das ist eine Schande.

So eine Schönheit...

Na bitte, es scheint zu funktionieren, wie Sie es brauchen:

void OnDeinit(const int reason)
  {
   ArrayResize(USDBuffer,1);
   ArrayResize(EURBuffer,1);
   ArrayResize(GBPBuffer,1);
   return;
  }
 
DC2008:

Na bitte, es scheint so zu funktionieren, wie Sie es wollen:

Nein, das ist auch Littering, das sieht man an den Zahlen in der linken oberen Ecke.

Es funktioniert nur nach dem Laden dieser Zellen in OnCalculate

   ArrayInitialize(USDBuffer,EMPTY_VALUE);
   PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,countBars);
   ArrayInitialize(EURBuffer,EMPTY_VALUE);
   PlotIndexSetInteger(1,PLOT_DRAW_BEGIN,countBars);
   ArrayInitialize(GBPBuffer,EMPTY_VALUE);
   PlotIndexSetInteger(2,PLOT_DRAW_BEGIN,countBars);

Ihre Version scheint korrekt zu sein. Der Müll ist auf die automatische Größenänderung von Arrays zurückzuführen. Und es scheint sogar klar zu sein, warum es sich wiederholt.

Wenn das Terminal die Größe ändert, z. B. von 1 000 auf 10 000, wird ein und dasselbe Stück nicht freigegebener Speicher zugewiesen, und es spielt keine Rolle, wie oft Sie den Indikator neu laden - von der 1 001. bis zur 9 999. Zelle bleiben die Werte am linken Ende erhalten.

upd Ich habe noch eine Frage: warum durch die Änderung etwas in f_comment Funktion (geänderte Farbe) und die anschließende Kompilierung Änderungen nicht auf Neustart-Indikator im Terminal angewendet werden.

Dateien:
 
Ist es möglich, ein Candlestick-Diagramm der Parameter eines Instruments in einem separaten Fenster zu erstellen? Zum Beispiel, Broker "Otkritie" hat Instrument RTS-9.13 und für sie ein Diagramm von Kaufaufträgen zu bauen, die Werte, die in der "Marktübersicht" Fenster angezeigt werden
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
 
vicleo:
Ist es möglich, ein Candlestick-Diagramm der Parameter eines Instruments in einem separaten Fenster zu erstellen? Zum Beispiel, Broker "Otkritie" hat das Instrument RTS-9.13 und für sie ein Diagramm von Kaufaufträgen zu bauen, die Werte von denen in der "Marktübersicht" Fenster angezeigt werden
Broker und fragen).
Grund der Beschwerde: