Rejoindre la communauté
banner_forum
Devenez membre de la plus grande
communauté francophone sur le Forex
Partagez, échangez et apprenez en gagnant des crédits sur votre compte de trading

Maquette simple pour la réalisation d'un EA

  • lefeuvr3

    Code
    //+------------------------------------------------------------------+ //| EA . BASIC MODEL.mq4 //| QPG //+------------------------------------------------------------------+ extern int MagicNumber=31082018; extern double Lots =0.01; extern double StopLoss=50; extern double TakeProfit=50; extern int TrailingStop=50; extern int Slippage=3; //+------------------------------------------------------------------+ // expert start function //+------------------------------------------------------------------+ int start() { double MyPoint=Point; if(Digits==3 || Digits==5) MyPoint=Point*10; double TheStopLoss=0; double TheTakeProfit=0; if( TotalOrdersCount()==0 ) { int result=0; //+------------------------------------------------------------------+ // Here is your open buy rule //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ // Here is the beginning of your open buy rule strategy //+------------------------------------------------------------------+ //Example if ((Bid>Ask)) //+------------------------------------------------------------------+ // Here is the end of your buy rule strategy //+------------------------------------------------------------------+ { result=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,"EA MODEL",MagicNumber,0,Blue); if(result>0) { TheStopLoss=0; TheTakeProfit=0; if(TakeProfit>0) TheTakeProfit=Ask+TakeProfit*MyPoint; if(StopLoss>0) TheStopLoss=Ask-StopLoss*MyPoint; if(OrderSelect(result,SELECT_BY_TICKET)) bool modif1=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(TheStopLoss,Digits),NormalizeDouble(TheTakeProfit,Digits),0,Green); } return(0); } //+------------------------------------------------------------------+ // Here is your open sell rule //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ // Here is the beginning of your open sell rule strategy //+------------------------------------------------------------------+ //Example if ((Bid<Ask)) //+------------------------------------------------------------------+ // Here is the end of your sell rule strategy //+------------------------------------------------------------------+ { result=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,0,"EA MODEL",MagicNumber,0,Red); if(result>0) { TheStopLoss=0; TheTakeProfit=0; if(TakeProfit>0) TheTakeProfit=Bid-TakeProfit*MyPoint; if(StopLoss>0) TheStopLoss=Bid+StopLoss*MyPoint; if(OrderSelect(result,SELECT_BY_TICKET)) bool modif2=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(TheStopLoss,Digits),NormalizeDouble(TheTakeProfit,Digits),0,Green); } return(0); } } for(int cnt=0;cnt<OrdersTotal();cnt++) { if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) if(OrderType()<=OP_SELL && OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber ) { if(OrderType()==OP_BUY) { //+------------------------------------------------------------------+ // Here is your close buy rule //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ // Here is the beginning of your close buy rule strategy //+------------------------------------------------------------------+ //Example if ((Bid<Ask)) //+------------------------------------------------------------------+ // Here is the end of your close buy rule strategy //+------------------------------------------------------------------+ { bool modif3=OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),Slippage,Red); } if(TrailingStop>0) { if(Bid-OrderOpenPrice()>MyPoint*TrailingStop) { if(OrderStopLoss()<Bid-MyPoint*TrailingStop) { bool modif4=OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TrailingStop*MyPoint,OrderTakeProfit(),0,Green); return(0); } } } } else { //+------------------------------------------------------------------+ // Here is your close sell rule //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ // Here is the beginning of your close sell rule strategy //+------------------------------------------------------------------+ //Example if ((Bid>Ask)) //+------------------------------------------------------------------+ //Here is the end of your close sell rule strategy //+------------------------------------------------------------------+ { bool modif5=OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),Slippage,Red); } if(TrailingStop>0) { if((OrderOpenPrice()-Ask)>(MyPoint*TrailingStop)) { if((OrderStopLoss()>(Ask+MyPoint*TrailingStop)) || (OrderStopLoss()==0)) { bool modif6=OrderModify(OrderTicket(),OrderOpenPrice(),Ask+MyPoint*TrailingStop,OrderTakeProfit(),0,Red); return(0); } } } } } } return(0); } int TotalOrdersCount() { int result=0; for(int i=0;i<OrdersTotal();i++) { if (OrderSelect(i,SELECT_BY_POS ,MODE_TRADES)) if (OrderMagicNumber()==MagicNumber) result++; } return (result); }

    Dans ce programme il vous suffit de remplacer le texte en rouge, par votre stratégie.

    //+------------------------------------------------------------------+
    // Here is the beginning of your open buy rule strategy
    //+------------------------------------------------------------------+
    if ((Bid>Ask))
    //+------------------------------------------------------------------+
    // Here is the end of your buy rule strategy
    //+------------------------------------------------------------------+
    //+------------------------------------------------------------------+
    // Here is the beginning of your open sell rule strategy
    //+------------------------------------------------------------------+
    if ((Bid<Ask))
    //+------------------------------------------------------------------+
    // Here is the end of your sell rule strategy
    //+------------------------------------------------------------------+
    //+------------------------------------------------------------------+
    // Here is the beginning of your close buy rule strategy
    //+------------------------------------------------------------------+
    if ((Bid<Ask))
    //+------------------------------------------------------------------+
    // Here is the end of your close buy rule strategy
    //+------------------------------------------------------------------+
    //+------------------------------------------------------------------+
    // Here is your close sell rule
    //+------------------------------------------------------------------+
    //+------------------------------------------------------------------+
    // Here is the beginning of your close sell rule strategy
    //+------------------------------------------------------------------+
    if ((Bid>Ask))
    //+------------------------------------------------------------------+
    //Here is the end of your close sell rule strategy
    //+------------------------------------------------------------------+
  • lefeuvr3

    Ici un maquette plus courte avec des ordres d'entrée mais pas d'ordre de sortie ….sortie qui se fera donc sur Take profit ...Trailing stop ...ou Stop loss
    Code
    //+------------------------------------------------------------------+ //| EA . BASIC MODEL.mq4 // SANS ORDRE DE SORTIE //| QPG //+------------------------------------------------------------------+ extern int MagicNumber=10001; extern double Lots =0.1; extern double StopLoss=50; extern double TakeProfit=50; extern int TrailingStop=50; extern int Slippage=3; //+------------------------------------------------------------------+ // expert start function //+------------------------------------------------------------------+ int start() { double MyPoint=Point; if(Digits==3 || Digits==5) MyPoint=Point*10; double TheStopLoss=0; double TheTakeProfit=0; if( TotalOrdersCount()==0 ) { int result=0; //+------------------------------------------------------------------+ // Here is your open buy rule //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ // Here is your open buy rule strategie beginning //+------------------------------------------------------------------+ if((Bid>Ask)) // Here is your open buy rule //+------------------------------------------------------------------+ // Here is your open buy rule strategie end //+------------------------------------------------------------------+ { result=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,"EA MODEL",MagicNumber,0,Blue); if(result>0) { TheStopLoss=0; TheTakeProfit=0; if(TakeProfit>0) TheTakeProfit=Ask+TakeProfit*MyPoint; if(StopLoss>0) TheStopLoss=Ask-StopLoss*MyPoint; if(OrderSelect(result,SELECT_BY_TICKET)) bool modif1=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(TheStopLoss,Digits),NormalizeDouble(TheTakeProfit,Digits),0,Green); } return(0); } //+------------------------------------------------------------------+ // Here is your open sell rule //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ // Here is your open sell rule strategie beginning //+------------------------------------------------------------------+ if((Bid<Ask)) // Here is your open sell rule //+------------------------------------------------------------------+ // Here is your open sell rule strategie end //+------------------------------------------------------------------+ { result=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,0,"EA MODEL",MagicNumber,0,Red); if(result>0) { TheStopLoss=0; TheTakeProfit=0; if(TakeProfit>0) TheTakeProfit=Bid-TakeProfit*MyPoint; if(StopLoss>0) TheStopLoss=Bid+StopLoss*MyPoint; if(OrderSelect(result,SELECT_BY_TICKET)) bool modif2=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(TheStopLoss,Digits),NormalizeDouble(TheTakeProfit,Digits),0,Green); } return(0); } } for(int cnt=0;cnt<OrdersTotal();cnt++) { if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) if(OrderType()<=OP_SELL && OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber ) { if(OrderType()==OP_BUY) { if(TrailingStop>0) { if(Bid-OrderOpenPrice()>MyPoint*TrailingStop) { if(OrderStopLoss()<Bid-MyPoint*TrailingStop) { bool modif3= OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TrailingStop*MyPoint,OrderTakeProfit(),0,Green); return(0); } } } } else { if(TrailingStop>0) { if((OrderOpenPrice()-Ask)>(MyPoint*TrailingStop)) { if((OrderStopLoss()>(Ask+MyPoint*TrailingStop)) || (OrderStopLoss()==0)) { bool modif4= OrderModify(OrderTicket(),OrderOpenPrice(),Ask+MyPoint*TrailingStop,OrderTakeProfit(),0,Red); return(0); } } } } } } return(0); } int TotalOrdersCount() { int result=0; for(int i=0;i<OrdersTotal();i++) { if (OrderSelect(i,SELECT_BY_POS ,MODE_TRADES)) if (OrderMagicNumber()==MagicNumber) result++; } return (result); }
    Dans ce programme il vous suffit de remplacer le texte en rouge, par votre stratégie.
    La sortie qui se fera donc sur Take profit ...Trailing stop ...ou Stop loss.

    //+------------------------------------------------------------------+
    // Here is the beginning of your open buy rule strategy
    //+------------------------------------------------------------------+
    if ((Bid>Ask))
    //+------------------------------------------------------------------+
    // Here is the end of your buy rule strategy
    //+------------------------------------------------------------------+
    //+------------------------------------------------------------------+
    // Here is the beginning of your open sell rule strategy
    //+------------------------------------------------------------------+
    if ((Bid<Ask))
    //+------------------------------------------------------------------+
    // Here is the end of your sell rule strategy
    //+------------------------------------------------------------------+