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.
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,
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.
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á
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
Es sencillamente inmoral presentar una queja sobre los servidores de demostración, especialmente los que no están respaldados por un corredor :-)
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.
Varias llamadas a SymbolSelect harán que el terminal se cuelgue.
{
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, que si un símbolo no está en el Market Watch, entonces no hay datos sobre él. Tuvo que hacerlo a mano.
Valor devuelto
Valor de tipo doble. En caso de una ejecución fallida, la información sobre el error se puede obtener con GetLastError():
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.
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.
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á
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?
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