Errores, fallos, preguntas - página 2572

 
Vict:

¿Cómo se crea un CJVal? probablemente new CJVal()?

Es poco probable que el terminal lo capte.

No, como en el ejemplo del autor bíblico, en la pila

CJAVal js(NULL, jtUNDEF);
 

Encontré que en mi modo de prueba visual SymbolInfoTick() devuelve un valor pero la serie de tiempo Close[0] tiene un valor diferente.

¿Es un error mío? ¿Estoy haciendo algo mal?

Parece que deberían ser los mismos valores:

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---

   MqlTick mtLastTick;
   SymbolInfoTick(Symbol(),mtLastTick);
   
   ArraySetAsSeries(close,true);


   Comment("Close[0] = " + DoubleToString(close[0],5) + "\nLastBid = " + DoubleToString(mtLastTick.bid,5));
   
//--- return value of prev_calculated for next call
   return(rates_total);
  }

Normalmente la diferencia es de 1-2 puntos, pero en los movimientos bruscos puede ser mayor.

¿Sólo soy yo?

Hasta ahora he tomado las series temporales como "más correctas". Si resulta que SymbolInfoTick() da un valor diferente al de Close[0], asumo que el correcto es Close[0] y dejo el spread como lo devolvió SymbolInfoTick().

Sin embargo, quiero saber qué precio es el correcto y si es Close[0] o SymbolInfoTick().

Archivos adjuntos:
TestTick.mq5  2 kb
 
Georgiy Merts:

Encontré que en mi modo de prueba visual SymbolInfoTick() devuelve un valor pero la serie de tiempo Close[0] tiene un valor diferente.

¿Es un error mío? ¿Estoy haciendo algo mal?

Parece que deberían ser los mismos valores:

Normalmente la diferencia es de 1-2 puntos, pero en los movimientos bruscos puede ser mayor.

¿Sólo soy yo?

Por ahora he tomado las series temporales como "más correctas". Si resulta que SymbolInfoTick() da un valor diferente al de Close[0], entonces pienso que el valor correcto es Close[0] y dejo el spread como lo devolvió SymbolInfoTick().

Pero quiero saber qué precio es el correcto - si es SymbolInfoTick() o Close[0].

También existe SymbolInfoDouble(_Symbol,SYMBOL_BID).

 
Andrey Barinov:

También existe SymbolInfoDouble(_Symbol,SYMBOL_BID)

Sí, devuelve lo mismo que SymbolInfoTick().

 

Algunos consejos sobre las variables globales. Resuelto el problema de guardar los ticks de Market Watch.

Cada nuevo tick aumenta en uno la variable global correspondiente. A ojo, Market Watch recibe unos 100 ticks por segundo.

En total, las variables globales se actualizan a una velocidad de 100 Hz. Me pregunto si afecta negativamente al SSD.

Estoy escribiendo los propios ticks cada 1000 (~1 Gb para una semana). Así que me parece bien. Pero con global - no han pensado antes, que se escriben a SSD con cada actualización.

Por eso tenía esa pregunta.

 
fxsaber:

Algunos consejos sobre las variables globales. Resuelto el problema de guardar los ticks de Market Watch.

Cada nuevo tick aumenta en uno la variable global correspondiente. A ojo, Market Watch recibe unos 100 ticks por segundo.

En total, las variables globales se actualizan a un ritmo de 100 Hz. Me pregunto si afecta negativamente al SSD.

Estoy escribiendo los propios ticks cada 1000 (~1 Gb para una semana). Así que me parece bien. Pero con global - no han pensado antes, que se escriben a SSD con cada actualización.

Por eso tenía esa pregunta.

No se escriben en el disco con cada actualización

 
fxsaber:

Algunos consejos sobre las variables globales. Resuelto el problema de guardar los ticks de Market Watch.

Cada nuevo tick aumenta en uno la variable global correspondiente. A ojo, Market Watch recibe unos 100 ticks por segundo.

En total, las variables globales se actualizan a una velocidad de 100 Hz. Me pregunto si afecta negativamente al SSD.

Estoy escribiendo los propios ticks cada 1000 (~1 Gb para una semana). Así que me parece bien. Pero con global - no han pensado antes, que se escriben a SSD con cada actualización.

Por eso surgió la pregunta.

Creo que las variables globales del terminal se implementan a través de recursos con autoguardado periódico en disco. No creo que el autoguardado ocurra más que una vez cada 3 segundos, lo más probable es que sea mucho menos frecuente, e incluso es posible que sólo cuando ocurre un evento deinit.

 

No quiero buscar lo que una vez leí en la ayuda sobre las variables globales del terminal, pero parece que se guardan cuando se cierra el terminal -aunque puede que se me olvide, hace mucho tiempo que lo leí

es más fácil de comprobar, en el Administrador de tareas de Windows hay un diagrama del uso del disco duro


 
Igor Makanu:

No quiero buscar lo que una vez leí en la ayuda sobre las variables globales del terminal, pero parece que se guardan cuando se cierra el terminal -aunque puede que se me olvide, hace mucho tiempo que lo leí

es fácil de comprobar, en el Administrador de tareas de Windows hay un gráfico de uso del disco duro


Probablemente en la nota a pie de página.

 
Gracias a todos los que han respondido. La función de descarga descartó inmediatamente cualquier interpretación ambivalente.