Indicador Preguntas varias - página 12

 

No hay ninguna razón por la que esa declaración de impresión no deba generar algo.

Si añade el indicador a un nuevo gráfico, ¿se imprime (sin tener que cambiar el marco temporal)?

Si es así, podría ser un problema de tener ya el indicador en un gráfico y luego recompilar esperando ver el cambio.

 
honest_knave:

No hay ninguna razón por la que esa declaración de impresión no deba generar algo.

Si añade el indicador a un nuevo gráfico, ¿se imprime (sin tener que cambiar el marco temporal)?

Si es así, podría ser un problema de tener ya el indicador en un gráfico y luego recompilar esperando ver el cambio.


Gracias por el comentario rápido, lo aprecio.

Sí. Imprime el mensaje de abajo ya sea Cargar Plantilla o Añadir Indicador.

20...   ... EURUSD,M1: This Year1900

Pero como sabes ese código me puede dar " 2017 ".

//--- 2da vez editado

Cuando vuelvo a compilar muestra el resultado correcto.

Pero no puedo abrir el MetaEditor que recompilo cuando trato de agregar el indicador y cargar la plantilla... Espero que entiendan lo que quiero decir.

 
Max Enrik:


Gracias por el rápido comentario, lo aprecio.

Sí. Imprime el mensaje de abajo ya sea Cargar Plantilla o Agregar Indicador.

Pero como sabes ese código me puede dar " 2017 ".

//--- 2da vez editado

Cuando vuelvo a compilar muestra el resultado correcto.

Pero no puedo abrir el MetaEditor que recompilo cuando trato de agregar el indicador y cargar la plantilla... Espero que entiendas lo que quiero decir.


Posiblemente la razón por la que te está dando el año "equivocado" es que OnInit() se está ejecutando antes de que te hayas conectado a tu broker.

Year() se basa en la hora del servidor... si no hay conexión, no sabe el año.

Compárelo con:

TimeYear(TimeLocal())
 
honest_knave:


Posiblemente la razón por la que te está dando el año "equivocado" es que OnInit() se está ejecutando antes de que te hayas conectado a tu broker.

Year() se basa en la hora del servidor... si no hay conexión, no sabe el año.

Compárelo con:


Sé con seguridad que OnInit() yOnCalculate(...) necesitan un estilo de código diferente...
Intentaré reescribir mis indicadores de nuevo.
( es posible que me rinda )

Gracias por tu comentario.

 

Creo que podría escribir un código para borrar primero todos los objetos del indicador y luego reescribirlos.
He intentado como el código de abajo. Pero tengo dudas sobre ese método.

P : ¿Es suficiente ese método para borrar todos los objetos del indicador, por favor?

Cualquier consejo sería mejor gracias.

int OnInit()
 {
  ObjectsDeleteAll( 0, prefix );
  
  // then all my indicator code here...
 }
 
Max Enrik:

Creo que podría escribir un código para borrar primero todos los objetos del indicador y luego reescribirlos.
He intentado como el código de abajo. Pero tengo dudas sobre ese método.

P : ¿Es suficiente ese método para borrar todos los objetos del indicador, por favor?

Cualquier consejo sería mejor gracias.


Esa es la forma correcta de eliminar todos los objetos del gráfico actual que comienzan con 'prefix'
 
honest_knave:

Esa es la forma correcta de eliminar todos los objetos del gráfico actual que comienzan con 'prefix'

Genial. Gracias por su respuesta.
Ahora, sólo tengo que ver cómo va a trabajar mi indicador el próximo día.

( p.s no me gusta probar mi indicador con Tester )

 

( Una vez que le dije )

Yo uso por debajo de código de método para mis pocos indicadores, que los indicadores no tienen ningún problema, pero sólo tienen un problema cuando empiezo plataforma MT4 que es que los indicadores necesita para reiniciar la plataforma que las actualizaciones sólo para los valores correctos. Me enfrento a este problema sólo una vez al día.

P: Entonces, ¿la parte del código que se muestra a continuación puede causar un problema que no puede actualizar los valores correctos, por favor?

Gracias de antemano.

int OnInit()
{
    //---
    datetime a = iTime( Symbol(), 0, 0 );
    int      b = iBarShift( Symbol(), 0, a );
    datetime c = iOpen( Symbol(), 0, b );
    //---
    return(0);
}
 

El código en OnInit() sólo se ejecuta una vez.

Cuando reinicie su terminal, OnInit() puede terminar antes de que se haya conectado a su broker.

Sin una conexión a su corredor, el tiempo va a ser incorrecto.

Yo sugeriría mover su código fuera de OnInit(), o al menos comprobar IsConnected()

 
honest_knave:

Yo sugeriría mover tu código fuera de OnInit(), o al menos comprobar IsConnected()

Nunca use este IsConnected(), voy a investigar sobre eso.

Muchas gracias.

Razón de la queja: