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;
intOnInit()
{
//---
chart_id=ChartID();
//--- set balans indMqlParam 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.
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).
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;
intOnInit()
{
//---
chart_id=ChartID();
//--- set balans indMqlParam 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)
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 ?
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 pourquoi vous devez spécifier win_ind explicitement, sinon cela ne fonctionnera pas.
Urain:
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
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
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).Lisez attentivement.
https://www.mql5.com/ru/docs/chart_operations/chartindicatorstotal
Lisez attentivement.
https://www.mql5.com/ru/docs/chart_operations/chartindicatorstotal
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
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
Maintenant oui, tout fonctionne automatiquement. Merci pour l'analyse du code, une tête c'est bien mais deux c'est mieux :o)
Taki oui :) En faisant une double boucle, vous pouvez passer par tous les indices de la carte sans trop de problèmes.
Malheureusement, non. Le système des mandats ne va pas changer.