Neues MetaTrader 4 Client Terminal 387 und MetaTrader 4 Data Center Build 387 - Seite 3

 
AlexSTAL:

Was genau ist Ihr Problem? Es ist dasselbe, was es war und immer noch ist... keine Neuberechnung bei jedem Tick....


Ich habe das Gleiche wie Junko - alle Indikatoren sind optimiert. Und der gesamte Puffer wird nicht bei jedem Tick neu berechnet. Wenn bei jedem Tick eine Neuinitialisierung erzwungen wird, müssen alle Indikatoren neu geschrieben werden. Ist das nicht ein Problem? Wiederholt geäußert, übrigens.

Und ich mache mir keine Sorgen um mich selbst. Diese Indikatoren werden von einer großen Zahl von Menschen verwendet. Aber sie werden echte Probleme haben.

Hier zum Beispiel: http://ruforum.mt5.com/showthread.php?t=374.

Es gibt eine Vielzahl von Links zur Auswahl.

 
AlexSTAL:

Ich habe seine Erklärung gelesen....

Haben Sie es selbst in der Praxis getestet?

Was genau ist Ihr Problem? Es ist so, wie es war, und es ist so, wie es jetzt ist... keine Neuberechnung bei jedem Tick....

Mein Indikator für die Pufferfüllung war der Änderungszustand. Wenn es eine Änderung gibt, füllen Sie sie aus, wenn nicht, lassen Sie sie stehen. Bei 387 funktionierte es nicht.

Ich habe die Bedingung entfernt und es hat funktioniert. Als es nicht funktionierte, sah ich, dass der Puffer mit Standardwerten gefüllt war (initialisiert).

Vielleicht haben Sie es nicht so gesehen? Sie haben es nicht bemerkt oder es ist für Ihren Indikator nicht entscheidend?

Sie sollten auf die Erklärungen von Metaquotes warten.

 

Dies ist ein Teil des Indikators:

// Если произошёл первый пуск индикатора или предыдущим блоком разрешена развёртка или изменились параметры окна.
if (gl_nCounterTeak == 1 || st_bRecalculation == true || st_nWBarsPerChart != tmp_nBarsPerChart || st_nWFirstVisiblBar != tmp_nFirstVisiblBar)
 {// Закрепляем значок вызова свойств индикатора.
  st_nWBeginSearch = st_nWFirstVisiblBar - st_nWBarsPerChart;
  if (st_nWBeginSearch < -1) // Если справа есть свободное пространство, закрепляем значок вызова свойств индикатора.
   {
    GetClientRect(gl_hWindow, st_aiRect); // Расчёт размеров окна.
    gl_adBufIndicator2[0] = 0.35 * (gl_dMaxPositionMark - gl_dMinPositionMark) + gl_dMinPositionMark;
    SetIndexShift(1, - st_nWBeginSearch - 0.5 * ((36 * st_nWBarsPerChart) / st_aiRect[2] - 1));
    SetIndexDrawBegin(1, 0);
   }
  // Устанавливаем развёртку.
  if (st_nWBeginSearch <= 0) st_nWBeginSearch = 0;
  for (i = st_nWFirstVisiblBar; i >= st_nWBeginSearch; i--)
   {// Очищаем буфер от лишних значков для вызова окна свойств индикатора.
    if (i > 0) gl_adBufIndicator2[i] = EMPTY_VALUE;
    // Закрепление вертикальной развёртки графика с помощью индикаторного буфера.
    if (i % 2 == 0) gl_adBufIndicator1[i] = gl_dMaxPositionMark; // Для фиксации верхней координаты дополнительного окна.
    else gl_adBufIndicator1[i] = gl_dMinPositionMark;            // Для фиксации нижней координаты дополнительного окна.
   }
  // Расчёт и создание горизонтальных линий разметки. Создаём один раз и отслеживаем через заданный уровень при увеличениях максимальных уровней.
  // Установка вертикальной развёртки, расчёт и создание горизонтальных линий разметки.
  if ((gl_dMaxPositionMark - gl_dMinPositionMark) != tmp_dDifferPosMark)
   {
    MakingHorizontalSectoring(AutoStep, Color_LNH, Color_LN0, gl_dMaxPositionMark, gl_dMinPositionMark, Step_LNH, 15, Style_LNH, Width_LNH, st_nWindow, gl_sFullNameObject);
   }
 }
 
nen:

Wenn Sie die Korrespondenz nicht aus der privaten Nachricht gelöscht haben, sehen Sie, dort habe ich Beispiele für die Optimierung gegeben. Sie haben damals geschrieben, dass es für Sie klar ist.

Ich habe die Korrespondenz gelöscht, aber ich verstehe sehr wohl, was Optimierung ohne sie ist...

Geben Sie klar und deutlich mit einem Minimum an Code an, wovor Sie Angst haben, was Sie aber in der Realität nicht reproduziert haben...

Dies ist eine völlig unsinnige Unterhaltung... Keiner meiner Indikatoren fordert mich auf, die Puffer bei jedem Tick neu zu initialisieren...

Deshalb versuche ich zu verstehen, worüber wir hier reden....


an Zhunko: Ich werde später versuchen, es zu verstehen

 

Hier sind ein paar Zeilen im Testindikator geändert (den ich gepostet habe, um den Fehler zu finden)...

Bei keinem Tick werden die Puffer neu berechnet!

Es hat sich überhaupt nichts geändert

Dateien:
 
AlexSTAL:

Hier sind ein paar Zeilen im Testindikator geändert (den ich gepostet habe, um den Fehler zu finden)...

Bei keinem Tick werden die Puffer neu berechnet!

Es hat sich überhaupt nichts geändert

Ich habe mir den Code angesehen. Es gibt keine Zecken. Deshalb ändert sie sich nicht. Die Ticks werden für die Aktualisierung des Diagramms benötigt.
 
Zhunko:
Ich habe mir den Code angesehen. Es gibt keine Zecken. Deshalb ändert sie sich nicht. Sie benötigen einen Tick aus einer Chart-Aktualisierung.
Was ist ein "Tick aus der Diagrammaktualisierung"? Künstlich ausgelöst oder was? Durch eine API?
 

Hier ist die Nachricht mit dem letzten Häkchen:

Es werden keine Puffer aktualisiert

Die Zahl 2147483647 ist der Pufferwert auf dem neuen Balken.

Dateien:
 
AlexSTAL:
Was ist ein "Tick aus der Diagrammaktualisierung"? Wird sie künstlich ausgelöst oder durch eine API?

Ja. Das ist der einzige Unterschied in unseren Bedingungen.

Es ist besser, die Aktualisierung nicht in einem Indikator, sondern in einem Skript mit Schleifen durchzuführen.

 
Zhunko:

Ja. Das ist der einzige Unterschied in unseren Bedingungen.

Ich habe es auf Seite 6 herausgefunden...

Jetzt sehr interessant, wo verursacht nen den künstlichen Tick?

Grund der Beschwerde: