Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 407

 
first_may:

Buenas tardes.

¿Podría decirme cómo obtener el valor deTenkan yKijun en la vela anterior en mql5?

Por favor, vea el ejemplo deiIchimoku.
 
Karputov Vladimir:
Por favor, mire el ejemplo deiIchimoku.

Estaba mirando antes de hacer la pregunta. En mql4 era más fácil, por ejemplo en la última vela

double tenkan_sen=iIchimoku(NULL,0,9,26,52,MODE_TENKANSEN,1);

Y aquí entendí que se crea un objeto

handle=iIchimoku(name,period,tenkan_sen,kijun_sen,senkou_span_b);

Pero como sacar el valor del tenkan, no lo puedo averiguar :(. Quiero una simple intersección de tenkan y kijun para seguir y ya está.

 
first_may:

Estaba mirando antes de hacer la pregunta. En mql4 era más fácil, por ejemplo en la última vela

double tenkan_sen=iIchimoku(NULL,0,9,26,52,MODE_TENKANSEN,1);

Y aquí entendí que se crea un objeto

handle=iIchimoku(name,period,tenkan_sen,kijun_sen,senkou_span_b);

Pero como sacar el valor del tenkan, no lo puedo averiguar :(. Quiero una simple intersección de tenkan y kijun y ya está.

¿Quieres seguirlo en un indicador o en un EA?
 
Karputov Vladimir:
¿Quiere hacer un seguimiento en un indicador o en un EA?
En el EA. Emitir el formulario de alertas con sonido.
 
first_may:
En el asesor. Salida del formulario de alerta con sonido.
Mira la función CopyBuffer().
 
Tapochun:
Mira la función CopyBuffer().

En el ejemplo

ma_handle=iMA(Symbol(),0,period,shift,smootMode,price); - se crea el objeto

if(CopyBuffer(ma_handle,0,0,to_copy,MABuffer)<=0)return(0); - rellena el arrayMABuffer con los valores dema_handle

¿Y ahorapodemos obtener valores deMABuffer?

 
first_may:

En el ejemplo

ma_handle=iMA(Symbol(),0,period,shift,smootMode,price); - se crea el objeto

if(CopyBuffer(ma_handle,0,0,to_copy,MABuffer)<=0)return(0); - rellena el arrayMABuffer con los valores dema_handle

¿Y ahorapodemos obtener valores deMABuffer?

Sí. En MABuffer, mediante la función CopyBuffer() se obtienen los valores de MA en el intervalo especificado. MABuffer es, por supuesto, un array.

 
Tapochun:

Sí. En MABuffer se obtienen los valores de MA en el intervalo especificado con la función CopyBuffer(). MABuffer, por supuesto, es un array.

Y debes hacerlo todo correctamente en el procedimiento

intOnCalculate(constint rates_total,
constint prev_calculado,
constdatetime&time[],
constdouble&open[],
constdouble&high[],
constdouble&low[],
constdouble&close[],
constlong&tick_volume[],
constlong&volume[],

constint&spread[])

¿Incluso si quiero mostrar el valor en la pantalla?

 
La longitud estándar de las cadenas es de 0 a 255 caracteres. Leo la cadena del archivo línea por línea a través de FileReadString sin parámetro de longitud ( length=0 por defecto ) .Es decir, la cadena se lee desde la posición actual hasta el carácter de avance de línea"\r\n".Qué hacer en caso de que una línea de un archivo ocupe más de 255 caracteres (y es posible con bastante frecuencia). No quiero dividir la cadena en partes, porque las cadenas están estrictamente estructuradas (el archivo contiene código html). La idea es que primero leo todo el archivo línea por línea en el array, y luego sólo lo analizo y extraigo la información que necesito. Si las líneas se dividen, el analizador sintáctico dejará de funcionar, porque las señales de información necesaria pueden separarse y entrar en diferentes líneas de lectura. No hay cadena larga( ¿Alguna otra idea?
 
first_may:

Y todo esto se hace correctamente en un procedimiento

intOnCalculate(constint rates_total,
constint prev_calculado,
constdatetime&time[],
constdouble&open[],
constdouble&high[],
constdouble&low[],
constdouble&close[],
constlong&tick_volume[],
constlong&volume[],

constint&spread[])

¿Incluso si quiero mostrar el valor en la pantalla?

Todo depende de la lógica del indicador. La mayoría de las veces - sí, en la función OnCalculate().