![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
Gracias por responder.
Estoy escribiendo un indicador... desafortunadamente, el concepto del indicador asume - que para cuando lleguemos a OnCalculate el par óptimo será seleccionado, lo cual suena sospechosamente turbio.
En general, en la función OnCalculate debemos utilizar ya los resultados de los cálculos y análisis que se realizaron en On Init.
No podemos transferir esos cálculos a OnCalculate, ya que no tenemos tiempo para realizar todos los cálculos entre dos ticks vecinos...
Todo sale bien y con facilidad.
Mover el análisis a una función separada y llamarla desde OnCalculate. Si no hay datos, se sale de OnCalculate y se espera al siguiente tick.
El hecho de que el indicador se inicie realmente después de 1-2 segundos no es un problema. Otra forma de trabajar con procesos fuertemente dependientes y asíncronos no es posible, sólo la inicialización perezosa/bajo demanda.
Esto funciona bien y es fácil.
Mover el análisis a una función separada y llamarla desde OnCalculate. Si no hay datos, se sale de OnCalculate y se espera al siguiente tick.
El hecho de que el indicador se ponga en marcha en 1-2 segundos no es un gran problema. Otra forma de trabajar con procesos fuertemente dependientes y asíncronos es imposible, sólo la inicialización perezosa/bajo demanda.
Gracias por este consejo. Por alguna razón no se me ha ocurrido. Intentaré escribir mi propio "pseudo-init", aunque hay pocas esperanzas. Intenté esperar en OnInit, no funcionó, obtuve LastError 4007
ERR_ARRAY_RESIZE_ERROR
4007
No hay suficiente memoria para redistribuir un array o un intento de redimensionar un array estático
El array es dinámico, es decir, la 2ª parte de la definición de error sobre"un intento de redimensionar un array estático" ha desaparecido, y no puedo imaginarqué significa " memoriainsuficientepara redistribuir un array".
He intentado hacer un indicador sobre la base de otro indicador. El primer indicador selecciona un par y el segundo trabaja sobre este par.
Los consejos de Renat me ayudaron mucho, tuve problemas con la transferencia de los valores de iMA a los buffers personalizados, moví el código de OnInit a otra función y con comprobaciones adicionales todo funcionó... ahora estoy trabajando en ello.
ZS Por favor, aconseja la forma más conveniente de llevar el control de tus propios mensajes en el foro. ¿Dónde puedo ver todos los mensajes dirigidos a mí (respuestas a mis mensajes)?
Hace tiempo que no sigo las innovaciones de MT5, por lo que probablemente haré una pregunta muy tonta.
Comienzo la optimización de un Asesor Experto estándar, lento (búsqueda completa de parámetros) pero limita esta búsqueda completa a unos 10490....
El registro está lleno de algunos: 2012.07.13 21:48:10 Core 5 pase genético (494, 2560000) probado con el error "no puede inicializar experto"
Entonces 2012.07.13 21:49:26 La optimización genética del probador terminó en la pasada 9353 (de 816310000)
¿Qué pase genético? ¿Qué optimización genética? Sobrepaso total, ¿verdad?
Probé el método de optimización rápida(algoritmo genético) y vi lo mismo.
¿Qué artículo debo leer?).
Hace tiempo que no sigo las innovaciones de MT5, por lo que probablemente haré una pregunta muy tonta.
Inicio la optimización de un Asesor Experto estándar, lento (búsqueda completa de parámetros) y limita esta búsqueda completa a unos 10490....
¿Qué pase genético? ¿Qué optimización genética? Fuerza bruta total, ¿verdad?
En la versión de 32 bits, cuando el número de pases supera los 1.000.000, se activa el modo genético. La versión de 64 bits tiene un límite de 100.000.000 para la fuerza bruta total. Esto se describe en la ayuda.
Se hace así para ayudar automáticamente a los operadores a no cometer errores evidentes.
El registro está lleno de algunos: 2012.07.13 21:48:10 Core 5 pase genético (494, 256000000) probado con el error "no puede inicializar experto".
Debes mirar el código - o te faltó memoria o algo más durante la inicialización del experto.
En la versión de 32 bits, si el número de pases es superior a 1.000.000, se activa el modo genético. La versión de 64 bits tiene un límite de 100.000.000 para una ejecución completa. Esto se describe en la ayuda.
Se hace para ayudar automáticamente a los comerciantes a no cometer errores evidentes.
Gracias por su respuesta. 100 000 000 es suficiente para mí.
Tengo que mirar el código - o la memoria era insuficiente, o algo más durante la inicialización del Asesor Experto.
Norma ExpertMACD....
https://www.mql5.com/ru/forum/1111/page775#comment_234266
De los usuarios con bajas valoraciones, aparentemente los fallos no son relevantes). Lo mismo en la nueva construcción.
OrderCalcProfit(ORDER_TYPE_BUY, "USDJPY", 0.01, 0.01, 0.02, profit_USDJPY_1 );
OrderCalcProfit(ORDER_TYPE_BUY, "USDJPY", 0.01, 200.01, 200.02, profit_USDJPY_2 );
Print("profit_USDJPY_1=", profit_USDJPY_1 ," profit_USDJPY_2=", profit_USDJPY_2 );
(EURUSD,M15) profit_USDJPY_1=500.0 profit_USDJPY_2=0.05
En la variante cruzada funciona bien.
Qué carpetas hay que limpiar (eliminar registros, ...etc.) para liberar espacio en el directorio del terminal. - por supuesto dejar los scripts, indicadores, búhos) para liberar espacio en el directorio de la terminal? Mientras probaba y optimizaba los Asesores Expertos, el directorio del terminal se ha convertido en 80 GB... Es hora de limpiarlo.
Idealmente, debemos crear algo similar a 4 - el archivo clear.bat (borra todo lo extraño, incluyendo la historia de las cotizaciones de los símbolos, limpia los registros y llevarlo de acuerdo con la versión de la instalación, por supuesto, dejando a los scripts, indicadores y Asesores Expertos).
Si acaso, ¿puede darme un enlace a la descripción de las carpetas de MT5?
Puede que lo busque yo mismo y limpie el contenido de las carpetas manualmente, pero igual puedo escribir las batnichas para MT5, por si acaso hay algo parecido...
Gracias.
Qué carpetas hay que limpiar (eliminar registros, ...etc.) para liberar espacio en el directorio del terminal. - por supuesto dejar los scripts, indicadores, búhos) para liberar espacio en el directorio de la terminal? Mientras probaba y optimizaba los Asesores Expertos, el directorio del terminal se ha convertido en 80 gigas... Es hora de limpiarlo.
Idealmente, debemos crear algo similar a 4 - el archivo clear.bat (borra todo lo extraño, incluyendo la historia de las cotizaciones de los símbolos, limpia los registros y llevarlo de acuerdo con la versión de la instalación, por supuesto, dejando a los scripts, indicadores y Asesores Expertos).
Si acaso, ¿puede darme un enlace a la descripción de las carpetas de MT5?
Puede que lo busque yo mismo y limpie el contenido de las carpetas manualmente, pero de la misma manera puedo escribir el mismo archivo por lotes para MT5, sólo espero que pueda haber algo similar...
Gracias.
MetaTrader 5 Ayuda → Primeros pasos → Estructura de directorios y archivos
MetaTrader 5 Ayuda → Primeros pasos → Estructura de directorios y archivos