Questions pour les débutants en MQL5. Les professionnels ne passent pas leur chemin. - page 6

 
_o0O:

Surtout pas n'importe lequel, il s'ensuit que toute question est la bienvenue.

L'aide ne contient pas cette nuance. DRAW_NONE ne fonctionne pas non plus #property ou dans PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_NONE), PlotIndexSetString(0, PLOT_LABEL, "Buff") ne fonctionne pas non plus, alors quelle est la logique derrière la spécification de clrNONE pour atteindre ce but ?

En outre, tout le monde ne peut pas lire la documentation sur les langues.

Le code présenté contient tout ce qu'il faut vérifier et comprendre.

 
Alexey Viktorov:

De plus, tout le monde ne sait pas comment lire la documentation de la langue.

Le code fourni contient tout ce dont vous avez besoin pour le vérifier et le comprendre.

Tu veux parler ?

OK. Veuillez me montrer l'endroit dans l'aide où il y a une solution à mon problème. Et votre code est une béquille, une fonctionnalité non documentée, car spécifier clrNONE pour ne pas rendre le tampon semble délirant.

 
Alexey Viktorov:

Vous n'avez pas besoin de mettre le type DRAV_NONE, mais la couleur clr_NONE.

Voici le code de test

Expliquer :

limit = rates_total-prev_calculated; // Это тупо для примера. В нормальном индикаторе так делать нельзя!

Pourquoi ne le pouvez-vous pas ? Pourquoi en rouge avec une exclamation ?

 
_o0O:

Comment faire pour que certains tampons de l'indicateur ne soient pas dessinés sur le graphique, mais affichent leurs valeurs dans la" fenêtre dedonnées" de l'indicateur ?

Je le fais :


mais l'indicateur dessine toujours un tampon.

Vous pouvez voir un exemple ici :

3TF_RSI_Average
3TF_RSI_Average
  • www.mql5.com
Индикатор Three timeframes RSI Average - отображает в отдельном окне три индикатора Relative Strength Index с заданных таймфреймов и их среднее значение. Имеет десять настраиваемых параметров: RSI period - период расчёта RSIOverbought - уровень перекупленностиOversold - уровень перепроданностиDrawing mode - режим рисованияFirst RSI timeframe...
 
Artyom Trishkin:

Vous pouvez voir un exemple ici :

Non, ce n'est pas ça.

Dans votre exemple, 4 tampons sont dessinés et 4 sont dans la fenêtre de données. Ce qu'il faut, c'est qu'ils ne soient pas dessinés, mais qu'ils soient dans la fenêtre de données et qu'ils aient un nom donné.

 
_o0O:

Non, ce n'est pas ça.

Dans votre exemple, 4 tampons sont dessinés et 4 sont dans la fenêtre de données. Ce qu'il faut, c'est qu'ils ne soient pas dessinés, mais qu'ils soient dans la fenêtre de données et qu'ils aient un nom donné.

Et si vous regardez attentivement ? Il est possible de désactiver l'affichage de trois des quatre tampons - un par un. Mais lorsqu'ils sont désactivés dans la fenêtre de données, ils continuent à être affichés, et avec des noms donnés par programme - tout comme demandé. Ou ai-je mal compris la question ?

 
Artyom Trishkin:

Et si on regardait de plus près ? Il existe une option permettant de désactiver l'affichage de trois des quatre tampons - un à la fois. Mais lorsqu'ils sont désactivés, ils sont toujours affichés dans la fenêtre de données, et avec les noms programmés - comme vous l'avez demandé. Ou ai-je mal compris la question ?

Oui, je vois.

PlotIndexSetInteger(0,PLOT_DRAW_TYPE,InpShowRSI1) ;

InpShowRSI1 prend les valeurs 0 ou 1, c'est ainsi qu'il fonctionne.

Mais j'ai spécifié PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_NONE) ; et cela ne fonctionne pas.

 
_o0O:

oui, je peux voir là

PlotIndexSetInteger(0,PLOT_DRAW_TYPE,InpShowRSI1) ;

InpShowRSI1 prend les valeurs 0 ou 1, c'est ainsi qu'il fonctionne.

Mais j'ai spécifié PlotIndexSetInteger(0,PLOT_DRAW_TYPE, DRAW_NONE) ; et cela n'a pas fonctionné.

DRAW_NONE == 0

DRAW_LINE == 1

Donc vous avez quelque chose d'autre quelque part. En théorie, cela devrait fonctionner pour vous aussi.

 
Artyom Trishkin:

Expliquer :

Pourquoi ne le pouvez-vous pas ? Pourquoi en rouge avec une exclamation ?

Si l'indicateur calcule plusieurs barres, une telle implémentation se situera en dehors du tableau. Donc vous devez forcer vos muscles de la tête dans chaque cas...
 
Alexey Viktorov:
Si l'indicateur doit calculer plusieurs barres, cette implémentation se situera en dehors du tableau. Par conséquent, dans chaque cas, nous devons solliciter les muscles de notre tête.

Non, tu n'es pas obligé. Tout est fait une fois à la limite>1. C'est la première exécution et le chargement de l'historique. Et si vous avez une période de lissage_sm=10, alors la limite dans ce cas doit être inférieure de 10. En conséquence :

if(limit>1)
  {
   limit=rates_total-period_sm-1;
   ArrayInitialize(Buffer,InitValue);
  }

InitValue - valeur pour initialiser le tampon - 0 ou EMPTY_VALUE - selon le cas. Ou peut-être -100500 ...

Raison: