Sí, estoy de acuerdo, definitivamente no uses el método Bars. La forma más confiable de utilizar SeriesInfoInteger y llamarlo para LASBAR_DATE, verifique si hay errores y si hay errores en el bucle y vuelva a preguntar hasta que se agote el tiempo de espera de su función o obtenga un resultado limpio. Aquí hay un ejemplo de una función MTF isNewBar ... Inserted Code #include lt; Arrays \ ArrayObj.mqhgt; clase NewBars: public CObject {ENUM_TIMEFRAMES m_timeframe; datetime m_last_bar_time; public: NewBars (ENUM_TIMEFRAMES tf): m_timeframe (tf), m_last_bar_time (0) {} bool isNewBar () {uint ms = GetTickCount (); datetime curr; do {ResetLastError (); curr = (datetime) SeriesInfoInteger (_Symbol, m_timeframe, SERIES_LASTBAR_DATE); } while (_LastError! = ERR_NO_ERROR GetTickCount () - ms lt; 500); if (curr gt; 0 _LastError == ERR_NO_ERROR curr! = m_last_bar_time) {bool res = true; if (m_last_bar_time == 0) res = falso; m_last_bar_time = curr; devolver res; } falso retorno; } bool isMatching (ENUM_TIMEFRAMES tf) {return m_timeframe == tf? verdadero Falso;} }; bool isNewBar (const ENUM_TIMEFRAMES timeframe) {static CArrayObj tfs; for (int i = tfs.Total () - 1; igt; = 0; i--) {NewBars * tf = dynamic_castlt; NewBars * gt; (tfs.At (i)); if (tf.isMatching (timeframe)) devuelve tf.isNewBar (); } tfs.Add (new NewBars (timeframe)); falso retorno; }Iniciado por ;