Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 1893

 

Pouvez-vous me donner un indice ?

Dans mql4 il y avait un indicateur basé sur la MA sur le prix d'ouverture, il permettait d'éviter le redécoupage sur la barre courante. par int start() cela fonctionnait bien. Il a tout montré clairement.

Dans mql5, le même indicateur ne fonctionne pas par int start, il fonctionne par int OnCalculate. Il n'arrête pas de recalculer et de redessiner, pendant une seconde l'image disparaît et peut avoir des valeurs différentes à cause de la situation limite avec l'intersection de deux MAs, bien que la distance entre deux MAs soit définie, cela n'aide pas. J'ai pensé prendre non pas la 0ème valeur mais la 1ère du tampon MA, mais cela n'a pas fonctionné et j'ai aussi pensé sauter cette fonction avant l'arrivée d'une nouvelle barre et cela n'a pas fonctionné non plus (j'ai même essayé de ne plus rien afficher). Comment surmonter cette situation ?

Lorsque l'on bascule le graphique de droite à gauche, l'indicateur clignote également avec un recalcul constant.

 
Sergey Dymov #:

Pouvez-vous me donner un indice ?

Dans mql4 il y avait un indicateur basé sur la MA pour le prix d'ouverture, il permettait d'éviter le re-rendu sur la barre courante. par int start() cela fonctionnait bien. Il a tout montré clairement.

Dans mql5, le même indicateur ne fonctionne pas par int start, il fonctionne par int OnCalculate. Il n'arrête pas de recalculer et de redessiner, pendant une seconde l'image disparaît et peut avoir des valeurs différentes à cause de la frontière avec deux MA qui traversent la situation, même si j'ai réglé la distance entre deux MA, cela ne fonctionne pas. J'ai pensé prendre non pas la 0ème valeur mais la 1ère du tampon MA, mais cela n'a pas fonctionné et j'ai aussi pensé sauter cette fonction avant l'arrivée d'une nouvelle barre et cela n'a pas fonctionné non plus (j'ai même essayé de ne plus rien afficher). Comment surmonter cette situation ?

Lorsque l'on bascule le graphique de droite à gauche, l'indicateur clignote également avec un recalcul constant.

Posez la question ici - ils vous aideront certainement.

 
Sergey Dymov #:

Pouvez-vous me donner un indice ?

Dans mql4 il y avait un indicateur basé sur la MA sur le prix d'ouverture, il permettait d'éviter le redécoupage sur la barre courante. par int start() cela fonctionnait bien. Il a tout montré clairement.

Dans mql5, le même indicateur ne fonctionne pas par int start, il fonctionne par int OnCalculate. Il n'arrête pas de recalculer et de redessiner, pendant une seconde l'image disparaît et peut avoir des valeurs différentes à cause de la situation limite avec l'intersection de deux MAs, bien que la distance entre deux MAs soit définie, cela n'aide pas. J'ai pensé prendre non pas la 0ème valeur mais la 1ère du tampon MA, mais cela n'a pas fonctionné et j'ai aussi pensé sauter cette fonction avant l'arrivée d'une nouvelle barre et cela n'a pas fonctionné non plus (j'ai même essayé de ne plus rien afficher). Comment surmonter cette situation ?

Lorsque l'on bascule le graphique de droite à gauche, l'indicateur clignote également avec un recalcul constant.

Afficher le code
 

Il y a une telle chose sur le graphique

Je l'ai vu faire dans n'importe quelle couleur, si je ne me trompe pas.

Comment ?

 
Vitaly Muzichenko #:

Il y a une telle chose sur le graphique

Je l'ai vu faire dans n'importe quelle couleur, si je ne me trompe pas.

Comment ?

F8 et.


Mais c'est aussi la couleur de la grille, donc décochez


 
Artyom Trishkin #:

F8 et

Mais c'est aussi la couleur de la grille, donc décochez

Je l'ai, merci !

La grille est nécessaire, dommage qu'elle ne soit pas séparée.

P.S. Comment décaler de 15 mesures du bord droit de manière programmatique ?
 
Vitaly Muzichenko #:

Je l'ai, merci !

La grille est nécessaire, dommage qu'elle ne soit pas divisée.

P.S. Comment décaler de 15 mesures du bord droit de manière programmatique ?

Que pensez-vous de ça ?

//+------------------------------------------------------------------+
//| Функция включает/выключает режим отображения ценового графика с  |
//| отступом от правого края.                                        |
//+------------------------------------------------------------------+
bool ChartShiftSet(const bool value,const long chart_ID=0)
  {
//--- сбросим значение ошибки
   ResetLastError();
//--- установим значение свойства
   if(!ChartSetInteger(chart_ID,CHART_SHIFT,0,value))
     {
      //--- выведем сообщение об ошибке в журнал "Эксперты"
      Print(__FUNCTION__+", Error Code = ",GetLastError());
      return(false);
     }
//--- успешное выполнение
   return(true);
  }
Документация по MQL5: Константы, перечисления и структуры / Константы графиков / Примеры работы с графиком
Документация по MQL5: Константы, перечисления и структуры / Константы графиков / Примеры работы с графиком
  • www.mql5.com
Примеры работы с графиком - Константы графиков - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Alexey Viktorov #:

Que pensez-vous de ça ?

Oui, mais c'est pousser le bouton loin.

Lorsque vous faites glisser le marqueur avec vos mains, il se repose un peu avant d'atteindre le bord droit - c'est une limitation fondamentalement erronée du terminal !

Lorsque vous appuyez sur le bouton, la barre la plus extérieure se colle presque au bord droit, ce qui fait que la valeur informative du graphique est perdue.

Vous devez appuyer sur le bouton sans atteindre 15-20 barres et ne pas effectuer cette opération à chaque fois qu'une nouvelle barre apparaît. Ne comprimez qu'une seule fois.

P.S. Pourquoi une telle restriction et tant d'espace vide ?


 
Vitaly Muzichenko #:

Oui, mais c'est repousser le bouton.

Lorsque vous faites glisser le marqueur à la main, il s'arrête souvent avant d'atteindre le bord droit - c'est une limitation fondamentalement erronée du terminal !

Lorsque vous appuyez sur le bouton, la barre la plus extérieure se colle presque au bord droit, ce qui fait que la valeur informative du graphique est perdue.

Vous devez appuyer sur le bouton sans atteindre 15-20 barres et ne pas effectuer cette opération à chaque fois qu'une nouvelle barre apparaît. Ne comprimez qu'une seule fois.

Pourcentage

//+------------------------------------------------------------------+ 
//| Функция устанавливает размер отступа нулевого бара от правого    | 
//| края графика в процентах (от 10% до 50%). Для включения режима   | 
//| отступа, нужно установить значение свойства CHART_SHIFT равным   | 
//| true.                                                            | 
//+------------------------------------------------------------------+ 
bool ChartShiftSizeSet(const double value,const long chart_ID=0) 
  { 
//--- сбросим значение ошибки 
   ResetLastError(); 
//--- установим значение свойства 
   if(!ChartSetDouble(chart_ID,CHART_SHIFT_SIZE,value)) 
     { 
      //--- выведем сообщение об ошибке в журнал "Эксперты" 
      Print(__FUNCTION__+", Error Code = ",GetLastError()); 
      return(false); 
     } 
//--- успешное выполнение 
   return(true); 
  }
 
Alekseu Fedotov #:

Pourcentage

Cela fonctionne, mais le minimum est une indentation qui peut être définie à la main et au moins

Visuellement, c'est un minimum de 10%. Pourquoi 5 % ne fonctionnent pas

Raison: