¡Ema Cross! - página 55

 

Ema_cross_2

Estimado codersguru,

Gracias por su EA y su concepto de contratendencia,

Incluso por primera vez, yo y mi amigo son escépticos de este método contra-tendencia, pero después de estudiar y ejecutar las pruebas de avance de su EA, hemos sorprendido con los resultados

Todavía continuamos la prueba de avance EMA_CROSS_2 con el marco de tiempo H1, pero encontramos algo interesante en el par EUR/USD 03 de abril de 2006, después de cruzar hacia abajo, esta posición de venta abierta EA en lugar de comprar la posición .... ¿es un acto normal? (ver archivo adjunto)

Gracias...

dedywind

Archivos adjuntos:
 

7

Hola floks,

He escrito 10 EAs para el concurso, pero eran demasiado para probar.

Por lo tanto, voy a seleccionar 3 de ellos para el concurso y presentar el 7 aquí Ellos están haciendo el beneficio en las pruebas de avance.

¡Espero que disfruten!

 

Codificadores,

Voy a volver a leer el hilo completo, pero no puedo recordar si esto fue abordado.

Cuando se cierra la plataforma, ya sea InterbanFX, MT4, etc., me he dado cuenta de que si no estoy en una posición, y tengo la última MA EA en ella se ejecutará automáticamente un comercio.

Como podemos evitar que esto ocurra cada vez que volvemos a abrir el software.

gracias

 

Novato necesita ayuda con MA cross EA...

codersguru:
amarnath,

¡Este es mi informe (adjunto)!

¡Y esta es la versión que utilicé (adjunta)!

Creo que no se puede transmitir sólo en el backtest. ¡Pero mi en mi prueba he utilizado la fecha de 2005/01/01 hasta hoy!

¿Alguien ha probado el MoneyMaker?

Hola CodersGuru,

He modificado un poco tu EA original EMA_Cross para que funcione con un cruce de 5 EMA y 10 LWMA con un filtro RSI y estocástico. Mientras que este EA abre órdenes LARGAS y CORTAS y las cierra correctamente, no me permite cerrar una posición simultáneamente y luego abrir inmediatamente una nueva posición en la dirección opuesta (por ejemplo, una verdadera técnica de trading "swing"). Por lo tanto, pierdo una gran cantidad de operaciones swing potenciales.

Además, a veces las condiciones cruzadas de EMA1 > WMA1 y EMA2 < WMA2 pueden no desencadenar una compra si las dos medias móviles del período anterior tenían el mismo valor o estaban a 1 o 2 pips de distancia. Por lo tanto, me gustaría añadir en el código para buscar ese tipo de condición (que sucede a menudo) para desencadenar una entrada.

No soy un codificador, así que esperaba que pudiera ayudarme a averiguar cómo hacer esto.

He incluido mi código en línea a continuación, así como el archivo MQ4 como un archivo adjunto. ¡Cualquier ayuda sería muy, muy apreciada!

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

//| Ian Boersma - Copyright 2006

//| |

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

#property copyright "Ian Boersma"

//---- parámetros de entrada

extern double TakeProfit=100;

extern double Lots=1;

extern double TrailingStop=35;

extern int ShortEma = 5

extern int LongWma = 10;

extern int RSIPer = 14

extern int StochK = 10

extern int StochD = 3

extern int StochSlow = 3;

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

//| función de inicialización de expertos ||.

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

int init()

{

//----

//----

return(0);

}

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

//| función de desinicialización experta ||

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

int deinit()

{

//----

//----

return(0);

}

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

//| función de inicio experto +

//| Aquí es donde inicializamos las variables internas para el uso del programa + |

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

int inicio()

{

//----

//Declaraciones de LotCalc

int cnt, ticket, total;

//Declaraciones de las variables de los MAs y de los filtros

double RSI

double Stoch;

double EMA1,EMA2,WMA1,WMA2;

if(Bars<100)

{

Print("barras menos de 100");

return(0);

}

if(TakeProfit<10)

{

Print("TakeProfit menos de 10");

return(0); // comprobar TakeProfit

}

//Definición de las variables EMA y Filtro

EMA1 = iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,0);

WMA1 = iMA(NULL,0,LongWma,0,MODE_LWMA,PRICE_CLOSE,0);

EMA2 = iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,1);

WMA2 = iMA(NULL,0,LongWma,0,MODE_LWMA,PRICE_CLOSE,1);

RSI = iRSI(NULL,0,RSIPer,PRICE_CLOSE,0);

Stoch = iStochastic(NULL,0,StochK,StochD,StochSlow,MODE_SMA,0,MODE_MAIN,0);

int isCrossed = 0;

if (EMA1 > WMA1 && EMA2 = 50 && Stoch < 80)

{isCrossed = 1;

}

si (EMA1 = WMA2 && RSI 20)

{isCrossed = 2;

}

//Revisamos el terminal de operaciones para ver si está vacío

total = OrdersTotal();

if(total < 1) //Si el terminal de negociación está vacío...

{

if(isCrossed == 1) //Si el cruce indica una oscilación LARGA...

{

ticket=Envío de órdenes(Símbolo(),OP_BUY,Lotes,Demanda,2,0,Demanda+TakeProfit*Punto, "Mi EA",12345,0,Amarillo);

if(ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("Orden de COMPRA abierta : ",OrderOpenPrice());

}

else Print("Error al abrir la orden de COMPRA : ",GetLastError());

return(0);

}

if(isCrossed == 2) //si el cruce indica un giro SHORT...

{

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,2,0,Bid-TakeProfit*Point, "My EA",12345,0,Red);

if(ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("Orden de venta abierta : ",OrderOpenPrice());

}

else Print("Error al abrir la orden de VENTA : ",GetLastError());

return(0);

}

return(0);

}

//Función de salida de la posición...

for(cnt=0;cnt<total;cnt++)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

OrderPrint();

if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())

{

if(OrderType()==OP_BUY) // se abre una posición larga

{

// Comprueba si tenemos una condición de cruce CORTO...

if(isCrossed == 2)

{

OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // cierra la posición

return(0); // salir

}

// Comprobar nuestro trailing stop para ver si hay que ajustarlo

if(TrailingStop>0)

{

if(Bid-OrderOpenPrice()>Punto*TrailingStop)

{

if(OrderStopLoss()<Bid-Point*TrailingStop)

{

OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);

return(0);

}

}

}

}

else // ir a la posición corta

{

// Comprueba si tenemos una condición de cruce LONG...

if(isCrossed == 1)

{

OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // cerrar la posición

return(0); // salir

}

// Comprueba nuestro trailing stop para ver si necesita ser ajustado

if(TrailingStop>0)

{

if((OrderOpenPrice()-Ask)>(Point*TrailingStop))

{

if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);

return(0);

}

}

}

}

}

}

return(0);

}

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

Archivos adjuntos:
 
iboersma:
Hola CodersGuru,

He modificado un poco su EA original EMA_Cross para que funcione con un cruce de 5 EMA y 10 LWMA con un filtro RSI y estocástico. Si bien este EA abre órdenes LARGAS y CORTAS y las cierra correctamente, no me permite cerrar una posición simultáneamente y luego abrir inmediatamente una nueva posición en la dirección opuesta (por ejemplo, una verdadera técnica de negociación "swing"). Por lo tanto, pierdo una gran cantidad de operaciones swing potenciales.

Además, a veces las condiciones cruzadas de EMA1 > WMA1 y EMA2 < WMA2 pueden no desencadenar una compra si las dos medias móviles del período anterior tenían el mismo valor o estaban a 1 o 2 pips de distancia. Por lo tanto, me gustaría añadir en el código para buscar ese tipo de condición (que sucede a menudo) para desencadenar una entrada.

No soy un codificador, así que esperaba que pudiera ayudarme a averiguar cómo hacer esto. ....

Lo comprobaré.

 
codersguru:
Lo comprobaré.

Gracias por tu ayuda...

- Ian

 
codersguru:
¡Lo comprobaré!

CodersGuru,

He adjuntado una nueva versión de mi EA ya que he detectado un problema con la determinación de la condición 'isCrossed' (he intentado añadir los filtros RSI y Stoch a la condición original isCrossed en lugar de añadirlo como un calificador sólo para entrar en una posición.

Espero que esto tenga más sentido...

- Ian

Archivos adjuntos:
 
iboersma:
Gracias por tu ayuda... - Ian

Creo que el punto 1 está funcionando (cuando se cierra la compra se abre la venta y cuando se cierra la venta se abre la compra) Mira la prueba adjunta.

Archivos adjuntos:
 
codersguru:
Creo que el punto 1 está funcionando (cuando se cierra la compra se abre la venta y cuando se cierra la venta se abre la compra) Mira la prueba adjunta.

Genial. Definitivamente parece el sistema de tipo stope and reverse que estoy buscando (aunque el beneficio neto no parece muy alentador...:))

He estado utilizando este sistema de forma manual durante una semana o así y han tenido algunos resultados muy alentadores, por lo que será interesante para obtener los números de backtesting completo para ver si estoy en algo o soy sólo suerte ...

- Ian

 
gody6000:
esta es la segunda semana lolhttp://9q9q.com/March/1144348631.zip

Lo siento, pero ¿qué es esto?