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

QPG RANGE MTF

  • lefeuvr3

    EA utilisant un trading en range ,sur plusieurs unités de temps.

    Code
    //+------------------------------------------------------------------+ //| QPG RANGE MTF.mq4 | //| Copyright 2019, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2019, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" //#property strict //+------------------------------------------------------------------+ double point = MarketInfo(Symbol(), MODE_POINT); int spread = MarketInfo(Symbol(), MODE_SPREAD); extern int size = 0; int shiftOpenBuy =0; int shiftCloseBuy =1; int shiftOpenSell =0; int shiftCloseSell =1; extern string Name_EA = "QPG RANGE MTF"; extern bool PERIOD_M5=true; extern bool PERIOD_M15=true; extern bool PERIOD_M30=true; extern bool PERIOD_H1=true; extern bool PERIOD_H4=true; extern bool PERIOD_D1=true; extern int shift1=3; extern int MagicNumber=18112019; extern double LotFactor =104; //lotsize factor double lot; double StopLoss=0; double TakeProfit=0; extern int TrailingStop=11; int Slippage=3; int ras; //+------------------------------------------------------------------+ // 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//Ici votre strategie d'achat //+------------------------------------------------------------------+ // OPEN BUY //+------------------------------------------------------------------+ if(PERIOD_M5==true) if(PERIOD_M15==true) if(PERIOD_M30==true) if(PERIOD_H1==true) if(PERIOD_H4==true) if(PERIOD_D1==true) if ((iOpen(Symbol(),PERIOD_M1,shiftOpenBuy)> iClose(Symbol(),PERIOD_M1, shiftCloseBuy)+ (size + spread)*point)) if((iClose(NULL,PERIOD_M5,shift1)>iOpen(NULL,PERIOD_M5,shift1))) if((iClose(NULL,PERIOD_M15,shift1)>iOpen(NULL,PERIOD_M15,shift1))) if((iClose(NULL,PERIOD_M30,shift1)>iOpen(NULL,PERIOD_M30,shift1))) if((iClose(NULL,PERIOD_H1,shift1)>iOpen(NULL,PERIOD_H1,shift1))) if((iClose(NULL,PERIOD_H4,shift1)>iOpen(NULL,PERIOD_H4,shift1))) if((iClose(NULL,PERIOD_D1,shift1)>iOpen(NULL,PERIOD_D1,shift1))) if((Bid >iOpen(Symbol(),PERIOD_M5,0))) if((Bid >iOpen(Symbol(),PERIOD_M15,0))) if((Bid >iOpen(Symbol(),PERIOD_M30,0))) if((Bid >iOpen(Symbol(),PERIOD_H1,0))) if((Bid >iOpen(Symbol(),PERIOD_H4,0))) if((Bid >iOpen(Symbol(),PERIOD_D1,0))) //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //if (!IsTradeContextBusy() && IsTradeAllowed()) { result=OrderSend(Symbol(),OP_BUY, NR(Lot_Volume()),Ask,Slippage,0,0,"QPG RANGE MTF",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//Ici votre strategie de vente //+------------------------------------------------------------------+ // OPEN SELL //+------------------------------------------------------------------+ if(PERIOD_M5==true) if(PERIOD_M15==true) if(PERIOD_M30==true) if(PERIOD_H1==true) if(PERIOD_H4==true) if(PERIOD_D1==true) if (( iOpen(Symbol(),0, shiftOpenSell)< iClose(Symbol(),0, shiftCloseSell)- (size + spread)*point)) if((iClose(NULL,PERIOD_M5,shift1)<iOpen(NULL,PERIOD_M5,shift1))) if((iClose(NULL,PERIOD_M15,shift1)<iOpen(NULL,PERIOD_M15,shift1))) if((iClose(NULL,PERIOD_M30,shift1)<iOpen(NULL,PERIOD_M30,shift1))) if((iClose(NULL,PERIOD_H1,shift1)<iOpen(NULL,PERIOD_H1,shift1))) if((iClose(NULL,PERIOD_H4,shift1)<iOpen(NULL,PERIOD_H4,shift1))) if((iClose(NULL,PERIOD_D1,shift1)<iOpen(NULL,PERIOD_D1,shift1))) if((Bid <iOpen(Symbol(),PERIOD_M5,0))) if((Bid <iOpen(Symbol(),PERIOD_M15,0))) if((Bid <iOpen(Symbol(),PERIOD_M30,0))) if((Bid <iOpen(Symbol(),PERIOD_H1,0))) if((Bid <iOpen(Symbol(),PERIOD_H4,0))) if((Bid <iOpen(Symbol(),PERIOD_D1,0))) //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //if (!IsTradeContextBusy() && IsTradeAllowed()) { result=OrderSend(Symbol(),OP_SELL, NR(Lot_Volume()),Bid,Slippage,0,0,"QPG RANGE MTF",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); } //+------------------------------------------------------------------+ //Calculates Lot Size based on balance and factor //+------------------------------------------------------------------+ double NR(double thelot) { double maxlots=MarketInfo(Symbol(),MODE_MAXLOT), minilot=MarketInfo(Symbol(),MODE_MINLOT), lstep=MarketInfo(Symbol(),MODE_LOTSTEP); double lots=lstep*NormalizeDouble(thelot/lstep,0); lots=MathMax(MathMin(maxlots,lots),minilot); return (lots); } //+------------------------------------------------------------------+ double Lot_Volume() { lot=AccountBalance() * 0.01 /LotFactor ; return(lot); } //+------------------------------------------------------------------+ //| //+------------------------------------------------------------------+ /* void closeall() { for(int i=OrdersTotal()-1; i>=0; i--) { if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue; if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=MagicNumber) continue; if(OrderType()>1) ras=OrderDelete(OrderTicket()); else { if(OrderType()==0) ras=OrderClose(OrderTicket(),OrderLots(),Bid,3,CLR_NONE); else ras=OrderClose(OrderTicket(),OrderLots(),Ask,3,CLR_NONE); } } } //+------------------------------------------------------------------+ //| //+------------------------------------------------------------------+ */
    lefeuvr3 a joint une image
    qpg-range-mtf-11842