Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 466
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
Saludos a todos. Tengo una pregunta de este tipo. Tengo un indicador (fractales modificados), cuando se carga en un gráfico todo es correcto, funciona como debería, pero cuando intento utilizarlo en un EA, dice que el buffer está vacío. Al mismo tiempo, al pasar el buffer en Deinit, almacena los valores correctos.
Se adjunta el código fuente del indicador. Estoy dispuesto a escuchar consejos y sugerencias sobre lo que estoy haciendo mal.
El código es del Asesor Experto:
Podrías sustituir los "si" del final por:
(si es tan simple como eso,,,:)
Gracias
Saludos a todos. Tengo una pregunta de este tipo. Tengo un indicador (fractales modificados), cuando se carga en un gráfico todo es correcto, funciona como debería, pero cuando intento utilizarlo en un EA, dice que el buffer está vacío. Al mismo tiempo, al pasar el buffer en Deinit, almacena los valores correctos.
Se adjunta el código fuente del indicador. Estoy dispuesto a escuchar consejos y sugerencias sobre lo que estoy haciendo mal.
Código de EA:
Una mirada muy superficial. Pregunta: ¿puede un fractal estar en una barra de cero ? Pero en OnDeinit() se hace un bucle a través de las barras y, naturalmente, se encuentra un fractal (no un valor vacío del buffer).
En Deinit, también paso por el 4-6 y todo está en su sitio.
En OnDeinit() se ejecuta en un bucle (de 0 a 100) a través de las barras buscando un valor distinto de cero y se registra el valor encontrado.
En OnTick() se intenta dar salida sólo a las últimas 6 barras del buffer 0. Puede que no haya ningún fractal en ellos.
Primero, encuentra la barra con el fractal y luego imprime el valor de esa barra.
En OnDeinit() se ejecuta en un bucle (de 0 a 100) a través de las barras buscando un valor distinto de cero y se registra el valor encontrado.
Pero en OnTick(), se intenta imprimir sólo las últimas 6 barras del buffer 0. Puede que no haya ningún fractal en ellos. Primero, encuentra la barra con el fractal y luego imprime el valor de esta barra.
Se supone que la sexta barra contiene fractal.
2015.11.01 13:19:11.023 2015.10.30 22:54 MoneyRobotics_Proboi! EURUSD,H1: x = 29 fractal Up: 1.098552015.11.01 13:19:11.023 2015.10.30 22:54 MoneyRobotics_Proboi! EURUSD,H1: x = 21 fractal Up: 1.09976
2015.11.01 13:19:11.023 2015.10.30 22:54 MoneyRobotics_Proboi! EURUSD,H1: x = 16 fractal Down: 1.09652
2015.11.01 13:19:11.023 2015.10.30 22:54 MoneyRobotics_Proboi! EURUSD,H1: x = 6 fractal Up: 1.10721
2015.11.01 13:19:10.577 2015.10.30 22:54 MoneyRobotics_Proboi! EURUSD,H1: Función Deinit
2015.11.01 13:19:08.380 2015.10.01 00:00 Prueba de MoneyRobotics_Proboi! iniciada
Este es el comienzo del registro. La prueba comenzó, el Asesor Experto funcionó, Deinit se cargó y fractal se encontró en 6. No sé cómo abordar el búfer de indicadores.
https://charts.mql5.com/9/256/eurusd-h1-alpari-limited-3.png
reproducción de imágenes.
el sexto compás se supone que contiene un fractal.
2015.11.01 13:19:11.023 2015.10.30 22:54 MoneyRobotics_Proboi! EURUSD,H1: x = 29 fractal Up: 1.098552015.11.01 13:19:11.023 2015.10.30 22:54 MoneyRobotics_Proboi! EURUSD,H1: x = 21 fractal Up: 1.09976
2015.11.01 13:19:11.023 2015.10.30 22:54 MoneyRobotics_Proboi! EURUSD,H1: x = 16 fractal Down: 1.09652
2015.11.01 13:19:11.023 2015.10.30 22:54 MoneyRobotics_Proboi! EURUSD,H1: x = 6 fractal Up: 1.10721
2015.11.01 13:19:10.577 2015.10.30 22:54 MoneyRobotics_Proboi! EURUSD,H1: Función Deinit
2015.11.01 13:19:08.380 2015.10.01 00:00 Prueba de MoneyRobotics_Proboi! iniciada
Este es el comienzo del registro. inicio de la prueba, el Asesor Experto ha funcionado, Deinit comienza, e inmediatamente en la 6ª posición encuentra un fractal.
https://charts.mql5.com/9/256/eurusd-h1-alpari-limited-3.png
No sé cómo abordar el búfer del indicador.
Este:
hacer
prevtime = Time[0];
al final
Esto:
hacer
al final.
¿Cómo puede afectar esto? Desgraciadamente no ha cambiado nada.
como me imagino el proceso: el indicador se carga, empieza a comprobar cada condición de tick/barra, si la condición se cumple, pone el valor en el buffer o buffers seleccionados, entonces el EA llama al indicador por el número de buffer al valor en un determinado offset y toma el valor. ¿Verdad?
¿Cómo puede afectar esto? Por desgracia, nada ha cambiado.
como me imagino el proceso: el indicador se carga, empieza a comprobar la condición cada tick/barra, si se cumple, pone el valor en el buffer o buffers seleccionados, entonces el EA llama al indicador por el número de buffer al valor en un determinado offset y toma el valor. ¿Verdad?
¿Por qué hay un nuevo control de barra en el indicador? Aparentemente no hay cálculos complicados