Nouveau MetaTrader 4 Client Terminal 387 et MetaTrader 4 Data Center build 387 - page 3

 
AlexSTAL:

Quel est exactement votre problème ? C'est la même chose qu'avant et que maintenant... pas de recalcul à chaque tick....


J'ai le même problème que Junko - tous les indicateurs sont optimisés. Et l'ensemble du tampon n'est pas recalculé à chaque tick. S'il y a une réinitialisation forcée à chaque tick, ils devront réécrire tous les indicateurs. N'est-ce pas un problème ? Répété à plusieurs reprises, d'ailleurs.

Et je ne m'inquiète pas pour moi. Il se trouve qu'un très grand nombre de personnes utilisent ces indicateurs. Mais ils vont avoir de vrais problèmes.

Voici, par exemple, http://ruforum.mt5.com/showthread.php?t=374.

Il y a beaucoup de liens à choisir.

 
AlexSTAL:

J'ai lu son explication....

L'avez-vous testé vous-même dans la pratique ?

Quel est exactement votre problème ? C'est la même chose qu'avant, et c'est la même chose qu'aujourd'hui... pas de recalcul à chaque tick....

Le remplissage de mon tampon indicateur était par condition de changement. S'il y a un changement, remplissez-le, s'il n'y a pas de changement, ne le remplissez pas. Ça n'a pas marché sur le 387.

J'ai supprimé la condition et ça a marché. Lorsque cela n'a pas fonctionné, j'ai vu que le tampon était rempli de valeurs par défaut (initialisées).

Peut-être que vous ne l'avez pas vu de cette façon ? Vous n'avez pas remarqué ou ce n'est pas critique pour votre indicateur ?

Vous devriez attendre les explications de Metaquotes.

 

Cela fait partie de l'indicateur :

// Если произошёл первый пуск индикатора или предыдущим блоком разрешена развёртка или изменились параметры окна.
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:

Si vous n'avez pas supprimé la correspondance du message privé, regardez, là je vous ai donné quelques exemples d'optimisation. Vous avez écrit alors, que c'est clair pour vous.

J'ai supprimé la correspondance, mais je comprends parfaitement ce qu'est l'optimisation sans elle...

Énoncez clairement, avec un minimum de code, ce dont vous avez peur, mais que vous n'avez pas reproduit dans la réalité...

C'est une conversation complètement inepte... Aucun de mes indicateurs ne me demande de réinitialiser les buffers à chaque tick...

C'est pourquoi j'essaie de comprendre ce dont nous parlons. ....


à Zhunko : J'essaierai de le comprendre plus tard.

 

Voici quelques lignes modifiées dans l'indicateur de test (que j'ai posté pour trouver l'erreur)...

Aucun tampon n'est recalculé sur aucun ticks !

Rien n'a changé du tout

Dossiers :
 
AlexSTAL:

Voici quelques lignes modifiées dans l'indicateur de test (que j'ai posté pour trouver l'erreur)...

Aucun tampon n'est recalculé sur aucun ticks !

Rien n'a changé du tout

J'ai regardé le code. Il n'y a pas de tiques. C'est pourquoi il ne change pas. Les ticks sont nécessaires pour la mise à jour du graphique.
 
Zhunko:
J'ai regardé le code. Il n'y a pas de tiques. C'est pourquoi il ne change pas. Vous avez besoin d'un tick à partir d'une mise à jour du graphique.
Qu'est-ce qu'un "tick from chart refresh" ? Déclenché artificiellement ou quoi ? Par une API ?
 

Voici celui avec le message du dernier tic :

Aucune mémoire tampon n'est mise à jour

Le nombre 2147483647 est la valeur tampon de la nouvelle barre.

Dossiers :
 
AlexSTAL:
Qu'est-ce qu'un "tick from chart update" ? Est-il déclenché artificiellement ou par une API ?

Oui. C'est la seule différence dans nos conditions.

Il est préférable de rafraîchir non pas dans un indicateur, mais dans un script en boucle.

 
Zhunko:

Oui. C'est la seule différence dans nos conditions.

J'ai compris à la page 6...

Maintenant très intéressant, où est-ce que le nen cause le tic artificiel ?

Raison: