ChartNavigate durante la inicialización - página 4

 
Ihor Herasko:

P./S.: Por si acaso, quiero aclarar que no me he puesto a ver qué pasa si el terminal se carga después de mucho tiempo (es decir, cuando se supone que aparecen muchas barras nuevas después de que el terminal se haya descargado).

 
Alexey Viktorov:

Dina, ¿te funciona? Llevo 2-3 horas (sólo hoy, sin contar las pruebas de ayer) intentando conseguir una versión de OnInit que no funcione, pero sin éxito. Todo funciona siempre como debería. Si pongo el indicador en dos gráficos y reinicio el terminal, sólo funciona en el gráfico que estaba activo en el momento de cerrar y abrir el terminal. En el segundo, el gráfico no activo no funciona. Pero esto, en mi opinión, es comprensible, no hay representación del gráfico y no hay gráfico en sí, a pesar de que los datos se reciben.

Sí, Alexei, funciona. Escribí sobre ello aquí. Al parecer, se perdió visualmente en mis citas de otros puestos.

 
Dina Paches:

Por favor, dime, antes de descargar el terminal, ¿reajustas el gráfico a los precios más recientes?

No, no lo sé. Porque de eso se trata. Permítanme explicarles en detalle por qué es necesario todo esto. Un operador utiliza el gráfico como si fuera un probador. El indicador oculta una parte del gráfico real a la derecha de la hora supuestamente actual (de hecho, esta hora está en algún lugar del historial). Al pulsar F12 se muestra la siguiente vela en el gráfico en línea, etc. Por lo tanto, al reiniciar el terminal con el indicador adjunto, éste no devuelve la posición del gráfico al lugar donde el operador terminó sus estudios. Como resultado, recibe un gráfico vacío porque el terminal restablece el gráfico a la última vela real. Y esto a pesar de que el terminal se descargó en un lugar completamente diferente.

Por qué lo pregunto:

He utilizado tu código para ver cómo funcionaría en mi situación. Al principio pensé que estaba reproduciendo el problema que describes. Más tarde comprendí que no es así. Si el gráfico se restablece a los últimos precios antes de ser descargado, funciona según el código cuando se carga el terminal. Si no vuelvo a los últimos precios antes de la descarga, el gráfico permanecerá donde estaba antes de la descarga.

Interesante observación. Lo he comprobado por mi cuenta y, por desgracia, no ha cambiado nada. Sigo teniendo los precios más frescos en la recarga.

Le sugiero que "sincronice sus relojes". Estoy probando todo esto en la build 1861. ¿Cuál es su constitución?

 
Alexey Viktorov:

Dina, ¿te funciona? Llevo 2-3 horas (sólo hoy, sin contar las pruebas de ayer) intentando conseguir una versión de OnInit que no funcione, pero todo en vano. Todo funciona siempre como debería. Si pongo el indicador en dos gráficos y reinicio el terminal, sólo funciona en el gráfico que estaba activo en el momento de cerrar y abrir el terminal. En el segundo, el gráfico no activo no funciona. Pero esto, en mi opinión, es comprensible, no hay representación del gráfico y no hay gráfico en sí, a pesar de que los datos se reciben.

Ponlo en dos gráficos. Lamentablemente, ambos funcionan de la misma manera: los precios más recientes se muestran al recargar.

¿Qué tipo de construcción tienes?

 
Resultó ser aún más divertido de lo que pensaba. Moví el código a OnCalculate (hice un solo disparo, para no llamarlo en cada tick ), pero la imagen no ha cambiado. Es decir, incluso en OnCalculate al iniciar el terminal ChartNavigate no funciona...
 
Alexey Viktorov:

... Sólo se ha observado una peculiaridad: si coloco el indicador en dos gráficos y reinicio el terminal, sólo funcionará en el gráfico que estaba activo en el momento de cerrar y abrir el terminal. En el segundo, el gráfico no activo no funciona. Pero esto, en mi opinión, es comprensible, no hay representación del gráfico y no hay gráfico en sí, a pesar de que los datos se reciben.

No se me había ocurrido probarlo así. Ahora hice tales experimentos (también con la ayuda del código de Igor).

Al hacerlo conseguí... que se reprodujera el problema que él describía.

 
Ihor Herasko:

...

Sugiero que "sincronicemos nuestros relojes". Estoy probando todo esto en la build 1861. ¿Cuál es el tuyo?

Yo también tengo 1861. Pero gracias a Alexey Viktorov he conseguido reproducir el problema descrito por ti al instalar mediante OnInit(). /* antes de eso, resulta que, como he visto sus posts.

Orden de las acciones: Como ha descritoaquí.

I. Pero antes de descargar el terminal cambié las cartas a los precios más frescos.

Y puse el indicador en dos gráficos de un par, diferentes marcos de tiempo (GBPUSD M5 y GBPUSD H1).

Mis resultados son los resultados de estos experimentos:

1. Primero configuro el indicador en el gráfico GBPUSD M5, luego - en el GBPUSD H1. Después de eso, habiendo cambiado los gráficos a barras frescas, cerré el terminal cuando el gráfico GBPUSD H1 está activo (es decir, el marco de tiempo más alto está activo). En estas condiciones, si vuelvo a abrir el terminal, el gráfico se desplaza al abrirlo , en las barras especificadas por su código.

Sin embargo, si cerramos el terminal con el gráfico activo de GBPUSD M5 (es decir, el marco temporal inferior está activo) y luego volvemos a abrir el terminal, después de la carga del terminal, no se producen desplazamientos en ninguno de los dos gráficos. Los gráficos se abren en barras frescas. Al mismo tiempo, para uno de ellos obtengo éxito, para el otro - un error:

test 2018 06 26 (GBPUSD,M5)     Alert: Успешно
test 2018 06 26 (GBPUSD,H1)     Alert: Ошибка №4111

Al realizar los experimentos de los puntos 1 y 2, después de reiniciar el terminal y ver los resultados, borré este indicador de los gráficos y lo volví a instalar.


3. cuando hice los mismos experimentos, pero sin reinstalar el indicador cada vez, después de reiniciar el terminal, no hay desplazamiento del gráfico después de reiniciar el terminal. Independientemente de que esté activo con un plazo superior o inferior. Los gráficos se abren en barras frescas. Los mensajes son los mismos que en el punto 2(éxito y error 4111)

II. Además, he experimentado con la instalación simultánea del indicador en los mismos dos gráficos, pero sin devolver estos gráficos antes de descargar el terminal a barras frescas.

Los resultados que tengo: si cierro/abro en un marco temporal superior, el gráfico del marco temporal superior está donde estaba antes de cerrar. El inferior (no activo) es el más fresco.

Si abre/cierra en un marco temporal inferior, el inferior se abrirá en las barras más frescas. Los mensajes son los mismos que en 2(éxito y error 4111).


III. El problema ha aparecido ahora con lo siguiente:

  • Me olvidé de desactivar el desplazamiento automático del gráfico antes de instalar el indicador;
  • Cuando me di cuenta, borré el indicador y lo instalé de nuevo.

Después de este restablecimiento del indicador, el cambio no se produjo, pero la alerta fue exitosa:

test 2018 06 26 (GBPUSD,M5)     Alert: Успешно

Sin embargo, si antes de dicha reinstalación del indicador se desactivó el autodesplazamiento no sólo ahora, sino algún tiempo después, entonces no se detectó el problema.


De alguna manera.

Parece que deberías escribir al Servicio de Atención al Cliente.

 
Dina Paches:

Da un éxito para uno y un error para el otro:

¡Eso sí que es una sorpresa! Todavía no he conseguido que ChartNavigate dé un error. Pero eso es algo.

En el fondo del problema, aparentemente, estoy empezando a entender lo que está pasando.

Cuando se llama a ChartNavigate() por primera vez en OnInit() o en OnCalculate(), es muy probable que no se hayan cargado todos los datos del gráfico. Sin embargo, el ChartNavigate() ya ha funcionado y ha funcionado con éxito (en ese momento). A continuación, los datos se cargan y se muestran en el gráfico, lo que lleva a un redibujado completo y a un desplazamiento del gráfico a su inicio. Como resultado, vemos el gráfico como si no hubiera sido desplazado por ChartNavigate() en absoluto.

Por lo tanto, para poder desplazar el gráfico con éxito, tenemos que determinar de alguna manera que los datos del gráfico ya no se mostrarán (debido a la paginación del historial). Sólo después de establecer este hecho se puede llamar a ChartNavigate().

 
Ihor Herasko:

...

Por lo tanto, para poder desplazar el gráfico con éxito, debe determinarse de alguna manera que ya no se espera que se muestren los datos del gráfico (debido a la paginación del historial). Sólo después de establecer este hecho se puede llamar a ChartNavigate().

Tienes razón, probablemente. Al reiniciar el terminal, puede ser relevante. Además, mientras experimentaba, me interesaba activar/desactivar el autodesplazamiento en combinación con (o sin) el reinicio del ndicador. Una consecuencia de lo que he descrito en el bloque III, al final de este post. Pero aún no estoy investigando esto con más detalle. Tengo que resolver mis propios problemas urgentes. Por lo tanto, pasaré de largo por el momento.

 
Ihor Herasko:

Ponlo en dos gráficos. Lamentablemente, ambos funcionan de la misma manera: los precios más recientes se muestran al recargar.

¿Qué tipo de construcción tienes?

Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias

ChartNavigate en la inicialización

Alexey Viktorov, 2018.06.25 15:10

Yo también tengo 1861. Sólo he conseguido reproducirlo una vez. Todos los demás intentos han funcionado bien.