Souhaits pour MT5 - page 62

 
Yedelkin:

Il suffit de spécifier un numéro de fenêtre inexistant .

Par exemple, spécifiez INT_MAX, par exemple. Ou une valeur négative (je ne l'ai pas essayé moi-même, mais comme idée vous pouvez l'essayer).


int win_ind=1;

int OnInit()
  {
//---
   chart_id=ChartID();
//--- set balans ind

   MqlParam params[1];
   params[0].type         =TYPE_STRING;
   params[0].string_value =name_ind;
   handle=IndicatorCreate(ChartSymbol(chart_id),ChartPeriod(chart_id),IND_CUSTOM,win_ind,params); // вот тут ещё 
                                                                              // прокатит несуществующее окно
   ChartIndicatorAdd(chart_id,win_ind,handle); // а вот тут уже нужно точно знать его номер
   win_ind=ChartWindowFind(chart_id,name_ind); // а получить его можно только тут   
//---
   return(0);
  }

C'est pourquoi vous devez spécifier win_ind explicitement, sinon cela ne fonctionnera pas.

 

Urain:

Yedelkin:

Il suffit de spécifier un numéro de fenêtre inexistant .

Par exemple, spécifiez INT_MAX, par exemple. Ou une valeur négative (je ne l'ai pas essayé moi-même, mais comme idée, vous pouvez l'essayer).

C'est parce que je n'ai pas essayé, c'est pour ça que tu me le conseilles.

OK, si vous avez vérifié l'idée de spécifier des valeurs négatives et que cela ne s'avère pas vrai, arrêtons-nous au premier indice :

"Il suffit de spécifier un numéro de fenêtre inexistant , par exemple spécifier INT_MAX". C'est-à-dire que dans l'exemple ci-dessus, spécifiez

ChartIndicatorAdd(chart_id,INT_MAX,handle); // указываем заранее несуществующий номер подокна

Ou, dans votre cas, en spécifiant un numéro de fenêtre inexistant, la fonctionChartIndicatorAdd refuse de fonctionner et de créer une nouvelle sous-fenêtre ?

Au fait, on ne comprend pas bien pourquoi vous avez la même variable dans votre code

int win_ind=1;
est d'abord utilisé comme quatrième paramètre de la fonctionIndicatorCreate (où le quatrième paramètre == nombre de paramètres passés dans le tableau parameters_array[]) et ensuite utilisé comme deuxième paramètre de la fonctionChartIndicatorAdd(où le deuxième paramètre == numéro de sous-fenêtre du graphique).
 
Документация по MQL5: Операции с графиками / ChartIndicatorsTotal
Документация по MQL5: Операции с графиками / ChartIndicatorsTotal
  • www.mql5.com
Операции с графиками / ChartIndicatorsTotal - Документация по MQL5
 

C'est ce que vous voulez dire ?

GRAPHIQUE_FENÊTRES_TOTAL

Nombre total de fenêtres de graphiques, y compris les sous-fenêtres d'indicateurs.

int r/o

 
Taki oui :) En faisant une double boucle, vous pouvez passer par tous les indices de la carte sans trop de problèmes.
 
Yedelkin:

Au fait, on ne comprend pas bien pourquoi vous avez la même variable dans votre code

Il est d'abord utilisé comme quatrième paramètre de la fonctionIndicatorCreate (où le quatrième paramètre == nombre de paramètres passés dans le tableau parameters_array[]) et ensuite il est utilisé comme deuxième paramètre de la fonctionChartIndicatorAdd(où le deuxième paramètre == numéro de sous-fenêtre du graphique).

Semyon Semyonych, c'est ça. J'ai été négligent en écrivant explicitement partout win_ind comme 1 et ensuite, en le remplaçant par une variable, j'ai changé tous les 1 en win_ind. C'est ce qui vous a donné le choc électrique :o)

Le code correct serait le suivant

int win_ind=-1;

int OnInit()
  {
//---
   chart_id=ChartID();
//--- set balans ind

   MqlParam params[1];
   params[0].type         =TYPE_STRING;
   params[0].string_value =name_ind;
   handle=IndicatorCreate(ChartSymbol(chart_id),ChartPeriod(chart_id),IND_CUSTOM,1,params);// 1- количество параметров 
                                                                              
   ChartIndicatorAdd(chart_id,win_ind,handle); // тут поскольку win_ind=-1 создаём новое окно
   win_ind=ChartWindowFind(chart_id,name_ind); // а тут получаем значение win_ind 
//---
   return(0);
  }

Maintenant oui, tout fonctionne automatiquement. Merci pour l'analyse du code, une tête c'est bien mais deux c'est mieux :o)

 
TheXpert:
Taki oui :) En faisant une double boucle, vous pouvez passer par tous les indices de la carte sans trop de problèmes.
C'est bon ! Mais pour mes besoins, j'ai réussi à éviter la boucle.
 
Il y a environ six mois, il a été suggéré d'étendre la liste des commandes en cours. Par exemple, pour introduire des ordres de type OCO, etc. Quel est l'état d'avancement actuel de ces idées ? Peut-on espérer l'apparition (au moins dans un an) de nouveaux types d'ordres en attente ?
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
 
Malheureusement, non. Le système des mandats ne changera pas.
 
Renat:
Malheureusement, non. Le système des mandats ne va pas changer.
OK, alors on va faire avec ce qu'on a.