Ema Cross ! - page 4

 

Version d'Ema Cross ?

SpecII:
Salut,

Mon test d'avance de EMACross D1 TF

Salutations

Bonjour SpecII,

Merci beaucoup d'avoir partagé avec nous !

Quelle est la version d'EMA_CROSS que vous avez utilisée ?

 

Paires multiples !

SpecII:
Bonjour Codersguru

J'utilise la version no SL mais j'ai modifié le code pour les paires multiples et fait un bug pour les lots doubles hehe.

Je vais corriger le bug pour les lots doubles plus tard.

Merci

Merci encore ! Puis-je voir votre code pour les paires multiples ?

 
codersguru:
Merci encore ! Pourrais-je voir votre code pour plusieurs paires ?

Bonjour, je poste le code. C'est bien ça ?

Merci

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

//| EMA_CROSS.mq4 |

//| Coders Guru |

//| https://www.forex-tsd.com |

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

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

//| TODO: Add Money Management routine |

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

#property copyright "Coders Guru"

#property link "https://www.forex-tsd.com"

//---- input parameters

extern double TakeProfit=130;

extern double Lots=1;

extern double TrailingStop=20;

extern int ShortEma = 10;

extern int LongEma = 80;

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

//| expert initialization function |

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

int init()

{

//----

//----

return(0);

}

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

//| expert deinitialization function |

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

int deinit()

{

//----

//----

return(0);

}

int Crossed (double line1 , double line2)

{

static int last_direction = 0;

static int current_direction = 0;

//Don't work in the first load, wait for the first cross!

static bool first_time = true;

if(first_time == true)

{

first_time = false;

return (0);

}

if(line1>line2)current_direction = 1; //up

if(line1<line2)current_direction = 2; //down

if(current_direction != last_direction) //changed

{

last_direction = current_direction;

return (last_direction);

}

else

{

return (0); //not changed

}

}

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

//| expert start function |

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

int start()

{

int OrdersPerSymbol=0;

//----

int cnt, ticket;

double SEma, LEma;

if(Bars<100)

{

Print("bars less than 100");

return(0);

}

if(TakeProfit<10)

{

Print("TakeProfit less than 10");

return(0); // check TakeProfit

}

OrdersPerSymbol=0;

for(cnt=OrdersTotal();cnt>=0;cnt--)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if (OrderSymbol()==Symbol() )

{

OrdersPerSymbol++;

}

}

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

LEma = iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,0);

static int isCrossed = 0;

isCrossed = Crossed (LEma,SEma);

// total = OrdersTotal();

if(OrdersPerSymbol < 1)

{

if(isCrossed == 1)

{

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,"EMA_CROSS",12345,0,Green);

if(ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());

}

else Print("Error opening BUY order : ",GetLastError());

return(0);

}

if(isCrossed == 2)

{

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,"EMA_CROSS",12345,0,Red);

if(ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());

}

else Print("Error opening SELL order : ",GetLastError());

return(0);

}

return(0);

}

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

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

//OrderPrint();

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

{

if(OrderType()==OP_BUY) // long position is opened

{

// should it be closed?

/* REMOVED - Trailling stop only close

if(isCrossed == 2)

{

OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // close position

return(0); // exit

}

*/

// check for trailing stop

if(TrailingStop>0)

{

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

{

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

{

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

return(0);

}

}

}

}

else // go to short position

{

// should it be closed?

/* REMOVED - Trailling stop only close

if(isCrossed == 1)

{

OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // close position

return(0); // exit

}

*/

// check for trailing stop

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);

}

//+------------------------------------------------------------------+
 
codersguru:
Bonjour SpecII,

Merci beaucoup de nous avoir fait connaître !

Quelle est la version de EMA_CROSS que vous avez utilisée ?

Bonjour Codersguru

J'utilise la version no SL mais j'ai modifié le code pour les paires multiples et fait un bug pour les lots doubles hehe.

Je vais corriger le bug pour les lots doubles plus tard.

Cheers

 

Inverse

Pour moi, cela ressemble à un inverse.

Le code est configuré pour acheter lorsque l'EMA longue devient plus grande que l'EMA courte.

et à vendre lorsque l'EMA longue passe en dessous de l'EMA courte.

Je suppose que c'est la raison de son succès - car on apprend à faire exactement le contraire ailleurs.

J'obtiens également des transactions multiples, sur la première version de l'EA, je dois encore essayer la deuxième version. Cela est-il dû à des données historiques incorrectes ?

Je testerai ce soir.

Merci

 

donc

donc on achète quand la Sema se déplace en dessous du Lema

et on vend quand le Sema passe au-dessus du Lema.

Ou est-ce que je suis encore confus ?

 

lorsque j'attache l'ea

Lorsque j'attache l'ea à un graphique, j'obtiens un 'X' - sans visage souriant - sur l'ea ou sur moi.

J'ai réussi à le faire fonctionner - j'ai dû appuyer sur le bouton "play experts".

 

Bonjour,

J'ai l'esprit à tester cet EA avec un compte de démonstration. Les premières impressions sont très bonnes. Pour l'instant il n'ouvre qu'une seule paire malgré 4 diagrammes ouverts. Mais à chaque ouverture de Trades il est dans la bonne direction positive et il se repose. Je déclare vous joindre depuis hier.

 
BrunoFX:
Bonjour, je suis en train de tester cet EA avec un compte de démonstration. Les premières impressions sont très bonnes. Pour l'instant il n'ouvre qu'une seule paire malgré 4 diagrammes ouverts. Mais à chaque ouverture de Trades il est dans la bonne direction positive et il se repose. Je déclare vous joindre depuis hier.

J'ai modifié cet EA pour utiliser le nombre magique. Cela permet de trader sur plusieurs paires en même temps. Changez le paramètre maigc pour qu'il soit différent pour chaque paire.

Dossiers :
 

Bonjour Kalenzo,

Merci pour cette modification, toujours aussi rapide et efficace, bravo.

Raison: