Errores y sugerencias para mejorar CopyTicks() y CopyTicksRange() después de la compilación 1485. - página 3
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
Gracias por el mensaje, el error ha sido corregido - ahora también funcionará en los indicadores. Pronto se publicará una actualización.
Creo que he venido al lugar correcto. Estimados miembros del foro, he estado luchando con este problema por mi cuenta durante mucho tiempo, pero parece que no puedo resolverlo. Espero que pueda ayudar.
La situación es la siguiente: broker Finam (Whotrades), cuenta MMA. Trabajo con 26 valores rusos, es decir, tengo 26 ventanas abiertas y tengo una copia de mi Asesor Experto colgada en cada ventana. Utilizan la biblioteca común de C++, que tiene una ventana común para gestionar y mostrar la información de depuración.
Algunos parámetros de la estrategia dependen directamente de la cinta de ticks, por lo que es muy importante que todos los ticks pasen por el algoritmo. Por supuesto, fue una sorpresa saber que OnTick() no funciona en cada tic, y no siempre, incluso en un tic. Como resultado, he llegado a la necesidad de utilizar las funciones CopyTicks y CopyTicksRange por temporizador. Debido a grandes esfuerzos (y no está escrito en ninguna parte) he descubierto, que datetime*1000 es exactamente el número de milisegundos desde 1970, pero no es el punto.
El resultado final de lo que tenemos ahora es un bloque de código, que, onTimer, desde las 10 de la mañana comienza a solicitar los últimos datos de los ticks.
El problema es que, por alguna razón es importante, en el primer día después del reinicio de metatrader, para algunos valores, los datos de garrapatas comienza a llegar sólo a las 11 am (más o menos), el día siguiente - todo es normal, comienza a las 10 am. La lista de estos valores no está fijada de ninguna manera, en algún primer día los ticks pueden no venir para algunos valores, en algún otro - para otros.
Pensaba que el problema era el almacenamiento en caché de los ticks. Pensé que era un problema de sincronización incorrecta, pero resultó no ser el caso. Además, parece que si CopyTicks(Range) no pudiera devolver los datos, podría devolver un error (-1) y todo tendría sentido. Pero devuelve 0, el array también es cero y GetLastError devuelve ERR_SUCCESS. Es decir, es como si esos ticks no existieran, lo cual es extraño ya que están presentes en la cinta de la ventana.
Estoy perdido. Espero que me puedan decir qué hacer, o al menos la dirección en la que moverme.
Si necesitas proporcionar el código, con el siguiente comentario lo limpiaré de los comandos "extra" y lo publicaré.
Gracias.
Sí, un código es deseable. ¿Es una cuenta real o demo? ¿Cuál es la construcción del terminal?
Sinceramente, no sé si alguien aquí trabaja con su corredor. Si nadie aquí reacciona a su mensaje - escriba al ServiceDesk, puede enlazar directamente a su mensaje. También tendrán que proporcionar un código.
Sí, un código es deseable. ¿Es una cuenta real o demo? ¿Cuál es la construcción del terminal?
Sinceramente, no sé si alguien aquí trabaja con su corredor. Si nadie aquí reacciona a su mensaje - escriba al ServiceDesk, puede enlazar directamente a su mensaje. También tendrán que proporcionar un código.
La cuenta es real, última compilación, 1525. Creo que esto es lo que hay que hacer. Cree el código de toma de ticks desnudo sin el algoritmo de la estrategia. Hazlo. Si no funciona, debes llamar al servicio técnico. Si funciona, quizá haya que buscar los errores en el propio código.
Gracias por mencionar el servicio de asistencia, no sabía que fuera posible. He mirado en la web de metaquotes, todos los contactos son números de teléfono en chipre y china, ni un solo email.
Mejor ir directamente al servicio técnico con el código para reproducirlo.
La cuenta es real, la construcción es la última, 1525. Creo que esto es lo que debemos hacer. Haga un código de toma de ticks desnudo sin el algoritmo de la estrategia. Hazlo. Si no funciona, llévalo al servicio técnico. Si funciona, quizá haya que buscar los errores en el propio código.
Gracias por mencionar el servicio de asistencia, no sabía que fuera posible. He mirado en la web de metaquotes, todos los contactos son números de teléfono en chipre y china, ni un solo email.
Creo que he venido al lugar correcto. Estimados miembros del foro, he estado luchando con este problema por mi cuenta durante mucho tiempo, pero parece que no puedo resolverlo. Espero que pueda ayudar.
La situación es la siguiente: broker Finam (Whotrades), cuenta MMA. Trabajo con 26 valores rusos, es decir, tengo 26 ventanas abiertas y tengo una copia de mi Asesor Experto colgada en cada ventana. Utilizan la biblioteca común de C++, que tiene una ventana común para gestionar y mostrar la información de depuración.
Algunos parámetros de la estrategia dependen directamente de la cinta de ticks, por lo que es muy importante que todos los ticks pasen por el algoritmo. Por supuesto, fue una sorpresa saber que OnTick() no funciona en cada tic, y no siempre, incluso en un tic. Como resultado, he llegado a la necesidad de utilizar las funciones CopyTicks y CopyTicksRange por temporizador. Debido a grandes esfuerzos (y no está escrito en ninguna parte) he descubierto, que datetime*1000 es exactamente el número de milisegundos desde 1970, pero no es el punto.
El resultado final de lo que tenemos ahora es un bloque de código, que, onTimer, desde las 10 de la mañana comienza a solicitar los últimos datos de los ticks.
El problema es que, por alguna razón es importante, en el primer día después del reinicio de metatrader, para algunos valores, los datos de garrapatas comienza a llegar sólo a las 11 am (más o menos), el día siguiente - todo es normal, comienza a las 10 am. La lista de estos valores no es fija de ninguna manera, en algún primer día los ticks pueden no venir para algunos valores, en algún otro día - para otros.
Pensaba que el problema era el almacenamiento en caché de los ticks. Pensé que era un problema de sincronización incorrecta, pero resultó no ser el caso. Además, parece que si CopyTicks(Range) no pudiera devolver los datos, podría devolver un error (-1) y todo tendría sentido. Pero devuelve 0, el array también es cero y GetLastError devuelve ERR_SUCCESS. Es decir, es como si estos ticks no existieran, lo cual es extraño ya que están presentes en la cinta de la ventana.
Estoy perdido. Espero que me puedan decir qué hacer, o al menos la dirección en la que moverme.
Si necesitas proporcionar el código, con el siguiente comentario lo limpiaré de los comandos "extra" y lo publicaré.
Gracias.