Sólo tiene que especificar un número de ventana inexistente .
Es decir, especificar INT_MAX, por ejemplo. O un valor negativo (yo no lo he probado, pero como idea se puede probar).
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 eso hay que especificar win_ind explícitamente, de lo contrario no funcionará.
Sólo tiene que especificar un número de ventana inexistente .
Es decir, especificar INT_MAX, por ejemplo. O un valor negativo (no lo he probado yo, pero como idea, puedes probarlo).
Eso es porque no lo he probado, por eso lo aconseja
Bien, si has comprobado la idea de especificar valores negativos y no resulta ser cierta, vamos a detenernos en la primera pista:
"Sólo tiene que especificar un número de ventana inexistente , por ejemplo, especificar INT_MAX". Es decir, en el ejemplo anterior especifica
ChartIndicatorAdd(chart_id,INT_MAX,handle); // указываем заранее несуществующий номер подокна
¿O, en su caso, al especificar un número de ventana inexistente, la funciónChartIndicatorAdd se niega a trabajar y crear una nueva subventana?
Por cierto, no está muy claro por qué tienes la misma variable en tu código
int win_ind=1;
se utiliza primero como cuarto parámetro de la funciónIndicatorCreate (donde el cuarto parámetro == número de parámetros pasados en la matriz parameters_array[]) y luego se utiliza como segundo parámetro de la funciónChartIndicatorAdd(donde el segundo parámetro == número de subventana del gráfico).
Por cierto, no está muy claro por qué tienes la misma variable en tu código
primero se utiliza como el cuarto parámetro de la funciónIndicatorCreate (donde el cuarto parámetro == número de parámetros pasados en el array parameters_array[]) y luego se utiliza como el segundo parámetro de la funciónChartIndicatorAdd(donde el segundo parámetro == número de subventana del gráfico).
Semyon Semyonych, así es. Me descuidé al escribir win_ind explícitamente en todas partes como 1 y luego, al sustituirlo por una variable, cambié todos los 1 por win_ind. Eso es lo que te dio la descarga eléctrica :o)
El código correcto sería 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);
}
Ahora sí, todo funciona automáticamente. Gracias por el análisis del código, una cabeza está bien pero dos es mejor :o)
Hace unos seis meses se propuso ampliar la lista de pedidos pendientes. Por ejemplo, para introducir órdenes de tipo OCO, etc. ¿Cuál es el estado actual de esas ideas? ¿Podemos esperar la aparición (al menos en un año) de nuevos tipos de órdenes pendientes?
Sólo tiene que especificar un número de ventana inexistente .
Es decir, especificar INT_MAX, por ejemplo. O un valor negativo (yo no lo he probado, pero como idea se puede probar).
Por eso hay que especificar win_ind explícitamente, de lo contrario no funcionará.
Urain:
Sólo tiene que especificar un número de ventana inexistente .
Es decir, especificar INT_MAX, por ejemplo. O un valor negativo (no lo he probado yo, pero como idea, puedes probarlo).
Eso es porque no lo he probado, por eso lo aconseja
Bien, si has comprobado la idea de especificar valores negativos y no resulta ser cierta, vamos a detenernos en la primera pista:
"Sólo tiene que especificar un número de ventana inexistente , por ejemplo, especificar INT_MAX". Es decir, en el ejemplo anterior especifica
¿O, en su caso, al especificar un número de ventana inexistente, la funciónChartIndicatorAdd se niega a trabajar y crear una nueva subventana?
Por cierto, no está muy claro por qué tienes la misma variable en tu código
se utiliza primero como cuarto parámetro de la funciónIndicatorCreate (donde el cuarto parámetro == número de parámetros pasados en la matriz parameters_array[]) y luego se utiliza como segundo parámetro de la funciónChartIndicatorAdd(donde el segundo parámetro == número de subventana del gráfico).Lee con atención.
https://www.mql5.com/ru/docs/chart_operations/chartindicatorstotal
Lee con atención.
https://www.mql5.com/ru/docs/chart_operations/chartindicatorstotal
¿Se refiere a esto?
TOTAL DE VENTANAS DEL GRÁFICO
Número total de ventanas del gráfico, incluidas las subventanas de los indicadores
int r/o
Por cierto, no está muy claro por qué tienes la misma variable en tu código
primero se utiliza como el cuarto parámetro de la funciónIndicatorCreate (donde el cuarto parámetro == número de parámetros pasados en el array parameters_array[]) y luego se utiliza como el segundo parámetro de la funciónChartIndicatorAdd(donde el segundo parámetro == número de subventana del gráfico).Semyon Semyonych, así es. Me descuidé al escribir win_ind explícitamente en todas partes como 1 y luego, al sustituirlo por una variable, cambié todos los 1 por win_ind. Eso es lo que te dio la descarga eléctrica :o)
El código correcto sería este
Ahora sí, todo funciona automáticamente. Gracias por el análisis del código, una cabeza está bien pero dos es mejor :o)
Taki sí :) Haciendo un doble bucle puedes pasar por todos los índices de la carta sin demasiados problemas.
Por desgracia, no. El sistema de órdenes judiciales no va a cambiar.