Mt4 Fin de soporte. - página 24

 
Реter Konow:

Ya he contestado que los bares se abren independientemente de la llegada de una cotización. Si no hay cotización, el precio de la nueva barra será el precio de cierre de la barra anterior. El hecho de una nueva barra se fijará independientemente de la llegada de las cotizaciones, por los propios contadores, que funcionan con un temporizador.

El marco de tiempo específico no importa, porque es sólo un contador que alcanza su valor y establece el evento de la nueva barra de ese marco de tiempo. Se trata simplemente de un método de sincronización con la aparición de nuevas barras de diferentes marcos temporales. SINCRONIZACIÓN.

El instrumento tampoco importa. Si las cotizaciones son de un mismo servidor, significa que tienen la misma hora de aparición de las nuevas barras. Por lo tanto, no importa qué instrumento, siempre y cuando estos instrumentos sean de un punto del mundo.


Terminaré lo que he dicho y haré otras cosas. Un poco de algo bueno).

te equivocas.

Con respeto.

P.D. la formación de una nueva barra comienza con la llegada de un nuevo tick, que es el precio de apertura de una nueva barra. en su algoritmo hay un cálculo de temporizador que no tiene nada que ver con la llegada de un nuevo tick, de ahí el desacuerdo. de hecho su algoritmo no da el hecho de la apertura de una nueva barra, sino el inicio del tiempo tras el cual se puede esperar la llegada de la primera cotización en una barra.
 
Artyom Trishkin:

Eres tú, en tu algoritmo, quien piensa que el bar está abierto. De hecho - físicamente - aún no está presente en el terminal. Esto es una total incoherencia con las realidades del servidor.

El plazo concreto también es importante.

Todos los que se han acercado a los robots de comercio multidivisa lo saben.

Es una pena que no quieras llegar a la conclusión a la que te estamos llevando, de forma visual y con un ejemplo tangible.

Para el caso de una nueva barra no importa el símbolo que sea. Las nuevas barras de diferentes símbolos aparecen de forma sincronizada (para cada marco temporal).

Hay un contador para cada plazo. Cuando el contador alcanza el valor de su marco temporal, se pone a cero y se establece un nuevo evento de barra para este marco temporal.

Además, la llamada a la función devuelve un nuevo evento de barra una vez durante la barra actual.

Gracias a todos y adiós.

 
Реter Konow:

No hay ninguna diferencia en el símbolo que se utiliza para el nuevo evento de la barra. Las nuevas barras de diferentes símbolos aparecen de forma sincronizada (para cada marco temporal).

El temporizador tiene un contador para cada marco de tiempo. Cuando el contador alcanza el valor de su marco temporal, se pone a cero y se establece un nuevo evento de barra para este marco temporal.

Además, el acceso a la función devolverá el evento de una nueva barra una vez durante la barra actual.

Ahí se acaba la explicación.

Gracias a todos y adiós.

No eres tú quien lo está explicando, tu lógica es clara. Pero, por desgracia, es un error. Hay que obtener los datos del entorno comercial, eventualmente del servidor.

Y si no hay una nueva cotización en el servidor, entonces no se abre una nueva barra en el terminal.

Su algoritmo, trabajando en el temporizador, "estampará" nuevas barras cuando el mercado esté cerrado. Pero no hay ninguno en el servidor y por lo tanto en el terminal del cliente.

Y créame, la diferencia en la llegada de las cotizaciones para diferentes símbolos también causará una diferencia en la apertura de una nueva barra - el comienzo de la formación de una nueva barra se activará sólo cuando llegue el tick (cotización) correspondiente al momento de esta barra. Si el tick se recibe 4 minutos y 15 segundos después del cierre de la última barra en M1, entonces se perderán tres barras porque no hay cotización para realizarlas.

Te he dado una pista.

 
Andrey Kisselyov:
te equivocas.

Sinceramente.

P.D. La formación de una nueva barra comienza con la llegada de un nuevo tick, que es el precio de apertura de una nueva barra. En su algoritmo, hay un cálculo basado en el temporizador que no tiene nada que ver con la llegada de un nuevo tick, de ahí el desacuerdo.

Sí, con un temporizador. Aparece una nueva barra sin comillas. Nos interesa exactamente el evento de aparición de una barra y podemos fijar la cita en Optisk();

La barra aparecerá en cualquier caso. Si es un fin de semana y no hay bares, no pasa nada. La función no cambiará y estará sincronizada con la llegada de las barras en el momento en que se inicie la sesión.

 
Artyom Trishkin:

No es usted quien lo mastica, su lógica es comprensible. Pero, por desgracia, es defectuoso. Hay que obtener los datos del entorno comercial, eventualmente del servidor.

Y si no hay una nueva cotización en el servidor, entonces no se abre una nueva barra en el terminal.

Su algoritmo, trabajando en el temporizador, "estampará" nuevas barras cuando el mercado esté cerrado. Pero no hay ninguno en el servidor y por lo tanto en el terminal del cliente.

Y créame, la diferencia en la llegada de las cotizaciones para diferentes símbolos también causará una diferencia en la apertura de una nueva barra - el comienzo de la formación de una nueva barra se activará sólo cuando llegue el tick (cotización) correspondiente al momento de esta barra. Si el tick llega 4 minutos y 15 segundos después de la última barra en M1, entonces se perderán tres barras porque no hay cotización para construirlas.

Te he dado una pista.

Las cotizaciones pueden obtenerse en OnTick(). Puede asociar el evento de apertura de un nuevo bar con la confirmación de la llegada de la cotización. Yo no lo haría. Pero depende de cada uno.
 
Реter Konow:

Sí, con un temporizador. Aparece una nueva barra sin comillas. Nos interesa exactamente el caso de aparición de una barra mientras podemos fijar la cotización en Optisk();

La barra aparecerá de todos modos. Si es un fin de semana y no hay bares, no pasa nada. La función no se colapsará y se sincronizará con la llegada de barras en el momento en que se inicie la sesión.

Supongamos que quiere tomar las lecturas del indicador a 1 y 2 barras según el evento de inicio de una nueva barra. Mirando la lógica de su algoritmo, obtendrá los valores de 1 y 2 barras antes de que llegue la nueva cotización y aparezca la barra en el gráfico. Como consecuencia, al intentar leer el indicador obtendrá los valores no de 1 y 2 barras como debería ser cuando llegue la cotización, sino los valores de 1 y 2 barras que se desplazarán 1 barra en la nueva cotización, lo que obviamente afectará al trabajo del EA.


Sinceramente.

 

Artyom Trishkin:

Y, créanme, la diferencia en la llegada de las cotizaciones para los diferentes símbolos también hace una diferencia en la apertura de una nueva barra - el inicio de la construcción de una nueva barra se activa sólo con la llegada de un tick (cotización), correspondiente a la hora de esta barra. Si el tick se recibe 4 min 15 seg después de la última barra en M1, entonces se perderán tres barras, porque no hay cotización para construirlas.


En cuanto a la pregunta, creo que se equivoca. Por favor, consulte con servicedesk. Que respondan a la pregunta: si se forman nuevas barras en la plataforma, independientemente de la llegada de cotizaciones, o no. Si no, entonces en el caso de una nueva barra comprueba si había una cita en ella. Si lo era, el nuevo bar se ha formado. Podemos hacerlo así. No necesitas cambiar mucho.

 
Andrey Kisselyov:
Supongamos que quiere tomar lecturas del indicador en 1 y 2 barras según el evento de un nuevo inicio de barra. Procediendo desde la lógica de su algoritmo, obtendrá un nuevo inicio de barra antes de que llegue la cotización y la barra aparezca en el gráfico. Como consecuencia, al intentar leer el indicador no obtendrá los valores de 1 y 2 barras como debería ser cuando llegue la cotización, sino los valores de 1 y 2 barras que se desplazarán 1 barra cuando llegue la nueva cotización y serán 2 y 3 barras.


Saludos.

Es posible. Añade comprobaciones para la nueva cotización en cada nuevo evento del bar y ya está. No trabaja con el evento de una nueva barra, sino con el evento de una barra y una cotización, por ejemplo.
 
Реter Konow:
Es posible. Añade un control de llegada de la cotización en cada nuevo evento del bar y ya está. No trabaja con el evento de una nueva barra, sino con el evento de una barra y una cita, por ejemplo.
No necesito este algoritmo, es una idea tuya, sólo lo estoy revisando en busca de errores y posibles mejoras, ejercicios para el cerebro, por así decirlo.

Con respeto.
 
Реter Konow:
Obtenga sus cotizaciones de OnTick(). Puede asociar el evento de apertura de un nuevo bar con la confirmación de recepción de una cotización. Yo no lo haría. Pero esto es una cuestión personal.

Sé cómo conseguir cotizaciones :)

En un programa multidivisa - en un temporizador en un bucle en los símbolos de la derecha. Y la apertura de una nueva barra (física, no virtual -errónea- como en tu caso) se controla por la hora de la última cotización y se compara esta hora con la del símbolo de barra cero.

Por otro lado, usted está haciendo al azar - un bar virtual que puede no existir. No los tienes el fin de semana, pero supuestamente los tienes, es lo más sencillo de poner como ejemplo.

Y, como ves, eres el único que no lo haría así. Los demás lo hacemos de forma correcta y fiable. Pero eso, por supuesto, es sólo asunto suyo.

Quería contarte cómo hacerlo correctamente y mostrar la gran diferencia en la simplicidad de escribir en OOP, y los complejos giros en el estilo procedimental al resolver el mismo problema.

Pero seguramente sabes más y no lo necesitas. No me atrevo a parecer que sé algo más delante de ti. Lo siento.

Razón de la queja: