Lección 13 - Su primer asesor experto (Parte 1) - página 5

 
KelchMonteiro:
¡realmente gracias mladen!

Lo he visto ahora.

Yo hice lo mismo. Échale un vistazo:

for_a_new_life-1.ex4

for_a_new_life-1_1.mq4

Estaba probando la versión de la mina y probaré la tuya también.

Si este indicador es correcto, que hizo algunos grandes para atrapar puntos de inversión.

es porque la diferencia entre las dos medias móviles dividida por la fuerza de 2 veces, puede mostrar cuando el precio está revirtiendo en una tendencia con más sensibilidad. Pruébalo con otro indicador de frontera y creo que te gustará.

algunas fotos:

Estoy muy contento porque esta es mi primera contribución al foro. Y no podría hacerlo sin su ayuda.

¡Muchas gracias Mladen!

Kelch

Solo le he hecho un cambio: cambiar la dirección del mismo. Parece que de esta manera se muestran valores un poco más lógicos. Pruébalo también de esta manera

for_a_new_life-1.01.mq4

Archivos adjuntos:
 

Hola Mladen,

Hice EA de icustom después de compilarlo ningún error dan advertencia pero yo era Backtest no OP en absoluto?

¿Puedo publicar mi EA en este hilo me wolud como a su ayuda para solucionarlo.

Gracias,

mejor consideración

 
Dova:
Hola Mladen,

Hice EA de icustom después de compilarlo ningún error dan advertencia pero yo era Backtest no OP en absoluto?

¿Puedo publicar mi EA en este hilo me wolud como a su ayuda para solucionarlo.

Gracias,

un saludo

Dova

Postealo para que alguien le eche un vistazo

 
mladen:
Kelch

Hice sólo un cambio en él: cambiar la dirección del mismo. Parece que de esta manera muestra valores un poco más lógicos. Pruébalo también de esta manera

for_a_new_life-1.01.mq4

¡Gracias mladen!

 

Aquí mi ea de prueba...

Este ea mientras compilar está bien ningún error o advertencia, pero no OP cuando BT.

Me gustaria que este ea pueda revertir de OP antes,

ejemplo si la posicion ya es de COMPRA que la flecha de VENTA de la proxima vela aparezca la posicion auto reversa de COMPRA a VENTA y visa versa.

Añadir Trailling Stop también.

Lo siento por mi mal inglés

pfi.ex4ea_pfi.mq4

Gracias

Archivos adjuntos:
pfi.ex4  6 kb
ea_pfi.mq4  4 kb
 
Dova:
Aquí mi ea de prueba...

Este ea mientras compila está bien ningún error o advertencia, pero no OP cuando BT.

Me gustaria que este ea pueda revertir de OP antes,

ejemplo si la posicion ya es de COMPRA que la flecha de VENTA de la proxima vela aparezca automaticamente la posicion inversa de COMPRA a VENTA y visa versa.

Añadir Trailling Stop también.

Lo siento por mi mal inglés

pfi.ex4ea_pfi.mq4

Gracias

Para la claridad de cualquiera que lea este post: ¿qué significa exactamente el "invertir de OP" o "no OP cuando BT"?

 
mladen:
Para la claridad de cualquier persona que lea este post : ¿qué significa exactamente el "invertir de OP" o "no OP cuando BT"?

Me refiero a OP= Posición abierta, BT= Backtest.

Después de backtest no hay posiciones abiertas.

Cuando ya hay una posición abierta de compra, entonces la siguiente vela de venta flechas / señal aparecen automáticamente cerrar posiciones largas y abrir posiciones cortas y viceversa (auto posición inversa).

Espero que mi explanatian hacer que sea claro..

Gracias

 

Saludos a todos ....

perdonen si se equivocan de lugar, por mis nuevos miembros .

Por favor, su apoyo de la codificación maestro ,

para ser la codificación de este indicador en EA .

con la intención de EA será capaz de trabajar como yo quería, a saber :

1.Open compra automática cuando el precio toca la línea TL1 .

2.Abrir automáticamente vender cuando el precio toca la línea TL2

3.Abrir automáticamente comprar cuando el precio está por encima de la línea TL2

4.Abrir vender automáticamente cuando el precio está por encima de la línea TL1

5.cerrado automáticamente comprar cuando el precio toca la línea TL2 proceder directamente abrir vender

6.Cerrado automáticamente vender cuando el precio toca la línea TL1 proceder directamente a abrir comprar

7.nomor 3 y 4 cerrado manualmente ( sin TrailingStop ) .

8.SL 50 pips y poner en el lote 0.1

9.Time frame H4 para todos los pares .

muchas gracias

/ / + ----------------------------------------------- ------------------- +

/ / | SHI_Channel_true.mq4 |

/ / | Copyright © 2004 , Shurka & Kevin |

/ / | |

/ / + ----------------------------------------------- ------------------- +

# propiedad copyright " Copyright © 2004 , Shurka & Kevin "

# property link " "

/ / ----

# propiedad indicator_chart_window

# propiedad indicator_buffers 1

# propiedad indicador_color1 Rojo

ExtMapBuffer1 double [ ] ;

/ / ---- Parámetros de entrada

extern int AllBars = 240 ;

BarsForFract extern int = 0 ;

CurrentBar int = 0 ;

double Paso = 0 ;

int B1 = -1 , B2 = -1 ;

UpDown int = 0 ;

double P1 = 0 , P2 = 0 , PP = 0 ;

int i = 0 , AB = 300 , BFF = 0 ;

ishift int = 0 ;

double iprice = 0 ;

datetime T1 , T2 ;

/ / + ----------------------------------------------- ------------------- +

/ / | Función de inicialización de los indicadores personalizados |

/ / + ----------------------------------------------- ------------------- +

int init ( )

/ / ---- Indicadores

SetIndexStyle ( 0 , DRAW_ARROW ) ;

SetIndexArrow ( 0 , 164 ) ;

SetIndexBuffer ( 0 , ExtMapBuffer1 ) ;

SetIndexEmptyValue ( 0 , 0.0 ) ;

/ / ----

return ( 0 ) ;

}

/ / + ----------------------------------------------- ------------------- +

/ / | Desinicialización de la función del indicador Custor |

/ / + ----------------------------------------------- ------------------- +

deinit int ( )

{

ObjectDelete ( " TL1 " ) ;

ObjectDelete ( " TL2 " ) ;

ObjectDelete ( " MIDL " ) ;

Comentario ( " " ) ;

/ / ----

return ( 0 ) ;

}

/ / + ----------------------------------------------- ------------------- +

/ / | |

/ / + ----------------------------------------------- ------------------- +

DelObj void ( )

{

ObjectDelete ( " TL1 " ) ;

ObjectDelete ( " TL2 " ) ;

ObjectDelete ( " MIDL " ) ;

}

/ / + ----------------------------------------------- ------------------- +

/ / | Función de iteración de indicadores personalizada |

/ / + ----------------------------------------------- ------------------- +

int inicio ( )

{

IndicatorCounted counted_bars = int ( ) ;

/ / ----

if ( AllBars == 0 ) | ( Bars < AllBars ) )

AB = Bars ;

else AB = AllBars ; / / AB - êîëè ÷ ÷ åñòâî Ian èòûâàåìûõ áàðîâ

if ( BarsForFract > 0 )

BFF = BarsForFract ;

si no

switch ( Periodo ( ) )

{

caso 1 : BFF = 12 ; break;

caso 5 : BFF = 48 ; break;

caso 15 : BFF = 24 ; break;

caso 30 : BFF = 24 ; break;

caso 60 : BFF = 12 ; break;

caso 240 : BFF = 15 ; break;

caso 1440: BFF = 10 ; break;

case 10080 : BFF = 6 ; break;

default : DelObj ( ), return ( -1 ) ; break;

}

CurrentBar = 2 ; / / ñ ÷ ñ òðåòüåãî Suspected èòàåì , ÷ òîáû ôðàêòàë " çàêðåïèëñÿ

B1 = -1 ;

B2 = -1 ;

UpDown = 0 ;

while ( ( ( B1 == -1 ) | ( B2 == -1 ) ) && ( CurrentBar < AB ) )

{

/ / UpDown = 1 ÷ eo CIA ïåðâûé ôðàêòàë íàéäåí ñâåðõó , UpDown = -1 ÷ eo CIA ïåðâûé ôðàêòàë

/ / íàéäåí ñíèçó , CIA UpDown = 0 ÷ ¸ AU EO ôðàêòàë he íàéäåí .

/ / A1 a2 è - ÿ áàðîâ íîìåðà ôðàêòàëàìè , ÷ ADAC IEO ñòðîèì îïîðíóþ ëèíèþ .

/ È D1 D2 - ÷ öåíû ñîòâåòñòâåííî ADAC êîòîðûå áóäåì ëèíèþ ïðîâîäèòü

if ( UpDown < 1 ) && ( CurrentBar == Lowest ( Symbol ( ) , Period ( ) , MODE_LOW , BFF * 2 + 1 ,

CurrentBar - BFF ) ) )

{

si ( UpDown == 0 )

{

UpDown = -1 ;

B1 = CurrentBar ;

P1 = Low [ B1 ] ;

}

si no

{

B2 = Barra Actual ;

P2 = Low [ B2 ] ;

}

}

if ( UpDown > -1 ) && ( CurrentBar == Highest ( Symbol ( ) , Period ( ) , MODE_HIGH , BFF * 2 + 1 ,

CurrentBar - BFF ) )

{

si ( UpDown == 0 )

{

UpDown = 1 ;

B1 = CurrentBar ;

P1 = Alta [ B1 ] ;

}

si no

{

B2 = Barra Actual ;

P2 = Alto [ B2 ] ;

}

}

CurrentBar + + ;

}

if ( B1 == -1 ) | ( B2 == -1 ) )

{

DelObj ( ) ;

return ( -1 ) ;

} / / Eo ÷ CIA he íàøëè ôðàêòàëîâ ñðåäè 300 áàðîâ 8-)

Paso = ( P2 - P1 ) / ( B2 - B1 ) / / Au ÷ èñëèëè OAA , åñëè ïîëîæèòåëüíûé II , OI êàíàë íèñõîäÿùèé

P1 = P1 - B1 * Paso ;

B1 = 0 ; / / ïåðåñòàâëÿåì öåíó ïåðâûé AAD è ê íóëþ

/ / À ÷ eo Oi òåïåðü îïîðíóþ ïðîòèâîïîëîæíîé ëèíèè êàíàëà .

ishift = 0 ;

iprice = 0 ;

if ( UpDown == 1 )

{

PP = Bajo [ 2 ] - 2 * Paso ;

for (i = 3 ; i < = B2 ; i + + )

{

if ( Low [ i ] < PP + Step * i )

PP = Low [ i ] - i * Step ;

}

if ( Low [ 0 ] < PP )

{

ishift = 0 ;

iprice = PP ;

}

if ( Low [ 1 ] < PP + Step )

{

ishift = 1 ;

iprice = PP + Paso ;

}

si ( Alta [ 0 ] > P1 )

{

ishift = 0 ;

iprice = P1 ;

}

si ( Alto [ 1 ] > P1 + Paso )

{

ishift = 1 ;

iprice = P1 + Paso ;

}

}

si no

{

PP = Alto [ 2 ] - 2 * Paso ;

for (i = 3 ; i < = B2 ; i + + )

{

si ( Alta [ i ] > PP + Paso * i )

PP = Alto [ i ] - i * Paso ;

}

if ( Low [ 0 ] < P1 )

{

ishift = 0 ;

iprice = P1 ;

}

if ( Low [ 1 ] < P1 + Step )

{

ishift = 1 ;

iprice = P1 + Paso ;

}

si ( Alta [ 0 ] > PP )

{

ishift = 0 ;

iprice = PP ;

}

if ( High [ 1 ] > PP + Step )

{

ishift = 1 ;

iprice = PP + Paso ;

}

}

/ / Òåïåðü ïåðåñòàâèì êîíå ÷ è íóþ öåíó he AAD AA , ÷ òîáû ëèíèè êàíàëà ðèñîâàëèñü ïîäëèíåå

P2 = P1 + AB * Paso ;

T1 = Tiempo [ B1 ] ;

T2 = Tiempo [ AB ] ;

/ / Åñëè he áûëî ïåðåñå ÷ åíèÿ êàíàëà , oi 0 , EIA ÷ å ñòàâèì Ineno .

if ( iprice ! = 0 )

ExtMapBuffer1 [ ishift ] = iprice ;

DelObj ( ) ;

ObjectCreate ( " TL1 " , OBJ_TREND , 0 , T2 , PP + Step * AB , T1 , PP ) ;

ObjectSet ( " TL1 " , OBJPROP_COLOR , Lime ) ;

ObjectSet ( " TL1 " , OBJPROP_WIDTH , 2 ) ;

ObjectSet ( " TL1 " , OBJPROP_STYLE , STYLE_SOLID ) ;

ObjectCreate ( " TL2 " , OBJ_TREND , 0 , T2 , P2 , T1 , P1 ) ;

ObjectSet ( " TL2 " , OBJPROP_COLOR , Blanco ) ;

ObjectSet ( " TL2 " , OBJPROP_WIDTH , 2 ) ;

ObjectSet ( " TL2 " , OBJPROP_STYLE , STYLE_SOLID ) ;

ObjectCreate ( " MIDL " , OBJ_TREND , 0 , T2 , ( P2 + PP + Step * AB ) / 2 , T1 , ( P1 + PP ) / 2 ) ;

ObjectSet ( " MIDL " , OBJPROP_COLOR , Yellow ) ;

ObjectSet ( " MIDL " , OBJPROP_WIDTH , 1 ) ;

ObjectSet ( " MIDL " , OBJPROP_STYLE , STYLE_DOT ) ;

Comment ( " Tamaño del canal = " , DoubleToStr ( MathAbs ( PP - P1 ) / Point , 0 ) , " Pendiente = " ,

DoubleToStr ( - Paso / Punto , 2 ) ;

/ / ----

return ( 0 ) ;

}

/ / + ----------------------------------------------- ------------------- +

 
djiwenk:
Saludos a todos ....

Perdonen si se equivocan de lugar, debido a mis nuevos miembros.

Por favor, su apoyo de la codificación maestro,

para codificar este indicador en EA .

con la intención de EA será capaz de trabajar como yo quería, a saber :

1.Open compra automática cuando el precio toca la línea TL1 .

2.Abrir automáticamente vender cuando el precio toca la línea TL2

3.Abrir automáticamente comprar cuando el precio está por encima de la línea TL2

4.Abrir vender automáticamente cuando el precio está por encima de la línea TL1

5.cerrado automáticamente comprar cuando el precio toca la línea TL2 proceder directamente abrir vender

6.Cerrado automáticamente vender cuando el precio toca la línea TL1 proceder directamente a abrir comprar

7.nomor 3 y 4 cerrado manualmente ( sin TrailingStop ) .

8.SL 50 pips y poner en el lote 0.1

9.Time frame H4 para todos los pares .

muchas gracias

/ / + ----------------------------------------------- ------------------- +

/ / | SHI_Channel_true.mq4 |

/ / | Copyright © 2004 , Shurka & Kevin |

/ / | |

/ / + ----------------------------------------------- ------------------- +

# propiedad copyright " Copyright © 2004 , Shurka & Kevin "

# property link " "

/ / ----

# propiedad indicator_chart_window

# propiedad indicator_buffers 1

# propiedad indicador_color1 Rojo

ExtMapBuffer1 double [ ] ;

/ / ---- Parámetros de entrada

extern int AllBars = 240 ;

BarsForFract extern int = 0 ;

CurrentBar int = 0 ;

double Paso = 0 ;

int B1 = -1 , B2 = -1 ;

UpDown int = 0 ;

double P1 = 0 , P2 = 0 , PP = 0 ;

int i = 0 , AB = 300 , BFF = 0 ;

ishift int = 0 ;

double iprice = 0 ;

datetime T1 , T2 ;

/ / + ----------------------------------------------- ------------------- +

/ / | Función de inicialización de los indicadores personalizados |

/ / + ----------------------------------------------- ------------------- +

int init ( )

/ / ---- Indicadores

SetIndexStyle ( 0 , DRAW_ARROW ) ;

SetIndexArrow ( 0 , 164 ) ;

SetIndexBuffer ( 0 , ExtMapBuffer1 ) ;

SetIndexEmptyValue ( 0 , 0.0 ) ;

/ / ----

return ( 0 ) ;

}

/ / + ----------------------------------------------- ------------------- +

/ / | Desinicialización de la función del indicador Custor |

/ / + ----------------------------------------------- ------------------- +

deinit int ( )

{

ObjectDelete ( " TL1 " ) ;

ObjectDelete ( " TL2 " ) ;

ObjectDelete ( " MIDL " ) ;

Comentario ( " " ) ;

/ / ----

return ( 0 ) ;

}

/ / + ----------------------------------------------- ------------------- +

/ / | |

/ / + ----------------------------------------------- ------------------- +

DelObj void ( )

{

ObjectDelete ( " TL1 " ) ;

ObjectDelete ( " TL2 " ) ;

ObjectDelete ( " MIDL " ) ;

}

/ / + ----------------------------------------------- ------------------- +

/ / | Función de iteración de indicadores personalizada |

/ / + ----------------------------------------------- ------------------- +

int inicio ( )

{

IndicatorCounted counted_bars = int ( ) ;

/ / ----

if ( AllBars == 0 ) | ( Bars < AllBars ) )

AB = Bars ;

else AB = AllBars ; / / AB - êîëè ÷ ÷ åñòâî Ian èòûâàåìûõ áàðîâ

if ( BarsForFract > 0 )

BFF = BarsForFract ;

si no

switch ( Periodo ( ) )

{

caso 1 : BFF = 12 ; break;

caso 5 : BFF = 48 ; break;

caso 15 : BFF = 24 ; break;

caso 30 : BFF = 24 ; break;

caso 60 : BFF = 12 ; break;

caso 240 : BFF = 15 ; break;

caso 1440: BFF = 10 ; break;

case 10080 : BFF = 6 ; break;

default : DelObj ( ), return ( -1 ) ; break;

}

CurrentBar = 2 ; / / ñ ÷ ñ òðåòüåãî Suspected èòàåì , ÷ òîáû ôðàêòàë " çàêðåïèëñÿ

B1 = -1 ;

B2 = -1 ;

UpDown = 0 ;

while ( ( ( B1 == -1 ) | ( B2 == -1 ) ) && ( CurrentBar < AB ) )

{

/ / UpDown = 1 ÷ eo CIA ïåðâûé ôðàêòàë íàéäåí ñâåðõó , UpDown = -1 ÷ eo CIA ïåðâûé ôðàêòàë

/ / íàéäåí ñíèçó , CIA UpDown = 0 ÷ ¸ AU EO ôðàêòàë he íàéäåí .

/ / A1 a2 è - ÿ áàðîâ íîìåðà ôðàêòàëàìè , ÷ ADAC IEO ñòðîèì îïîðíóþ ëèíèþ .

/ È D1 D2 - ÷ öåíû ñîòâåòñòâåííî ADAC êîòîðûå áóäåì ëèíèþ ïðîâîäèòü

if ( UpDown < 1 ) && ( CurrentBar == Lowest ( Symbol ( ) , Period ( ) , MODE_LOW , BFF * 2 + 1 ,

CurrentBar - BFF ) ) )

{

si ( UpDown == 0 )

{

UpDown = -1 ;

B1 = CurrentBar ;

P1 = Low [ B1 ] ;

}

si no

{

B2 = Barra Actual ;

P2 = Low [ B2 ] ;

}

}

if ( UpDown > -1 ) && ( CurrentBar == Highest ( Symbol ( ) , Period ( ) , MODE_HIGH , BFF * 2 + 1 ,

CurrentBar - BFF ) )

{

si ( UpDown == 0 )

{

UpDown = 1 ;

B1 = CurrentBar ;

P1 = Alta [ B1 ] ;

}

si no

{

B2 = Barra Actual ;

P2 = Alto [ B2 ] ;

}

}

CurrentBar + + ;

}

if ( B1 == -1 ) | ( B2 == -1 ) )

{

DelObj ( ) ;

return ( -1 ) ;

} / / Eo ÷ CIA he íàøëè ôðàêòàëîâ ñðåäè 300 áàðîâ 8-)

Paso = ( P2 - P1 ) / ( B2 - B1 ) / / Au ÷ èñëèëè OAA , åñëè ïîëîæèòåëüíûé II , OI êàíàë íèñõîäÿùèé

P1 = P1 - B1 * Paso ;

B1 = 0 ; / / ïåðåñòàâëÿåì öåíó ïåðâûé AAD è ê íóëþ

/ / À ÷ eo Oi òåïåðü îïîðíóþ ïðîòèâîïîëîæíîé ëèíèè êàíàëà .

ishift = 0 ;

iprice = 0 ;

if ( UpDown == 1 )

{

PP = Bajo [ 2 ] - 2 * Paso ;

for (i = 3 ; i < = B2 ; i + + )

{

if ( Low [ i ] < PP + Step * i )

PP = Low [ i ] - i * Step ;

}

if ( Low [ 0 ] < PP )

{

ishift = 0 ;

iprice = PP ;

}

if ( Low [ 1 ] < PP + Step )

{

ishift = 1 ;

iprice = PP + Paso ;

}

si ( Alta [ 0 ] > P1 )

{

ishift = 0 ;

iprice = P1 ;

}

si ( Alto [ 1 ] > P1 + Paso )

{

ishift = 1 ;

iprice = P1 + Paso ;

}

}

si no

{

PP = Alto [ 2 ] - 2 * Paso ;

for (i = 3 ; i < = B2 ; i + + )

{

si ( Alta [ i ] > PP + Paso * i )

PP = Alto [ i ] - i * Paso ;

}

if ( Low [ 0 ] < P1 )

{

ishift = 0 ;

iprice = P1 ;

}

if ( Low [ 1 ] < P1 + Step )

{

ishift = 1 ;

iprice = P1 + Paso ;

}

si ( Alta [ 0 ] > PP )

{

ishift = 0 ;

iprice = PP ;

}

if ( High [ 1 ] > PP + Step )

{

ishift = 1 ;

iprice = PP + Paso ;

}

}

/ / Òåïåðü ïåðåñòàâèì êîíå ÷ è íóþ öåíó he AAD AA , ÷ òîáû ëèíèè êàíàëà ðèñîâàëèñü ïîäëèíåå

P2 = P1 + AB * Paso ;

T1 = Tiempo [ B1 ] ;

T2 = Tiempo [ AB ] ;

/ / Åñëè he áûëî ïåðåñå ÷ åíèÿ êàíàëà , oi 0 , EIA ÷ å ñòàâèì Ineno .

if ( iprice ! = 0 )

ExtMapBuffer1 [ ishift ] = iprice ;

DelObj ( ) ;

ObjectCreate ( " TL1 " , OBJ_TREND , 0 , T2 , PP + Step * AB , T1 , PP ) ;

ObjectSet ( " TL1 " , OBJPROP_COLOR , Lime ) ;

ObjectSet ( " TL1 " , OBJPROP_WIDTH , 2 ) ;

ObjectSet ( " TL1 " , OBJPROP_STYLE , STYLE_SOLID ) ;

ObjectCreate ( " TL2 " , OBJ_TREND , 0 , T2 , P2 , T1 , P1 ) ;

ObjectSet ( " TL2 " , OBJPROP_COLOR , Blanco ) ;

ObjectSet ( " TL2 " , OBJPROP_WIDTH , 2 ) ;

ObjectSet ( " TL2 " , OBJPROP_STYLE , STYLE_SOLID ) ;

ObjectCreate ( " MIDL " , OBJ_TREND , 0 , T2 , ( P2 + PP + Step * AB ) / 2 , T1 , ( P1 + PP ) / 2 ) ;

ObjectSet ( " MIDL " , OBJPROP_COLOR , Yellow ) ;

ObjectSet ( " MIDL " , OBJPROP_WIDTH , 1 ) ;

ObjectSet ( " MIDL " , OBJPROP_STYLE , STYLE_DOT ) ;

Comment ( " Tamaño del canal = " , DoubleToStr ( MathAbs ( PP - P1 ) / Point , 0 ) , " Pendiente = " ,

DoubleToStr ( - Paso / Punto , 2 ) ;

/ / ----

return ( 0 ) ;

}

/ / + ----------------------------------------------- ------------------- +

djiwenk

Sabes que el canal shi cambia todo el tiempo (según cambie el precio actual el canal shi cambiará también)?

 

libro de creación de ea

crear su propio ea

Archivos adjuntos:
eaprog.pdf  1296 kb