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
¿Por qué se repite en OnCalculate lo que había en OnInit? ¿Es ese un hechizo?)
Es simple magia de copiar y pegar))
Bien, te lo explicaré popularmente. No basta con comprobar la disponibilidad de los datos una vez en el inite. Como los datos se generan de forma asíncrona (para no ralentizar el proceso principal), es posible que se produzca un error de datos en el momento de la comprobación en el init (depende de muchos factores).
Por lo tanto, debe comprobar y (o sólo) en calcular y no iniciar los cálculos principales hasta que todos los datos requeridos están disponibles - es decir, comprobar hasta que esté listo en cada tic.
Es simple magia de copiar y pegar))
Bien, te lo explicaré popularmente. No basta con comprobar la disponibilidad de los datos una vez en el inite. Como los datos se generan de forma asíncrona (para no ralentizar el proceso principal), en el momento de la comprobación en el init, es muy posible que se produzca un error de datos (depende de muchos factores).
Por eso la comprobación debe hacerse y(o sólo) en el cálculo y no comenzar los cálculos principales hasta que se disponga de todos los datos necesarios, es decir, comprobar hasta que esté listo en cada tic.
De eso estamos hablando, la función OnInit del indicador es una farsa, o los desarrolladores no están haciendo su trabajo.
Copiar y pegar es una gran cosa, yo mismo lo hago )).
Gritaron y llamaron a chukchi, ¡pero el problema no se ha resuelto!
Todavía no he escrito la descarga del historial, pero los datos están en el terminal, ¡y NO salen de él a la primera!
Vale, ¡interesante!
Los indicadores trabajan en su propio hilo, los EAs en su propio hilo. A menos que, por supuesto, sea una piedra de núcleo único.
Todo sucede exactamente como está escrito en la documentación. :)
Esbocé un indicador y EA para probar + el resultado en el video.
1) Primero trazo un Asesor Experto en un gráfico con la función OnTick funcionando durante 20 segundos.
El resultado es que el gráfico sigue funcionando y muestra todo como debe ser. El gráfico también funciona como se esperaba.
2) Luego aplicamos al gráfico el indicador que tiene la funciónOnCalculate durante 20 segundos.
El resultado: el chat se cuelga. Al mismo tiempo, la siguiente ventana de chat con el mismo símbolo y un período diferente también se suspende. El cristal sigue funcionando como debe. Una vez que la función ha funcionado, todo vuelve a la normalidad.
¡3) El video no lo tiene - pero si usted lanza el indicador en un chat (fijado 60 seg), y el experto en el otro - el experto no comienza a trabajar hasta que el indicador en el otro chat glitches!
He adjuntado el vídeo por separado - mi navegador es lento.
Todo sucede exactamente como dice la documentación. :)
Esbozado un indicador y un Asesor Experto para comprobar + el resultado en el video.
1) Primero lo lancé al gráfico del Asesor Experto que tiene la función OnTick dentro de él que funciona durante 20 segundos.
El resultado es que el gráfico sigue funcionando y muestra todo como debe ser. El gráfico también funciona como se esperaba.
2) Luego aplicamos al gráfico el indicador que tiene la funciónOnCalculate durante 20 segundos.
El resultado: el chat se cuelga. Al mismo tiempo, el siguiente chat con el mismo símbolo que tiene un período diferente también se suspende. El cristal sigue funcionando como debe. Una vez que la función ha funcionado, todo vuelve a la normalidad.
¡3) El video no lo muestra - pero si usted lanza un indicador en un chat (fijado 60 seg), y un EA en el otro - el EA no comienza a trabajar hasta que el indicador funciona mal en otro chat!
Adjunto el vídeo por separado - se ralentiza en mi navegador.
Gracias, no consigo ver un vídeo, lo investigaré.
Si está tratando de obtener datos del entorno comercial cuando trabaja desde el indicador, ni siquiera intente establecer consultas en OnInit(). Realiza consultas y comprueba la respuesta en OnCalculate(). Cuando se reciben datos de otro símbolo o de otro marco temporal está casi garantizado que incluso en OnCalculate no se logrará recibir datos de la primera vez. Por eso hay que comprobar el retorno de los valores. Si no se obtienen valores, se intenta obtener los datos en el siguiente tick en OnCalculate().
También ya es interesante ver la respuesta de servicedesk - el código que se proporcionó.
Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias
FORTS Por favor, ayuda
alexvd, 2015.03.26 15:48
Usted ha recibido el código fuente de servisdesk. Intenta poner tu último código en la función Test().Ya el interés deportivo - el autor sigue escribiendo su propio código e ignora el código de servicedesk?
Si está tratando de obtener datos del entorno comercial cuando trabaja desde el indicador, ni siquiera intente establecer consultas en OnInit(). Realiza peticiones y comprueba la respuesta en OnCalculate(). Cuando se reciben datos de otro símbolo o de otro marco temporal está casi garantizado que incluso en OnCalculate no se conseguirá recibir datos de la primera vez. Por eso hay que comprobar la devolución de los valores. Si no se reciben valores, intenta recibir datos en el siguiente tick en OnCalculate().
+++ y así hasta el final. Es decir, si no hay datos, devuelve;
Depende de lo que se consulte. Y cuántas consultas: depende totalmente de las preferencias del redactor del código.
Usted entiende que
Si hay datos en el terminal, la función
no debería devolver FALSE?
¡P/S el código SD tampoco funciona desde la primera vez!
UNA VEZ MÁS.
de la ayuda:
SeriesInfoInteger
Devuelve información sobre el estado de los datos históricos. Hay 2 variantes de la función.
Segunda variante:
SERIE_TERMINAL_PRIMERAFECHA.
Primera fecha en el historial según el símbolo en el terminal del cliente, independientemente del periodo
datetime
¡¡¡LA FUNCIÓN NO DEBE DEVOLVER FALSE SI HAY DATOS EN EL TERMINAL!!!
No importa desde dónde lo llames.