Discusión sobre el artículo "Líneas de tendencia basadas en los fractales usando MQL4 y MQL5"

 

Artículo publicado Líneas de tendencia basadas en los fractales usando MQL4 y MQL5:

En este artículo se describe la solución de automatización del proceso de la construcción de las líneas de tendencia a base del indicador Fractals usando MQL4 y MQL5. La estructura del artículo está representada como la comparación en el marco de la solución del problema planteado desde las posiciones de dos lenguajes. La construcción de las líneas de tendencia se realiza usando dos últimos fractales conocidos.

Hace poco me he puesto a pensar en la aplicación de las líneas de tendencia. Me he preguntado sobre el método para determinar los puntos a través de los cuales van a pasar las líneas, así como sobre la precisión del trazado de estas líneas. He decidido tomar los fractales como la base.

Suelo hacer el análisis de los mercados en mi trabajo principal donde puede dedicar al trading un poco de tiempo. Además, no es suficiente simplemente trazar las líneas en un período de tiempo mayor; la línea tiene que trazarse por los extremos con la precisión de hasta 15 minutos. Esta necesidad se debe a que el tiempo del fractal en un período de tiempo mayor no siempre coincide con el tiempo del mismo extremo en M15. En total, la automatización viene a ayudarnos. Resultó que había empezado a escribir el código en MQL5, luego pasé a MQL4 porque necesitaba el mismo programa para MetaTrader 4.

En este artículo quiero presentar mi solución del problema planteado usando MQL4 y MQL5. El artículo ofrece la vista comparativa, pero sería incorrecto comparar la eficacia de MQL4 y MQL5 en este artículo. Tampoco descarto que existen las soluciones más eficientes que figuran aquí. Este artículo puede ser útil para los principiantes que escriben los scripts tanto en MQL4 como en MQL5, sobre todo para los que van a usar en su trabajo los fractales y las líneas de tendencia.

3. Búsqueda de los valores de precio y de tiempo de los fractales

Para trazar una línea, necesitamos encontrar el tiempo y el precio del fractal. Claro que en MQL4 podríamos usar las series temporales predefinidas High[] y Low[], la función iTime(), pero también necesitamos precisar adicionalmente las coordenadas temporales de la línea, es que de eso va a depender la corrección del trazado de la línea de tendencia.

En la fig. 1-2 se muestra la diferencia entre los valores temporales de los extremos para los períodos H4 y M15.

Fig. 1. Tiempo del extremo con la posición del período H4

Fig. 1. Tiempo del extremo con la posición del período H4

Fig. 2. Tiempo del extremo con la posición del período M15

Fig. 2. Tiempo del extremo con la posición del período M15

Autor: Almat Kaldybay

[Eliminado]  
Tarde. Crítica. Un día no es siempre un número fijo de velas. En su caso - no siempre es correcto comprobar los datos de 96 velas para M15. A veces se puede entrar en los datos de otro día.
 
Tapochun:
Tarde. Crítica. Un día no es siempre un número fijo de velas. En su caso - no siempre es correcto comprobar los datos de 96 velas para M15. A veces se puede entrar en los datos de otro día.
Gracias por el comentario, yo no he encontrado esto a mí mismo como he renunciado a diario TL en favor de la negociación intradía (miro 4 horas, hora y m15). Pero en general tendré que mirar más detenidamente la situación.
[Eliminado]  
Almat Kaldybay:
Gracias por el comentario, la verdad es que no me he encontrado con esto ya que he abandonado la TL diaria en favor de la intradía (miro 4 horas, hora y m15). Pero en general, habrá que ver más detenidamente la situación.
Esto es válido para cualquier TF, no necesariamente M15. La cuestión es que si buscas tops/roots dentro de un día, por ejemplo, el día anterior, no debes basarte en un número fijo de velas, es mejor basarse en el tiempo: desde la apertura del día anterior, en este caso, hasta la apertura (la primera vela, que puede tener una hora distinta de las 00.00) del día actual.
 
Tapochun:
Esto es válido para cualquier TF, no necesariamente M15. El punto es que si usted está buscando tops/roots dentro de un día, por ejemplo, el día anterior, usted no debe confiar en un número fijo de velas, es mejor confiar en el tiempo: desde la apertura del día anterior, en este caso, a la apertura (la primera vela, que puede tener un tiempo distinto de 00.00) del día actual.

Justo ahora estoy escribiendo un EA en mql4 y me he acordado de tu crítica. Aunque no he encontrado esta situación en la práctica, decidí excluirlo. La solución es la siguiente:

//1.2 Determinar la barra que sigue al extremo
int UpperFractal_1_base_next=UpperFractal_1_base-1;
int UpperFractal_2_base_next=UpperFractal_2_base-1;
int LowerFractal_1_base_next=LowerFractal_1_base-1;
int LowerFractal_2_base_next=LowerFractal_2_base-1;
//1.3 Determinar el tiempo de formación del fractal
datetime UpFractalTime_1_base=iTime(NULL,base_tf,UpperFractal_1_base);
datetime UpFractalTime_2_base=iTime(NULL,base_tf,UpperFractal_2_base);
datetime LowFractalTime_1_base=iTime(NULL,base_tf,LowerFractal_1_base);
datetime LowFractalTime_2_base=iTime(NULL,base_tf,LowerFractal_2_base);
//1.4 Determinar el tiempo de la barra que sigue al extremo
datetime UpFractalTime_1_base_next=iTime(NULL,base_tf,UpperFractal_1_base_next);
datetime UpFractalTime_2_base_next=iTime(NULL,base_tf,UpperFractal_2_base_next);
datetime LowFractalTime_1_base_next=iTime(NULL,base_tf,LowerFractal_1_base_next);
datetime LowFractalTime_2_base_next=iTime(NULL,base_tf,LowerFractal_2_base_next);
//1.5 Determinar los índices de barra en m15 para el tiempo de apertura de barra fractal
int UpperFractal_1_m15_base=iBarShift(NULL, 15, UpFractalTime_1_base,true);
int UpperFractal_2_m15_base=iBarShift(NULL, 15, UpFractalTime_2_base,true);
int LowerFractal_1_m15_base=iBarShift(NULL, 15, LowFractalTime_1_base,true);
int LowerFractal_2_m15_base=iBarShift(NULL, 15, LowFractalTime_2_base,true);
//1.6 Determinar los índices de barra en m15 para la barra que sigue al extremo
int UpperFractal_1_m15_base_next=iBarShift(NULL, 15, UpFractalTime_1_base_next,true);
int UpperFractal_2_m15_base_next=iBarShift(NULL, 15, UpFractalTime_2_base_next,true);
int LowerFractal_1_m15_base_next=iBarShift(NULL, 15, LowFractalTime_1_base_next,true);
int LowerFractal_2_m15_base_next=iBarShift(NULL, 15, LowFractalTime_2_base_next,true);
//1.7 Encuentre el número de barras en m15 entre la barra - fractal y la barra siguiente
int UpperFractal_1_m15_NumBars_base=(UpperFractal_1_m15_base-UpperFractal_1_m15_base_next);
int UpperFractal_2_m15_NumBars_base=(UpperFractal_2_m15_base-UpperFractal_2_m15_base_next);
int LowerFractal_1_m15_NumBars_base=(LowerFractal_1_m15_base-LowerFractal_1_m15_base_next);
int LowerFractal_2_m15_NumBars_base=(LowerFractal_2_m15_base-LowerFractal_2_m15_base_next);
// --- Etapa 2 - - refinamiento de los extremos
//2.1 Para el primer fractal más pequeño
int Bar_1_Lowest_m15_base=iLowest(NULL,PERIOD_M15,MODE_LOW,LowerFractal_1_m15_NumBars_base,LowerFractal_1_m15_base_next);
datetime Time_1_Lowest_m15_base=iTime(NULL,PERIOD_M15,Bar_1_Lowest_m15_base);
double Price_1_Lowest_m15_base=iLow(NULL,PERIOD_M15,Bar_1_Lowest_m15_base);
//2.2 Para el segundo fractal más pequeño
int Bar_2_Lowest_m15_base=iLowest(NULL,PERIOD_M15,MODE_LOW,LowerFractal_2_m15_NumBars_base,LowerFractal_2_m15_base_next);
datetime Time_2_Lowest_m15_base=iTime(NULL,PERIOD_M15,Bar_2_Lowest_m15_base);
double Price_2_Lowest_m15_base=iLow(NULL,PERIOD_M15,Bar_2_Lowest_m15_base);
//2.3 Para el primer fractal más grande
int Bar_1_Highest_m15_base=iHighest(NULL,PERIOD_M15,MODE_HIGH,UpperFractal_1_m15_NumBars_base,UpperFractal_1_m15_base_next);
datetime Time_1_Highest_m15_base=iTime(NULL,PERIOD_M15,Bar_1_Highest_m15_base);
double Price_1_Highest_m15_base=iHigh(NULL,PERIOD_M15,Bar_1_Highest_m15_base);
//2.4 Para el segundo fractal más grande
int Bar_2_Highest_m15_base=iHighest(NULL,PERIOD_M15,MODE_HIGH,UpperFractal_2_m15_NumBars_base,UpperFractal_2_m15_base_next);
datetime Time_2_Highest_m15_base=iTime(NULL,PERIOD_M15,Bar_2_Highest_m15_base);
double Price_2_Highest_m15_base=iHigh(NULL,PERIOD_M15,Bar_2_Highest_m15_base);

	          
[Eliminado]  
Almat Kaldybay:

Aunque no he encontrado esta situación en la práctica, decidí excluirlo sin embargo

Hoy, por ejemplo, abrir el par GBPUSD/EURUSD M5 la primera vela se abrió a las 00:05. Si tomamos 288 velas por analogía con M15, vamos a entrar en los datos de otro día.

Cierto, esto es para MT5... en MT4 (servidor MetaQuotes-Demo) - también, en otro broker desde las 00:00, así que... todo es individual y todavía hay que comprobarlo.

 
MetaQuotes Software Corp.:

Nuevo artículo Trazado de líneas de tendencia basadas en fractales usando MQL4 y MQL5 ha sido publicado:

Autor: Almat Kaldybay

Hola,

No consigo la línea de tendencia como se ilustra arriba.
¿Alguna configuración especial?

 
Hairi Baba:

Hola,

No consigo la línea de tendencia como se ilustra arriba.
¿Alguna configuración especial?

Hola, tal vez usted no tiene datos históricos M15
 

Hola Almat,

No estoy recibiendo las líneas de tendencia en el gráfico, pero estoy recibiendo alertas móviles continuas. Por favor, ayuda si me pierdo algo.

Gracias,
Prakash.R

 
prakki79:

Hola Almat,

No estoy recibiendo las líneas de tendencia en el gráfico, pero estoy recibiendo alertas móviles continuas. Por favor, ayuda si me pierdo algo.

Gracias,
Prakash.R

Hola,

1. Necesitas compilar el archivo mq4 en el metaeditor;

2. Creo que usted tiene líneas de tendencia en el gráfico, pero no los ve a causa de la escala del gráfico

 
Saludos, por favor diganme como poner un Expert Advisor en mt4. He descargado el archivo trendlines.mq4 lo he compilado y enviado junto con el código fuente a la carpeta mql4/Indicators, he recargado el terminal, intento adjuntar el indicador al gráfico - ninguna reacción. ¿Qué estoy haciendo mal?