[¡AVISO CERRADO!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen. No puedo ir a ningún sitio sin ti. - página 38

 
ikatsko >> :

Se deja (para simplificar) sólo lo que constituye el problema en el código. Poner el indicador y ver el problema, por así decirlo.




Si no me equivoco, la función init se llama sólo una vez, cuando se cuelga un gráfico. Sería lógico forzar la reinicialización cuando tf cambia - para evitar "cosas raras" con el trabajo del gestor de memoria.

if( CurrentPeriod!=Period())
{
    ReInitParam();
    CurrentPeriod=Period();
}

>> Buena suerte.

 
ikatsko писал(а) >>

Se deja (para simplificar) sólo lo que constituye el problema en el código. Ponemos el indicador y vemos el problema, por así decirlo.



//+------------------------------------------------------------------+
//| Función de inicialización de indicadores personalizada |
//+------------------------------------------------------------------+
int init()
{
//...........................................................
Set_SL[Historia*Profundidad]=1,0*Nivel*Punto;
Alert("Init:"," Set_SL[",Historia*Profundidad,"]=",Set_SL[Historia*Profundidad]);//suspenderlo para ver: muestra (digamos) 0,0001
//--------------------------------------------------------------------//----
return(0);
}

No se debe hacer referencia a arrays desde init(). Lo más probable es que las matrices no se hayan inicializado todavía. Tiene sentido mover la parte problemática a start()

 
Vinin >> :

Basta con comprobar la última transacción cerrada. Pero hay que prever cuando todavía no hay historia

¿Qué función puede utilizar para ello?

 
xruss писал(а) >>

¿Qué función se puede utilizar para ello?

Hay que escribir una función o buscar una ya hecha.

 
VladislavVG >> :

Si no me equivoco, la función init sólo se llama una vez, cuando se cuelga un gráfico. Lo lógico sería forzar la reinicialización cuando se cambia el t\f - para evitar "cosas raras" con el funcionamiento del gestor de memoria.


Buena suerte.

Del tutorial:

Función especial init().
En los indicadores personalizados la función especial init() se llama (y se ejecuta) inmediatamente después del inicio del terminal del cliente, después de un cambio de un símbolo y/o un período del gráfico, después de recompilar el programa en el MetaEditor y después del cambio de los parámetros de entrada desde la ventana de configuración del indicador personalizado.

 
ikatsko >> :

Del libro de texto:

Función especial init().
En los indicadores personalizados la función especial init() se llama (y se ejecuta) inmediatamente después del inicio del terminal del cliente, después del cambio de símbolo y/o período del gráfico, después de la recompilación del programa en el MetaEditor y después del cambio de los parámetros de entrada desde la ventana de configuración del indicador personalizado.

Se tarda como mucho cinco minutos - declarar una función y transferirla allí desde el anexo init y llamarla como te he escrito.

Buena suerte.

SZ el valor int máximo que te da tu función es muy probablemente EMPTY_VALUE.

Sí, una cosa más: la variable CurrentPeriod debe ser declarada como una variable estática o global para el archivo. Suelo asignar un valor de -1 a estas variables.

 
¿Cómo me refiero a la barra anterior (ya formada)?
 
RocketTrend >> :
¿Cómo referirse a la barra anterior (ya formada)?

Close[1]/Open[1]/High[1]/Low[1]/.... Dependiendo del valor que se necesite.

 
VladislavVG >> :

Close[1]/Open[1]/High[1]/Low[1]/.... Dependiendo del valor que se requiera.

Gracias

 
VladislavVG >> :

Close[1]/Open[1]/High[1]/Low[1]/.... Dependiendo del valor que se requiera.

Gracias