Questions des débutants MQL5 MT5 MetaTrader 5 - page 1034

 
The_Sheikh:

Bonjour, quelqu'un peut-il expliquer en termes clairs ce que sont les"Plots" dans MQL5 ? Ils ne sont pas liés aux tampons, mais la propriété indicator_plots crée une liste de propriétés d'objets de dessin similaires aux tampons. Lors de l'utilisation des outils MQL4, il était clair qu'une référence était faite à un objet de dessin spécifique. Il existe désormais une nouvelle propriété du préprocesseurindicator_plots qui définit le nombre de ce qui n'est pas clair.

Dans MQL4, le nombre de tampons à afficher était spécifié à l'aide de l'option

#property indicator_buffers 1

Dans la fonction OnInit(), vous pouvez ajouter plusieurs tampons pour les calculs

IndicatorBuffers(3);

Et dans MQL5, la même chose est écrite dans deux directives

#property indicator_buffers 3
#property indicator_plots   1

Cela signifie qu'il y a 3 tampons au total, tandis que 1 tampon sera affiché sur le graphique. Les deux autres seront utilisés pour les calculs. Et dans MQL5, l'un des supplémentaires peut être utilisé pour l'affichage des couleurs.

 
fxsaber:

Il est probablement plus clair de comprendre si vous exécutez cet indicateur dans MT4 et MT5. Lors de la conversion vers MT5, j'ai dû utiliser des parcelles.

Parce que seuls deux tampons doivent être dessinés.

Déjà plus proche de la vérité. Mais dans ce cas, que se passe-t-il si les deuxième et sixième tampons doivent être tirés ? Il n'y a aucun moyen ?

Alexey Viktorov:

Nous pourrions ajouter plusieurs tampons pour les calculs dans lafonction OnInit()

À propos, existe-t-il une alternative à cette fonction dans MQL5 ?

 
The_Sheikh:

C'est plus proche de la vérité. Mais dans ce cas, que faire si le deuxième et le sixième doivent être tirés ? Rien ?

Je ne sais pas.

 
The_Sheikh:

C'est plus proche de la vérité. Mais dans ce cas, que faire si le deuxième et le sixième doivent être tirés ? Pas possible ?

1) "Deuxième et sixième" - vous décidez de la répartition des numéros ;)

2) INDICATOR_CALCULATIONS et DRAW_NONE par rapport à INDICATOR_DATA et non-DRAW_NONE (tout autre) fonctionne pour tout numéro de séquence.

 
The_Sheikh:

C'est plus proche de la vérité. Mais dans ce cas, que faire si le deuxième et le sixième doivent être tirés ? Pas possible ?

Il suffit de définir le type de tampon, celui qui sera affiché, celui qui contiendra la couleur et celui qui ne contiendra que les valeurs auxiliaires.


INDICATOR_DATA

Données de dessin

INDICATEUR_COLOR_INDEX

Rendu des couleurs

INDICATEURS_CALCULS

Tampons supplémentaires pour les calculs intermédiaires

 
The_Sheikh:

À propos, existe-t-il une alternative à cette fonction dans MQL5 ?

Il n'y a pas besoin d'une telle fonction dans mql5. Je vous ai donné un exemple de la façon de l'écrire. La différence avec mql4 n'est que dans la séquence et l'orthographe.

 
Merci à tous d'avoir répondu !
 

Supposons que le nombre maximal de barres sur le graphique soit fixé à 10000. Ensuite, dans le script et l'indicateur, la fonction Bars() renvoie le nombre spécifié dans les paramètres + le nombre de nouveaux chandeliers apparus.

Ainsi, le nombre de chandeliers affichés dans le graphique ne sera pas limité à 10000 ?

Comment puis-je connaître dans MQL le nombre exact spécifié dans les paramètres du terminal?

Si le nombre de barres atteint le maximum du type int, qu'adviendra-t-il du nombre de chandeliers et des positions des éléments du tableau ?

 
The_Sheikh:

Comment puis-je savoir dans MQL combien de barres exactement sont définies dans les paramètres du terminal?

TerminalInfoInteger(TERMINAL_MAXBARS))
Le_Sheikh:

Si le nombre de barres atteint la valeur maximale du type int, qu'adviendra-t-il du nombre de chandeliers ?

le nombre de barres va augmenter, c'est-à-dire qu'il va dépasser la valeurTERMINAL_MAXBARS

Et ensuite, par un algorithme inconnu, le terminal "réinitialise les barres supplémentaires" - alors que le nombre réel de barres dans le graphique sera dans le const int rates_total, il sera dans le iBars()https://www.mql5.com/ru/docs/series/ibars.

c'est-à-dire, comme indiqué ci-dessus - TERMINAL_MAXBARS est une donnée de la fenêtre du terminal, et iBars() est la valeur réelle des barres sur le graphique.


Le_Sheikh:

et avec les positions des éléments des tableaux de séries chronologiques ?

si nous parlons de tampons indicateurs, le terminal leur alloue de la mémoire et la taille du tableau, associé au tampon indicateur, est toujours égale à rates_total elements

indicateur pour les tests :

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   static datetime t=0;
   if(t!=time[rates_total-1])
     {
      Print("rates_total = ",rates_total, ", TERMINAL_MAXBARS = ",TerminalInfoInteger(TERMINAL_MAXBARS));
      t=time[rates_total-1];
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }

journal des indicateurs :

2019.04.30 19:10:12.247 rates (EURUSD,M1) rates_total = 50000, TERMINAL_MAXBARS = 50000

2019.04.30 19:10:29.699 rates (EURUSD,M1) rates_total = 50001, TERMINAL_MAXBARS = 50000

2019.04.30 19:11:29.392 rates (EURUSD,M1) rates_total = 50002, TERMINAL_MAXBARS = 50000

2019.04.30 19:12:30.125 rates (EURUSD,M1) rates_total = 50003, TERMINAL_MAXBARS = 50000


Документация по MQL5: Доступ к таймсериям и индикаторам / iBars
Документация по MQL5: Доступ к таймсериям и индикаторам / iBars
  • www.mql5.com
Количество баров в истории по соответствующему символу и периоду, но не более чем задано в настройках платформы параметром "Макс. баров в окне" ("Max bars in chart")
 

Je veux me familiariser avec le développement d'interfaces en MQL5 sur EasyAndFastGUI

Il y a 10 parties (ou quoi ?) d'articles surles "interfaces graphiques" de 2015.

J'ai une question : sont-ils tous cohérents, ou n'y a-t-il aucun intérêt à lire les plus anciens ?