Errores, fallos, preguntas - página 1803
![MQL5 - Lenguaje de estrategias comerciales para el terminal de cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
O, como se acaba de decir aquí, pedir el número de barras, también algunos ciclos.
Esto también se aplica a los indicadores. Cree un temporizador de 1 minuto y pida el número de barras de todas las series temporales de interés.
La comprobación del hecho de la sincronización no mantiene la sincronización.
Queridos desarrolladores Una vez más pido que se añada el tiempo en ms para los valores de sentimiento(SYMBOL_SESSION_...) y tumbler( OnBookEvent()) lo antes posible. ¡Da la oportunidad de hacer la sincronización de todos los datos disponibles!
Metaquotes-Demo, símbolo DIG-20170330
SymbolInfoDouble(Symb,SYMBOL_SESSION_PRICE_LIMIT_MIN) = 29528.0
(ENUM_SYMBOL_TRADE_MODE)SymbolInfoInteger(Symb,SYMBOL_TRADE_MODE) = SYMBOL_TRADE_MODE_FULL (4)
Error en SYMBOL_SESSION_PRICE_LIMIT_MIN: por encima de Asc - no se puede establecer BuyLimit.
Por favor, comparta su bicicleta: una función bool que le diga si un símbolo está listo para negociar o no.
{
MqlDateTime sTime = {0};
TimeToStruct(time, sTime);
return((ENUM_DAY_OF_WEEK)sTime.day_of_week);
}
// true - находимся в торговой сессии
bool SessionTrade( string Symb = NULL )
{
datetime TimeNow = TimeTradeServer();
const ENUM_DAY_OF_WEEK DayOfWeek = GetDayOfWeek(TimeNow);
TimeNow %= 24 * 60 * 60;
if ((Symb == NULL) || (Symb == ""))
Symb = Symbol();
bool Res = false;
datetime From, To;
for (int i = 0; SymbolInfoSessionTrade(Symb, DayOfWeek, i, From, To) && (!Res); i++)
Res = ((From <= TimeNow) && (TimeNow < To));
return(Res);
}
// Возвращает true, если символ торгуемый. Иначе - false.
bool SymbolTrade( string Symb = NULL, const int Pause = -1 )
{
MqlTick Tick;
if ((Symb == NULL) || (Symb == ""))
Symb = Symbol();
if (Pause >= 0)
Sleep(Pause); // Если только что произошло добавление символа в Обзор рынка, нужно дождаться поступления данных в Marketwatch.
return(SymbolInfoTick(Symb, Tick) ? ((Tick.bid != 0) && (Tick.ask != 0) && SessionTrade(Symb) &&
((ENUM_SYMBOL_TRADE_MODE)SymbolInfoInteger(Symb, SYMBOL_TRADE_MODE) == SYMBOL_TRADE_MODE_FULL)) : false);
}
if (Pause >= 0)
Sleep(Pause); // Если только что произошло добавление символа в Обзор рынка, нужно дождаться поступления данных в Marketwatch.
¿Y si está en un indicador?
Foro sobre trading, sistemas de trading automatizados y pruebas de estrategias de trading
Bichos, errores, preguntas
fxsaber, 2017.02.14 12:31
Inmediatamente después de SymbolSelect(true) solicito los precios y son cero. Con _LastError == 0, SymbolInfoTick == true.
¿Cómo sé que los precios de un nuevo símbolo para Marketwatch han sido entregados a Marketwatch?
De ahí las piernas.
Si el indicador traza algunos datos estadísticos sobre símbolos que no se conocen de antemano, cuando se selecciona el siguiente símbolo del panel, a menudo no se pueden obtener los datos correspondientes de inmediato, y la tabla contendrá información falsa... ¿Cómo puedo estar seguro de que los datos recibidos del símbolo son correctos y en cantidades suficientes para obtener otros cálculos correctos?
Sinceramente, no lo entiendo. Me preguntaba: ¿cómo se sabe si un símbolo está listo en un indicador? Sleep() no funciona en los indicadores.
Si el indicador muestra en la tabla algunos datos estadísticos sobre símbolos que no se conocen de antemano, entonces cuando se selecciona el siguiente símbolo del panel, a menudo no se pueden obtener inmediatamente los datos correspondientes, y la tabla muestra información falsa... ¿Cómo puedo estar seguro, para los cálculos posteriores, de que los datos obtenidos del símbolo son correctos, y en cantidades suficientes para obtener otros cálculos correctos?