Errores, fallos, preguntas - página 2938
![MQL5 - Lenguaje de estrategias comerciales para el terminal de cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Sí, lo recuerdo perfectamente: hacer un intento de precarga del historial falso en OnInit. No funcionó allí ni en OnCalculate, ni siquiera en un bucle con cien repeticiones. No sé cómo funciona en realidad, pero por fuera no había la carga de historia prometida (aunque con retraso), el resultado siguió siendo insatisfactorio hasta el final.
Además, hubo otros casos en los que la respuesta se devolvió repetidamente:
pero al final no hubo continuación del indicador, hubo silencio en la respuesta.
No es necesario hacer ciclos con repeticiones.
Si se trata de un indicador, haga una única solicitud del símbolo-período correcto en OnCalculate. Si falla, entonces return(0)
Tome la hora de llegada del símbolo-período requerido, normalice esta hora al principio del período requerido, pregunte a 1 última barra del símbolo-período requerido y compruebe su hora. A continuación, pregunte por el estado de la historia del tiempo
Dependiendo de la lentitud de su ordenador y de la carga de recursos, pueden pasar más de cien OnCalculate.
El código al que te refieres es muy antiguo. Pero es bueno para ilustrar. Pero no es adecuado para los indicadores, porque las solicitudes de historia de los indicadores se ejecutan sin ninguna espera (lo que está claramente escrito en la documentación) y el sueño en los indicadores es inútil.
El servidor da el historial incluso los fines de semana.
Controla la construcción de barras por la hora del último tick del símbolo correspondiente
Si se trata de un indicador, haga una solicitud única para el período de caracteres requerido en OnCalculate. Si falla, entonces return(0)
Bueno return(false) en caso de fallo es un clásico. Así que lo hago. Todo estaría bien, pero el problema es que mis cálculos posteriores están atados a la carga exitosa de la historia (y esta lógica no puede cambiar), y en el caso de fallo y retorno de la función de cálculos, simplemente no se producen y las construcciones gráficas posteriores no obtienen las coordenadas necesarias, todo se bloquea. Cómo evitar esto - no han pensado todavía y no esperan cambiar algo también. Hasta ahora tengo lo siguiente: o bien se carga todo el historial y se construyen todas las series temporales para todos los plazos y el indicador funciona casi inmediatamente sin que falte ningún cálculo debido a return(false), o bien falta parte del historial y el códigovuelve a una función de nivel superior conreturn e intenta solicitar el historial que falta en un bucle sin fin, que no conduce a nada. Simplemente he rechazado la tercera variante -sin retorno- y algunos cálculos fallan, lo que hace que el dibujo de los gráficos sea incompleto.
Todavía está sentado en el tanque un poco, todavía estoy perplejo ... ¿Es real organizar la lógica MQL del indicador para que funcione sólo con el historial local, sin necesidad de descargar el historial que falta y sufrir retrasos por ello? O cualquier función de Copia... ... inevitablemente tengo que contactar con el servidor para descargar incluso esa parte del historial, que no necesito para el procesamiento? Sencillamente, los indicadores estándar se dibujan al instante en el historial existente en mi PC, sin ninguna descarga (he buscado indicadores en la carpeta Examples y allí sólo utilizan CopyBuffer(), y no en todos) ... ¿O la reanudación se oculta a los ojos? ¿Cuál es el objetivo de la reanudación?
Gracias. Pensaré en sus recomendaciones - probablemente, me serán útiles.
He estado alejado del ordenador durante unas horas. Durante este tiempo, se produjo una situación anormal y el robot empezó a coser muchas huellas. Como resultado, el disco está completamente obstruido. Esto interrumpe el trabajo de los terminales, ya que no pueden volcar su historial de precios en el disco.
Tenemos que evitar ese atasco del disco. Una de las alternativas es prohibir la escritura en la carpeta. Es decir, vivir sin registros en el disco siempre. Otra opción es matar los archivos de registro cuando no queda suficiente espacio libre.
¿Alguien ha resuelto este problema?
Si se trata de un indicador, haga una solicitud única para el período de caracteres requerido en OnCalculate. Si falla, entonces return(0)
¿Y si quieres correr el indicador en el fin de semana?
¿Sólo la llamada forzada de OnCalculate desde el temporizador (con todas las muletas en forma de copia de arrays para pasar por referencia)?
¿Es realista organizar una lógica MQL no redundante del indicador para trabajar sólo con el historial local, sin necesidad de descargar el que falta y sufrir los retrasos asociados a él? O cualquier función de Copia... ... inevitablemente tengo que acceder al servidor para descargar incluso esa parte del historial, que no necesito para el procesamiento?
Podrías hacer tu propio caché(escribir en archivos).
Cuando me sugirieron esto, por supuesto, me torcí la sien, pero realmente es mejor que esperar a que MQ cambie su enfoque en el manejo de las series temporales.
He estado alejado del ordenador durante unas horas. Durante este tiempo, se produjo una situación anormal y el robot empezó a coser muchas huellas. Como resultado, el disco está completamente obstruido. Esto interrumpe el trabajo de los terminales, porque no pueden volcar su historial de precios en el disco.
Tenemos que evitar ese atasco del disco. Una de las alternativas es prohibir la escritura en la carpeta. Es decir, vivir sin registros en el disco siempre. Otra opción es matar los archivos de registro cuando no queda suficiente espacio libre.
¿Alguien ha resuelto este problema?
Por interés me apresuré a comprobarlo y me di de bruces contra el suelo: ¡183 Gb! Eso es casi 4/5 de mi SSD. Las imágenes de máquinas virtuales ocupan menos. Al menos tendré algo que leer en mi vejez...
Sólo por diversión, me apresuré a revisar mi casa y me golpeé con la mandíbula: ¡183GB! Eso es casi 4/5 de mi SSD. Las imágenes de máquinas virtuales ocupan menos. Al menos tengo algo que leer en mi vejez...
La impresión y la alerta son funciones potencialmente peligrosas.
Price=0.7235200000000001
¿Por qué iba a hacer eso? ¿Es un error o debemos ajustar la salida de forma unificada? Bueno, digamos que lo peino con PrintFormat o fprint, pero en principio no es una representación incorrecta del número?