Warum flackern die Indikatoren (Linien, Pfeile, Histogramme) auf dem MT5-Terminal? - Seite 2

 

Versuchen Sie, prev_calculated ganz am Anfang von OnCalculate zu drucken.

Und vergleichen Sie mit einem Standardindikator, ob er blinkt.

 
Andrey Khatimlianskii: Versuchen Sie, prev_calculated ganz am Anfang von OnCalculate zu drucken. Und vergleichen Sie sie mit einer Standardanzeige - blinkt sie?
Der Funktion OnCalculate() wurden zwei statische Variablen hinzugefügt, um aktuelle Werte mit früheren Werten zu vergleichen:

static int last_rates_total=0; // vorheriger Wert "Größe der Eingangszeitreihe bei vorheriger
static int last_prev_calculated=0; // vorheriger Wert "bars processed at the previous call

und Prüfcode mit der Ausgabe an das Journal

//+------------------------------------------------------------------+
//| Custom indicator iteration function
//+------------------------------------------------------------------+
int OnCalculate (const int rates_total,      // размер входных таймсерий 
                 const int prev_calculated,  // обработано баров на предыдущем вызове 
...

{
   int N=rates_total-prev_calculated; if (N>MAX_PERIOD) N-=MAX_PERIOD;

   static int last_rates_total=0;     // размер входных таймсерий 
   static int last_prev_calculated=0; // обработано баров на предыдущем вызове 
   if (rates_total!=last_rates_total || prev_calculated!=last_prev_calculated) {
      Print("N=", N,  ", rates_total=", rates_total, ", prev_calculated=", prev_calculated);
      last_rates_total=rates_total; last_prev_calculated=prev_calculated;
   }

   for (int i=N; i>0 && !IsStopped(); i--) {
...
   }
   aUP[0]=EMPTY_VALUE; aDN[0]=EMPTY_VALUE;
   return(rates_total);
}

Ich habe den AOM-Indikator auf die Minute genau gestartet und diesen Bericht erhalten

FH      0       12:38:02.271    AOM (Si-6.17,M1)        N=41934, rates_total=41969, prev_calculated=0
FN      0       12:38:02.275    AOM (Si-6.17,M1)        N=0, rates_total=41969, prev_calculated=41969
DE      0       12:38:51.845    AOM (Si-6.17,M1)        N=1, rates_total=41970, prev_calculated=41969
GH      0       12:38:51.845    AOM (Si-6.17,M1)        N=0, rates_total=41970, prev_calculated=41970
PO      0       12:39:51.207    AOM (Si-6.17,M1)        N=1, rates_total=41971, prev_calculated=41970
EE      0       12:39:51.215    AOM (Si-6.17,M1)        N=0, rates_total=41971, prev_calculated=41971
MH      0       12:40:52.423    AOM (Si-6.17,M1)        N=1, rates_total=41972, prev_calculated=41971
IO      0       12:40:52.700    AOM (Si-6.17,M1)        N=0, rates_total=41972, prev_calculated=41972
CR      0       12:41:51.214    AOM (Si-6.17,M1)        N=1, rates_total=41973, prev_calculated=41972
OH      0       12:41:51.214    AOM (Si-6.17,M1)        N=0, rates_total=41973, prev_calculated=41973
RO      0       12:42:51.207    AOM (Si-6.17,M1)        N=1, rates_total=41974, prev_calculated=41973
HR      0       12:42:51.207    AOM (Si-6.17,M1)        N=0, rates_total=41974, prev_calculated=41974
NI      0       12:43:51.439    AOM (Si-6.17,M1)        N=1, rates_total=41975, prev_calculated=41974
RO      0       12:43:51.446    AOM (Si-6.17,M1)        N=0, rates_total=41975, prev_calculated=41975
RR      0       12:44:51.373    AOM (Si-6.17,M1)        N=1, rates_total=41976, prev_calculated=41975
DI      0       12:44:51.373    AOM (Si-6.17,M1)        N=0, rates_total=41976, prev_calculated=41976
ML      0       12:45:51.449    AOM (Si-6.17,M1)        N=1, rates_total=41977, prev_calculated=41976
GR      0       12:45:51.902    AOM (Si-6.17,M1)        N=0, rates_total=41977, prev_calculated=41977
II      0       12:46:51.541    AOM (Si-6.17,M1)        N=1, rates_total=41978, prev_calculated=41977
GL      0       12:46:51.541    AOM (Si-6.17,M1)        N=0, rates_total=41978, prev_calculated=41978
PS      0       12:47:51.286    AOM (Si-6.17,M1)        N=1, rates_total=41979, prev_calculated=41978
PI      0       12:47:51.303    AOM (Si-6.17,M1)        N=0, rates_total=41979, prev_calculated=41979
QL      0       12:48:51.395    AOM (Si-6.17,M1)        N=1, rates_total=41980, prev_calculated=41979
IS      0       12:48:51.408    AOM (Si-6.17,M1)        N=0, rates_total=41980, prev_calculated=41980
DF      0       12:49:51.790    AOM (Si-6.17,M1)        N=1, rates_total=41981, prev_calculated=41980
PL      0       12:49:51.790    AOM (Si-6.17,M1)        N=0, rates_total=41981, prev_calculated=41981

Das ist nichts Unerwartetes, denn es handelt sich um einen normalen Prozess, bei dem nur neu eingehende Barren bearbeitet werden.



 
Eugene Myzrov:
Der Funktion OnCalculate() wurden zwei statische Variablen hinzugefügt, um aktuelle Werte mit früheren Werten zu vergleichen:

Das ist nichts Unerwartetes, denn es handelt sich um einen normalen Prozess, bei dem nur neue Barren eintreffen.

Blinken die Kennzeichen aus der Standardauslieferung?
 
Andrey Khatimlianskii: Blinken die Anzeigen der Standardauslieferung?

Nein, ich habe ein paar Standardindikatoren wie "Gleitender Durchschnitt" und "Awesome Oscillator" in das Diagramm eingefügt. Beobachtet. Nein, es wurde kein Flackern oder Verschwinden von Werten im"Datenfenster" festgestellt.

 
Eugene Myzrov:

Nein, ich habe ein paar Standardindikatoren wie "Gleitender Durchschnitt" und "Awesome Oscillator" in das Diagramm eingefügt. Beobachtet. Nein, ich habe kein Flackern oder Verschwinden von Werten im"Datenfenster" festgestellt.

Ich meine die Indikatoren, die in der Quelle (mq5) enthalten sind.

Wenn sie nicht blinken, dann liegt das Problem offensichtlich in Ihrem Code. Vereinfachen Sie es, bis es nicht mehr flackert. Oder umgekehrt: Verfeinern Sie den Standardcode auf Ihren Zustand, bis er flackert.

 
Es ist eine MT5-Funktion, imho.
 
Stanislav Korotky: Es ist eine MT5-Funktion, imho.

Man muss es also akzeptieren, es als gegeben hinnehmen und aufhören, nach der Ursache zu suchen?


 
Andrey Khatimlianskii: Ich meine die Indikatoren, die im Quellcode (mq5) enthalten sind. Wenn sie nicht blinken, dann liegt das Problem offensichtlich in Ihrem Code. Vereinfachen Sie es, bis es nicht mehr flackert. Oder umgekehrt: Verfeinern Sie den Standardcode auf Ihren Zustand, bis er flackert.
Aber ich habe den Code bereits so weit vereinfacht, dass er flimmert. Okay, ich werde versuchen, den umgekehrten Weg zu gehen.


Übrigens habe ich keinen universellen "Wrapper" für die Funktion OnCalculate() gefunden, auch nicht bei den Standardindikatoren, um sie ein für alle Mal zu verwenden.
Vielleicht kennen Sie einen Indikator, der einen solchen "Wrapper" hat, um ihn als Referenz zu verwenden?

 
Eugene Myzrov:

Sie müssen es also akzeptieren, es als gegeben hinnehmen und aufhören, nach einem Grund zu suchen?

Schreiben Sie an den Service Desk.
 
Eugene Myzrov:
Aber ich habe den Code bereits bis zum Äußersten vereinfacht. Okay, ich werde versuchen, einen anderen Weg einzuschlagen.

Es kann sich um jede Kleinigkeit handeln.


Eugene Myzrov:

Übrigens habe ich noch keinen universellen "Wrapper" für die Funktion OnCalculate() gefunden, auch nicht bei den Standard-Indikatoren, um sie ein für alle Mal zu verwenden.
Vielleicht können Sie einen Indikator vorschlagen, der einen solchen "Wrapper" hat, um ihn als Referenz zu verwenden?

Ich habe mehrere Varianten gesehen. Sie können suchen und auswählen.
Ich selbst benutze diese:

        //---
        if ( rates_total < MinBars ) return(0);

        //--- last counted bar will be recounted
        int limit=rates_total-prev_calculated-1;
        if(prev_calculated>0) limit++;

        //---
        for( int i=limit; i>=0; i--)
        {
           IndBuffer[i] = Add your code here
        }

        //---
        return(rates_total);