Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 534
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
Vladimir, gracias por la respuesta a la primera pregunta, echaba de menos estas características.
Pongo un mismo indicador en MT4 y en MT5 (por supuesto, el código se adapta a cada plataforma).
Hasta la barra cero sus valores son los mismos, así que aparentemente desde un extremo... :)
Y al desactivar el cálculo en la barra actual en MT4 no se dibuja nada bajo la barra actual, en MT5 - valores erróneos.
Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias
Preguntas de los principiantes
Karputov Vladimir, 2016.03.08 15:13
... Para la depuración, establezca la comprobación - qué valor está contenido en la matriz de la serie de tiempo time[i] - para que entienda en qué extremo comienza el cálculo de las barras y dónde tiene una barra "cero".
¿Y cómo se pone ese control?
En MetaEditore añada un punto de interrupción y comience a depurar. Cuando el punto de interrupción se detiene, añade el tiempo[0] a la observación:
En MetaEditore añada un punto de interrupción y comience a depurar. Cuando el punto de interrupción se detiene, añade el tiempo[0] a la observación:
MT4 2016.03.08 18:37:04.710 mvt_Vlt EURUSD,H1: time[0] = 2016.03.08 17:00:00 time[rates_total-1] = 1971.01.04 00:00:00
MT5 2016.03.08 18:36:23.565 mvt_Vlt (EURUSD,H1) time[0] = 2010.01.04 00:00:00 time[rates_total-1] = 2016.03.08 17:00:00
Insertado en el código de MT5ArraySetAsSeries(time,true);
Ahora la salida:
MT5 2016.03.08 18:45:05.402 mvt_Vlt (EURUSD,H1) time[0] = 2016.03.08 17:00:00 time[rates_total-1] = 2010.01.04 00:00:00
¿Y hacer matrices de precios también?
Ya he puesto la salida en el código
MT4 2016.03.08 18:37:04.710 mvt_Vlt EURUSD,H1: time[0] = 2016.03.08 17:00:00 time[rates_total-1] = 1971.01.04 00:00
¿Qué hago ahora?
En ambas versiones del indicador añadaArraySetAsSeries- para aquellas matrices que utilice para sus cálculos: high[], low[] y temporalmente para la matriz time[] - le ayudará a entender dónde está la barra "cero". Así, la barra "cero" en ambas versiones estará en el mismo lado del gráfico (a la derecha o a la izquierda - dependiendo de lo que establezca en ArraySetAsSeries), y obtendrá la misma parte de cálculo del indicador.
Añadido: mientras escribía, has tanteado el camino correcto :)
Añadido: mientras escribía, has encontrado el camino correcto :)
Lo he pegado en el código de MT5:
Está saliendo:
Sóloda salida a ExtCalcVlBuffer, pero la media y la desviación no cuentan...
Y sigue saliendo en la barra actual, aunque no debería.
...
Y sigue apareciendo en la barra de corriente, aunque no debería.
¿Por qué no habría de hacerlo?
Lo desactivé i< rates_total-1
¿POR QUÉ?
No es necesario utilizar el valor actual, sólo cargará el procesador en vano y simplemente no necesita este valor.
Hay que especificar eso de inmediato :) .
La situación es la siguiente: si hay una barra en el gráfico, corresponde a una celda en el buffer del indicador. Mientras no escribas algo en esta celda, esta celda almacenará basura.