Só tem de especificar um número de janela inexistente .
Isto é, especificar INT_MAX, por exemplo. Ou um valor negativo (eu próprio ainda não o experimentei, mas como ideia pode experimentar).
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);
}
É por isso que tem de especificar explicitamente o win_ind, caso contrário não funcionará.
Só tem de especificar um número de janela inexistente .
Isto é, especificar INT_MAX, por exemplo. Ou um valor negativo (eu próprio ainda não o experimentei, mas como ideia, pode experimentar).
Isso é porque ainda não experimentei, é por isso que o aconselha
OK, se verificou a ideia de especificar valores negativos e não se provar que seja verdade, vamos parar na primeira dica:
"Só tem de especificar um número de janela inexistente , por exemplo, especificar INT_MAX". Ou seja, no exemplo acima especificar
ChartIndicatorAdd(chart_id,INT_MAX,handle); // указываем заранее несуществующий номер подокна
Ou, no seu caso, ao especificar um número de janela inexistente, a funçãoChartIndicatorAdd recusa-se a trabalhar e a criar uma nova subjanela?
A propósito, não é bem claro porque tem a mesma variável no seu código
int win_ind=1;
é primeiro utilizado como o quarto parâmetro da funçãoIndicatorCreate (onde o quarto parâmetro == número de parâmetros passados na matriz parameters_array[]) e depois utilizado como o segundo parâmetro da funçãoChartIndicatorAdd(onde o segundo parâmetro == número da subjanela do gráfico).
A propósito, não é bem claro porque tem a mesma variável no seu código
primeiro é usado como o quarto parâmetro da funçãoIndicatorCreate (onde o quarto parâmetro == número de parâmetros passados em array parameters_array[]) e depois é usado como o segundo parâmetro da funçãoChartIndicatorAdd(onde o segundo parâmetro == número da subjanela do gráfico).
Semyonych Semyonych, isso mesmo. Fui descuidado ao escrever win_ind explicitamente como 1 e depois, ao substituí-lo por uma variável, mudei todos os 1's para win_ind. Foi isso que lhe deu o choque eléctrico :o)
O código correcto seria este
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);
}
Agora sim, tudo funciona automaticamente. Obrigado pela análise do código, uma cabeça é boa, mas duas é melhor :o)
Houve sugestões sobre o alargamento da lista de encomendas pendentes há cerca de seis meses. Por exemplo, para introduzir encomendas do tipo OCO, etc. Qual é o estado actual de progresso dessas ideias? Podemos esperar o aparecimento (pelo menos dentro de um ano) de novos tipos de encomendas pendentes?
Só tem de especificar um número de janela inexistente .
Isto é, especificar INT_MAX, por exemplo. Ou um valor negativo (eu próprio ainda não o experimentei, mas como ideia pode experimentar).
É por isso que tem de especificar explicitamente o win_ind, caso contrário não funcionará.
Urain:
Só tem de especificar um número de janela inexistente .
Isto é, especificar INT_MAX, por exemplo. Ou um valor negativo (eu próprio ainda não o experimentei, mas como ideia, pode experimentar).
Isso é porque ainda não experimentei, é por isso que o aconselha
OK, se verificou a ideia de especificar valores negativos e não se provar que seja verdade, vamos parar na primeira dica:
"Só tem de especificar um número de janela inexistente , por exemplo, especificar INT_MAX". Ou seja, no exemplo acima especificar
Ou, no seu caso, ao especificar um número de janela inexistente, a funçãoChartIndicatorAdd recusa-se a trabalhar e a criar uma nova subjanela?
A propósito, não é bem claro porque tem a mesma variável no seu código
é primeiro utilizado como o quarto parâmetro da funçãoIndicatorCreate (onde o quarto parâmetro == número de parâmetros passados na matriz parameters_array[]) e depois utilizado como o segundo parâmetro da funçãoChartIndicatorAdd(onde o segundo parâmetro == número da subjanela do gráfico).Leia com atenção.
https://www.mql5.com/ru/docs/chart_operations/chartindicatorstotal
Leia com atenção.
https://www.mql5.com/ru/docs/chart_operations/chartindicatorstotal
É a isto que se refere?
GRÁFICO_JANELAS_TOTAL
Número total de janelas de gráficos, incluindo as subjanelas de indicadores
int r/o
A propósito, não é bem claro porque tem a mesma variável no seu código
primeiro é usado como o quarto parâmetro da funçãoIndicatorCreate (onde o quarto parâmetro == número de parâmetros passados em array parameters_array[]) e depois é usado como o segundo parâmetro da funçãoChartIndicatorAdd(onde o segundo parâmetro == número da subjanela do gráfico).Semyonych Semyonych, isso mesmo. Fui descuidado ao escrever win_ind explicitamente como 1 e depois, ao substituí-lo por uma variável, mudei todos os 1's para win_ind. Foi isso que lhe deu o choque eléctrico :o)
O código correcto seria este
Agora sim, tudo funciona automaticamente. Obrigado pela análise do código, uma cabeça é boa, mas duas é melhor :o)
Taki sim :) Ao fazer um loop duplo pode passar por todos os índices do gráfico sem grandes problemas.
Infelizmente, não. O sistema de mandado não vai mudar.