Errores, fallos, preguntas - página 1801

 
Dennis Kirichenko:
Es sencillamente inmoral presentar una queja sobre los servidores de demostración, especialmente los que no están respaldados por un corredor :-)
Si todo funciona así en la demo, sería inmoral exigir un trabajo normal a los servidores reales.

Y el servidor MQ debería ser una especie de "punto de referencia", en el que los desarrolladores de algo podrían y deberían probar sus tecnologías.
 
fxsaber:
Varias llamadas a SymbolSelect harán que el terminal se cuelgue.
bool SymbolExist( const string Symb, const bool MarketWatch = true )
{
  bool Res = false;
  
  for (int i = SymbolsTotal(MarketWatch) - 1; (i >= 0) && (!Res); i--)
    Res = (Symb == SymbolName(i, MarketWatch));
    
  return(Res);
}

bool SymbolOnOff( const string Symb )
{
  return(SymbolSelect(Symb, !SymbolExist(Symb)));
}

void OnStart()
{
  for (int i = SymbolsTotal(false) - 1; i >= 0; i--)
  {
    const string Symb = SymbolName(i, false);
    
    if (SymbolOnOff(Symb))
      SymbolOnOff(Symb);
  }
}
 
No he visto ninguna mención en la Ayuda de que si un símbolo no está en la Vigilancia del Mercado, no se pueden recuperar datos para él. Tuve que hacerlo por ensayo y error.
 
fxsaber:
No he visto ninguna mención en la Ayuda, que si un símbolo no está en el Market Watch, entonces no hay datos sobre él. Tuvo que hacerlo a mano.
Sí. Hay una mención a

Valor devuelto

Valor de tipo doble. En caso de una ejecución fallida, la información sobre el error se puede obtener con GetLastError():

  • 5040 - Parámetro de cadena incorrecto para especificar un nombre de símbolo,
  • 4301 - símbolo desconocido (instrumento financiero),
  • 4302 - símbolo no seleccionado en "Market Watch" (no en la lista de disponibles),
  • 4303 - Identificador de la propiedad del símbolo incorrecto.
 
Slawa:
Sí. Hay una mención a

Gracias, mencionado indirectamente.

Dígame, si añado un símbolo a Market Watch a través de SymbolSelect, ¿cómo sé que la oferta y la demanda por símbolo están disponibles -SymbolIsSynchronized?

SymbolIsSynchronized - parece ser costoso para este propósito, porque también plantea la cuestión de la sincronización de la historia M1.

SymbolIsSynchronized nunca se convierte en verdadero en algunos caracteres.

 
fxsaber:

Gracias, mencionado indirectamente.

Dígame, si añado un símbolo a Market Watch a través de SymbolSelect, ¿cómo sé que la oferta y la demanda por símbolo están disponibles - SymbolIsSynchronized?

SymbolIsSynchronized - parece ser costoso para este propósito, porque también plantea la cuestión de la sincronización de la historia M1.

SymbolIsSynchronized nunca se convierte en verdadero en algunos símbolos.

Lo hace, sólo que tarda muchísimo tiempo en cargar la historia....
 
Probablemente mucha gente lo sabe, pero sólo ahora he adivinado que hay que incluir _LastError en los valores rastreados cuando se depura. Recomendado.
 
Antes de comprobar el indicador de sincronización del historial, debe llamar a CopyRates(Symbol(),PERIOD_M1,0,1000,rates)

Si esto se hace desde el indicador, dará exactamente lo que hay, pero con una petición al centro de historia para la paginación. Entonces puede ser insoportable.

Si se hace desde el Asesor Experto o el script, entonces se pueden hacer varios ciclos de peticiones dentro de la función con la espera de la respuesta, y por regla general después de tal historia de llamadas se sincronizará
 
fxsaber:

Si añado un símbolo a Market Watch a través de SymbolSelect, ¿cómo sé que la oferta y la demanda del símbolo están disponibles?

Inmediatamente después de SymbolSelect(true), pido los precios y son cero. Al mismo tiempo _LastError == 0, SymbolInfoTick == true.

¿Cómo sé que los precios del nuevo Símbolo para Marketwatch han sido entregados a Marketwatch?

 
Slawa:
Antes de comprobar el indicador de sincronización del historial, debe llamar a CopyRates(Symbol(),PERIOD_M1,0,1000,rates)

Si esto se hace desde el indicador, dará exactamente lo que hay, pero con una petición al centro de historia para la paginación. Entonces puede ser insoportable.

Si se hace desde un EA o un script, entonces se pueden hacer varios ciclos de peticiones dentro de la función esperando la respuesta y, por regla general, el historial se sincronizará después de dicha llamada
¿Sugiere hacer esto en cada tic?