2) Quizá no sea necesario reinicializar algunas variables
staticintChanGeTF = 0; // Признак смены ТФ , держим как статическую переменную в памяти эксперта
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+intOnInit()
{
if( ChanGeTF == 0) // при первом вызове код в OnInit полностью обрабатывается , но не отработает если просто менялся ТФ
{
// тут сформируем переменные для нашего эксперта которые отработают при первом старте экперта
// возможно сформируем графические объекты
}
else
{
ChanGeTF=0;
// сюда попадет при смене ТФ
// а формировать ничего уже не будем , у нас все сформировано и мы не желаем делать инициализацию переменных
// но если необходимо - что то обработаем в код OnInit
}
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+voidOnDeinit(constint reason)
{
Print(__FUNCTION__,"_UninitReason = ",getUninitReasonText(_UninitReason)); // пишем в лог причину входа в DeInit - очень полезная информация
if ( REASON_CHARTCHANGE != _UninitReason )
{
// сюда не попадаем , если произошла смена ТФ
// удалим графические объекты - для полноценного завершения работы эксперта
//
}
else
{
// сюда попадем если просто произошла смена ТФ
// сделаем то что нам интересно - но при этом - к примеру - не будем удалять с графика графические объекты
ChanGeTF=1;
}
}
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+string getUninitReasonText(int reasonCode)
{
string text="";
//--- switch(reasonCode)
{
caseREASON_ACCOUNT:
text="Account was changed";break;
caseREASON_CHARTCHANGE:
text="Symbol or timeframe was changed";
break;
caseREASON_CHARTCLOSE:
text="Chart was closed";break;
caseREASON_PARAMETERS:
text="Input-parameter was changed";break;
caseREASON_RECOMPILE:
text="Program "+__FILE__+" was recompiled"; break;
caseREASON_REMOVE:
text="Program "+__FILE__+" was removed from chart";break;
caseREASON_TEMPLATE:
text="New template was applied to chart";break;
default:text="Another reason";
}
//--- return text;
}
¿Cómo procesar estos códigos de desinicialización en un indicador, qué hacen estos códigos? Como no existe la posibilidad de esperar en el indicador, el sueño no funciona.
¿No has leído lo que he escrito varias veces?
No hay manera en los indicadores. No puedes hacerlo en cinco desde el principio. Porque se descarga una copia completamente nueva del indicador con todas las consecuencias.
Nikolai Semko: Este es el fin de los Asesores Expertos.
No siempre es prudente limitarse a leer el primer post antes de escribir nada.
No es del todo correcto decir qué es razonable y qué no lo es. Hice un pequeño recorrido por el tema antes de escribirlo.
He pegado un ejemplo de código en el tema y ahora los que lean el tema podrán ver que este mecanismo no funciona en un indicador y que sí lo hace en un EA.
El autor del tema por lo menos consiguió una respuesta a una pregunta, y con un ejemplo.
No es muy preciso decir qué es razonable y qué no. He investigado un poco sobre el tema antes de escribir.
Ahora los que lean el tema pueden ver que este mecanismo no funciona en un indicador y sí en un EA.
Gracias por el código, por supuesto. Funciona bien con los Asesores Expertos porque cuando cambiamos de TF, las variables no se reinicializan, mientras que en los indicadores sí se reinicializan. Si realmente quieres ayudar con consejos, por favor, vuelve a "correr" con menos prisa.
Para iniciar sesión y usar el sitio web MQL5.com es necesario permitir el uso de Сookies.
Por favor, active este ajuste en su navegador, de lo contrario, no podrá iniciar sesión.
Ha iniciado sesión. La autenticación de dos factores se ha desactivado. Vuelva a configurarla y escanee un nuevo código QR, o continúe con la autenticación de dos factores desactivada.
Opción para resolver problemas al cambiar los plazos
Si acabas de cambiar de TF
1) Probablemente no sea necesario eliminar los objetos gráficos.
2) Quizá no sea necesario reinicializar algunas variables
Opción para resolver problemas al cambiar los plazos
Si acabas de cambiar de TF
1) Probablemente no sea necesario eliminar los objetos gráficos.
2) Quizá no sea necesario reinicializar algunas variables
.
Opción para resolver problemas al cambiar los plazos
Si sólo hubiera un cambio de horario
1) Tal vez no debería eliminar los objetos gráficos.
2) Tal vez no deba reiniciar ninguna variable
Su código no funcionará.
Una vez más:
No puede controlar los resultados de Deinit en Inite, porque Deinit puede funcionar después de que Inite haya terminado.
Su código no funcionará.
Una vez más:
No puede controlar los resultados de Deinit en Inite, ya que Deinit puede activarse después de que Inite se haya ejecutado.
¿Quieres decir que no funcionará- en un indicador? En los expertos funciona.
¿Cómo procesar estos códigos de desinicialización en un indicador, qué hacen estos códigos? Como no existe la posibilidad de esperar en el indicador, el sueño no funciona.
¿No has leído lo que he escrito varias veces?
No hay manera en los indicadores. No puedes hacerlo en cinco desde el principio. Porque se descarga una copia completamente nueva del indicador con todas las consecuencias.
No hay ningún problema con los expertos. Este tema se refiere sólo a los indicadores. Léelo con atención.
He leído el primer post.
Dice, y cito:
"Indicador escrito o coevaluador"
He leído el primer post.
Dice, y cito:
"Escrito por un indicador o coautor".
Este es el fin de los Asesores Expertos.
No es del todo correcto decir qué es razonable y qué no lo es.
Hice un pequeño recorrido por el tema antes de escribirlo.
He pegado un ejemplo de código en el tema y ahora los que lean el tema podrán ver que este mecanismo no funciona en un indicador y que sí lo hace en un EA.
El autor del tema por lo menos consiguió una respuesta a una pregunta, y con un ejemplo.
No es muy preciso decir qué es razonable y qué no.
He investigado un poco sobre el tema antes de escribir.
Ahora los que lean el tema pueden ver que este mecanismo no funciona en un indicador y sí en un EA.