Errores, fallos, preguntas - página 3029

 
Igor Makanu:

esto no debería funcionar correctamente en los indicadores:

si no me equivoco, en la ayuda hay un desglose del script para paginar los datos de todos los TFs y debería haber una advertencia de que no se pueden pedir datos históricos al indicador de esta manera, porque el indicador trabaja de forma asíncrona

y se recomienda utilizar BarsCalculated() una vez que se haya vinculado la manija


UPD: script para la paginación del historial y explicación de por qué no funciona en los indicadores:https://www.mql5.com/ru/docs/series/timeseries_access

En este artículo sólo se escribe que no es deseable solicitar datos de series temporales (o solicitar SeriesInfoInteger en un bucle) en un indica


"Recordemos que el envío de una solicitud de actualización de una serie temporal con el mismo periodo queel indicador que provoca la actualización es altamente indeseable. La no conveniencia de solicitar datos del mismo período-símbolo, que tiene el indicador, porque la actualización de los datos históricos se realiza en el mismo hilo, en el que trabaja el indicador. Por lo tanto, hay una alta probabilidad de una cuña".


Si simplemente solicitamos SeriesInfoInteger y, en caso de false, salimos de OnCalculate, ¿cómo puede producirse la cuña?

 

Pregunta para todos:

la ayuda en https://www.mql5.com/ru/docs/series/timeseries_access dice:

"Al llamar a las funciones, que copian cualquier dato de las series temporales, debe tener en cuenta que el parámetro de inicio (número de barra, a partir de la cual se empiezan a copiar los datos del precio) debe estar siempre dentro del historial disponible de la terminal. Si sólo tenemos 100 barras, no tiene sentido intentar copiar 300 barras, empezando por la barra con índice 500. Esta solicitud se considerará inválida y no se procesará, es decir, no se cargará ningún historial del servidor de comercio.

Que CopyTime dará -1, está claro, pero - ¿iniciará el proceso en sí para construir una serie de tiempo / paginación de las barras del servidor hasta la 800ª (500 + 300) o no?

Por favor, avisa.

Документация по MQL5: Доступ к таймсериям и индикаторам / Организация доступа к данным
Документация по MQL5: Доступ к таймсериям и индикаторам / Организация доступа к данным
  • www.mql5.com
Организация доступа к данным - Доступ к таймсериям и индикаторам - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
mktr8591:


1. Este artículo sólo dice que no es deseable solicitar datos de series temporales en indica (o solicitar SeriesInfoInteger en un bucle)


"Recordemos que el envío de una solicitud de actualización de una serie temporal con el mismo periodo queel indicador que provoca la actualización es altamente indeseable. La no conveniencia de solicitar datos del mismo símbolo-período, como tiene el indicador, porque la actualización de los datos históricos se realiza en el mismo hilo, en el que trabaja el indicador. Por lo tanto, hay una alta probabilidad de una cuña".


2. Si simplemente se solicita el SeriesInfoInteger y se deja el OnCalculate en caso de false, ¿cómo se producirá la cuña?

1. Sí, porque no puedes ralentizar el hilo del indicador, ya que solicitar el estado de sincronización hará que se intercambie el historial, y no puedes esperar.

2. Sí. Si los datos no están listos, simplemente saldrá del oncalc y se iniciará el terminal de sincronización, pero no se inhibirá el flujo del indicador. El siguiente oncalc se ejecutará completamente y sin frenos sólo cuando los datos estén listos y el indicador solicitado esté completamente contado. La impresión añadida arriba muestra que el indicador solicitado no está siempre listo, pero podemos permitir procesar una nueva barra sólo una vez, no en cada tick para el cálculo más rápido de todos los indicadores.

 
Andrey Dik:

Gracias.

Además, vea mi pregunta:https://www.mql5.com/ru/forum/1111/page3028#comment_22557528

Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • 2021.05.28
  • www.mql5.com
Общее обсуждение: Ошибки, баги, вопросы
 

Andrey Dik:

ver el código anterior,

arreglar su código, añadir una impresión

  if(SeriesInfoInteger(Symbol(), OldTF, SERIES_SYNCHRONIZED))
   {
    if(iBars(Symbol(), OldTF) != BarsCalculated(Handle))
     {
      Print("Баров ", iBars(Symbol(), OldTF));
      Print("посчитано", BarsCalculated(Handle));
      return 0;
     }
   }
  else
   {
    Print("Период ", OldTF, " не синхронизирован.");
    return 0;
   }

y cuando veas tus cucarachas, enrolla tu monitor en un tubo y mételo... ya sabes dónde.

 
mktr8591:

Gracias.

también, ver mi pregunta:https://www.mql5.com/ru/forum/1111/page3028#comment_22557528

No estoy 100% seguro de esto (tengo que comprobarlo), una vez que te asegures de que la fecha solicitada es más fresca que la primera del historial en el servidor, puedes solicitar los datos, el historial se intercambiará.

 
Andrey Dik:

No estoy 100% seguro de esto (tengo que comprobarlo), asegurándose de que la fecha solicitada es más fresca que la primera del historial en el servidor, los datos pueden ser solicitados, el historial será intercambiado.

Gracias,

Preguntaba por mi otro post, enlace de nuevo : https://www.mql5.com/ru/forum/1111/page3028#comment_22557528

Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • 2021.05.28
  • www.mql5.com
Общее обсуждение: Ошибки, баги, вопросы
 
Alexey Viktorov:

Arregla tu código, añade una impresión

y cuando veas tus cucarachas, enrolla el monitor y mételo... ya sabes dónde.

Estás demostrando mi punto, camarada.

 
mktr8591:

Gracias,

Preguntaba por mi otro post, enlace de nuevo : https://www.mql5.com/ru/forum/1111/page3028#comment_22557528

No entiendo bien su código. ¿Qué debería ocurrir después de "return 0;" en la siguiente llamada a OnCalculate?

Devolvemos 0, indicando así que aún no hemos calculado nada y que el prev kalk no se incrementará en 1 en la siguiente barra.

es decir, estaremos en la barra en la que empezamos a pedir los datos del olderf hasta que devolvamos(rates_total)

 
Andrey Dik:

estás demostrando mi punto, camarada.

1. Gracias a todos - me he vuelto un poco más conocedor de los indicadores ))))

2) Andrew, si alguien no entiende tus ideas (incluyéndome a mí), sólo significa una cosa: ¡no dibujas el cuadro correctamente! Más precisamente - lo dibujas de tal manera, que mucha gente no lo entiende ...