Errores, fallos, preguntas - página 1802
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
¿Sugiere hacer esto en cada tic?
Apoyo la sincronización en cada disparo de OnBookEvent() :(
No hay preguntas aquí, la cuestión es que además de esto, se sugiere llamar a CopyRates().... cada vez. Esto me parece una pataleta...
:)
{
if(symbol == Symbol())
{
GetBars(Symbol(), time_frame);
}
}
Así es como me enseñaron en SD
:)
{
if(symbol == Symbol())
{
GetBars(Symbol(), time_frame);
}
}
Si quieres decir o mostrar algo, por favor muéstralo correctamente... No quiero adivinar qué función tienes aquí y qué hace.
Añadido:
¿Me has enseñado? ¿Y no dio una implementación?
Si quieres decir o mostrar algo, por favor muéstralo correctamente... No quiero adivinar qué función tienes aquí y qué hace.
Añadido:
¿Me has enseñado? ¿Y no dio una implementación?
¿Qué es lo normal?
Dijeron que en dos minutos se descargan los datos y para mantener la sincronización
me dijeron que llamara a Bares.
//| Custom indicator Get bars function |
//+------------------------------------------------------------------+
int GetBars(string symbol, ENUM_TIMEFRAMES period)
{
if(!IsStopped())
{
if(SymbolIsSynchronized(symbol))
{
if(bool(SeriesInfoInteger(symbol, period, SERIES_SYNCHRONIZED)))
{
int a_bars = Bars(symbol, period);
if(a_bars > 0)
{
return(a_bars);
}
else
{
return(GetLocalData(symbol, period));
}
}
else
{
return(GetLocalData(symbol, period));
}
}
else
{
return(LoadServerData(symbol, period));
}
}
return(0);
}
Aquí está
// Custom indicator Check timer function |
//+------------------------------------------------------------------+
bool CheckTimer(const ulong start_value, const ulong per_value)
{
ulong end_value = GetMicrosecondCount();
if(end_value < start_value)
{
if((start_value - end_value) >= per_value) return(true);
}
else
{
if((end_value - start_value) >= per_value) return(true);
}
return(false);
}
//+------------------------------------------------------------------+
//| Custom indicator Get local data function |
//+------------------------------------------------------------------+
int GetLocalData(const string a_symbol, ENUM_TIMEFRAMES a_period)
{
long first_date;
int fail_cnt = 0;
while((fail_cnt < 3) && !IsStopped())
{
first_date = long( SeriesInfoInteger(a_symbol, PERIOD_M1, SERIES_TERMINAL_FIRSTDATE));
if(first_date > 0)
{
int f_cnt = 0;
datetime times[1];
long a_bars = 0;
while((f_cnt < 5) && !IsStopped())
{
if(bool(SeriesInfoInteger(a_symbol, PERIOD_M1, SERIES_BARS_COUNT, a_bars)))
{
if ( a_bars > 0 )
{
if( bool(SeriesInfoInteger(a_symbol, a_period, SERIES_BARS_COUNT, a_bars)))
if(a_bars > 0) return(int(a_bars));
}
}
else
{
//--- force timeseries build
CopyTime(a_symbol, a_period, 0, 1, times);
ulong start_tick = GetMicrosecondCount();
while(!CheckTimer(start_tick, 5000))
{
f_cnt--;
f_cnt++;
}
}
f_cnt++;
}
}
else
{
ulong start_tick = GetMicrosecondCount();
while(!CheckTimer(start_tick, 5000))
{
fail_cnt--;
fail_cnt++;
}
}
//---
fail_cnt++;
}
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator Get server data function |
//+------------------------------------------------------------------+
int LoadServerData(const string a_symbol, ENUM_TIMEFRAMES period)
{
int fail_cnt = 0;
while((fail_cnt < 5) && !IsStopped())
{
long first_date = long(SeriesInfoInteger(a_symbol, PERIOD_M1, SERIES_SERVER_FIRSTDATE));
if(first_date > 0)
{
if(SymbolIsSynchronized(a_symbol))
{
return(GetLocalData(a_symbol, period));
}
}
else
{
ulong start_tick = GetMicrosecondCount();
while(!CheckTimer(start_tick, 20000))
{
fail_cnt--;
fail_cnt++;
}
}
fail_cnt++;
}
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator Get bars function |
//+------------------------------------------------------------------+
int GetBars(string symbol, ENUM_TIMEFRAMES period)
{
if(!IsStopped())
{
if(SymbolIsSynchronized(symbol))
{
if(bool(SeriesInfoInteger(symbol, period, SERIES_SYNCHRONIZED)))
{
int a_bars = Bars(symbol, period);
if(a_bars > 0)
{
return(a_bars);
}
else
{
return(GetLocalData(symbol, period));
}
}
else
{
return(GetLocalData(symbol, period));
}
}
else
{
return(LoadServerData(symbol, period));
}
}
return(0);
}
Al llamar a GetBars, estamos respaldando la sincronización o tratando de recuperar datos
¿Qué es lo normal?
Dijeron que después de dos minutos los datos se descargan y para mantenerlos sincronizados
dijeron que llamara a Bares.
//| Custom indicator Get bars function |
//+------------------------------------------------------------------+
int GetBars(string symbol, ENUM_TIMEFRAMES period)
{
if(!IsStopped())
{
if(SymbolIsSynchronized(symbol))
{
if(bool(SeriesInfoInteger(symbol, period, SERIES_SYNCHRONIZED)))
{
int a_bars = Bars(symbol, period);
if(a_bars > 0)
{
return(a_bars);
}
else
{
return(GetLocalData(symbol, period));
}
}
else
{
return(GetLocalData(symbol, period));
}
}
else
{
return(LoadServerData(symbol, period));
}
}
return(0);
}
¿No son estos los análogos:
if(bool(SeriesInfoInteger(symbol, period, SERIES_SYNCHRONIZED)))
Sí, me pareció que Bars() devuelve 0 si no hay sincronización... Tendré que hacer una prueba...
¿Está sugiriendo que esto se haga en cada garrapata?
Mientras se selecciona un símbolo en la visión general del mercado y el historial del símbolo es mantenido por un Asesor Experto, entonces se mantiene sincronizado. El mantenimiento por parte del Asesor Experto significa que debe acceder a este historial al menos una vez cada 2 minutos, por ejemplo, copiando una barra. Si el historial está sincronizado, no se gasta tiempo en copiar una barra: sólo unos pocos ciclos del procesador. O, como se acaba de decir aquí, pedir el número de barras, también algunos ciclos de reloj
¿Por qué? Una sola acción es suficiente.
Mientras el símbolo esté seleccionado en la revisión del mercado y el historial del símbolo esté en manos del Asesor Experto, se mantendrá sincronizado. El hecho de que el Asesor Experto se mantenga significa que debe acceder a este historial al menos una vez cada 2 minutos, por ejemplo, copiando una barra. Si el historial está sincronizado, no se gasta tiempo en copiar una barra, sólo unos cuantos relojes del procesador.
¿Los indicadores incluyen un intervalo de 2 minutos?
Sí, y al comprobar el hecho de la sincronización, ¿también se mantendrá la sincronización?
¿Los indicadores incluyen un intervalo de 2 minutos?
Sí, ¿la comprobación de la sincronización también se llevará a cabo?
La sincronización no se lleva a cabo comprobando el hecho de la sincronización.