![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
Todavía estoy aprendiendo los entresijos de los indicadores y tengo preguntas. Restablezco el búfer del indicador en OnInit(), pero por alguna razón los búferes no se restablecen durante la compilación del indicador. Por lógica, tras la compilación debería haber una celda completa por cada buffer , pero en la imagen se ve que hay muchas (creo que son las celdas del buffer anterior). ¿Dónde me equivoco?
if(rates_total-8==i)// || rates_total-5==i || rates_total-2==i) { ColorHistogram_2Buffer1[i]=high[i]; ColorHistogram_2Buffer2[i]=low[i]; ColorHistogram_2Colors[i]=0; }
Todavía estoy aprendiendo los entresijos de los indicadores y tengo preguntas. Reinicio el buffer del indicador en OnInit(), pero por alguna razón los buffers no se reinician durante la compilación del indicador. Por lógica, tras la compilación debería haber una celda completa por cada buffer , pero en la imagen se ve que hay muchas (creo que son las celdas del buffer anterior). ¿Dónde me equivoco?
En OnInit los buffers de los indicadores tienen longitud cero.
Por eso pueden hacer lo que quieras, todo les parece un trabajo de hombre muerto.
Y cuando la ejecución del código pasa a OnCalculate, el tamaño se hace inmediatamente igual a rates_total.
y hay "basura" en todas las celdas de la matriz. También puede haber restos del antiguo cálculo de indicadores.
En OnInit, los búferes de los indicadores tienen longitud cero.
Por eso puedes hacer lo que quieras con ellos, son un regalo de muerte.
Y cuando la ejecución del código pasa a OnCalculate, el tamaño se hace inmediatamente igual a rates_total.
y todas las celdas de la matriz tienen "basura" en ellas. Es posible que queden restos del antiguo cálculo del indicador.
¡Muchas gracias, lo tengo todo y ha funcionado! Lo hizo así:
Muchas gracias, ¡todo salió bien! Lo hice así:
¿Por qué asignar un valor a una variable dos veces?
Y una pregunta: ¿Por qué lo necesito todo? Después de todo, al pasar por todas las barras del bucle, todas las celdas del array deben estar llenas de algo de todos modos. A menos que el indicador sólo deba mostrar la posición actual, pero entonces el array debe ser inicializado en cada barra, no sólo al principio...
¿Por qué asignar un valor a una variable dos veces?
Y la pregunta es: ¿Por qué necesitamos todo esto? Después de todo, al pasar por todas las barras del bucle, todas las celdas de la matriz deben estar llenas de algo, de todos modos. A menos que el indicador sólo deba mostrar la posición actual, pero entonces el array debería inicializarse en cada barra, no sólo al principio...
En este ejemplo, sólo quería entender cómo restablecer el búfer. Pero en el futuro (en el indicador en el que estoy trabajando ahora), necesitaré tanto dejar las celdas anteriores como añadir otras nuevas. Y justo en esto empecé a trabajar. Por así decirlo, las primeras pruebas.
No estaba seguro de que todas las acciones con el gráfico sean imitadas por OnInit(), por ejemplo, el cambio de taimfreims. Cambiando el reinicio de taimfreim (lo he comprobado ahora), pero quizás haya algo más, así que he puesto el segundo en OnInit() para estar seguro. Pero si no, entonces no lo pondré.
Ahh. Pues sí, las variables de nivel global no se inicializan cuando cambia el periodo del gráfico. Creo que... no puedo recordar exactamente.
Y en general se puede prescindir de esa variable bool extra.
Y en general, se puede prescindir de esta variable bool adicional.
Sí, exactamente, incluso mejor, gracias.
¿Puedes decirme por qué, si el periodo es superior a 30 minutos, devuelve un número tan extraño?
KP 0 14:33:22.423 Test_DRAW_COLOR_HISTOGRAM2 (EURUSD,M30) PERIOD: 30
GG 0 14:33:24.402 Test_DRAW_COLOR_HISTOGRAM2 (EURUSD,H1) PERIOD: 16385
RJ 0 14:33:25.675 Test_DRAW_COLOR_HISTOGRAM2 (EURUSD,H4) PERIOD: 16388¿Puedes decirme por qué si el periodo es superior a 30 minutos, devuelve un número tan extraño?
En MT5, los valores del período no son iguales al número de minutos, como en MT4