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

Besoin d'aide, retirer la partie 1 de l'EA

  • lefeuvr3

    J'ai un Expert advisor avec 2 strategies en UT 1 heure sur EURUSD
    Je voudrais ne garder que la stratégie 2
    Mais quand j'enlève la stratégie 1 ,contre toute attente, la stratégie 2 ne démarre pas et le robot ne fait aucun trade….pouvez vous me donner un coup de main ….merci d'avance
    ps : avec cette strategie on devrait multiplier en 6 mois le capital par 4 ou 5 en 1 soixante de trades
    Code
    //+------------------------------------------------------------------+ //| QPG OPEN CLOSE BASE RSI SAR.mq4 | //| EURUSD 1 HEURE QPG | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "QPG" #property link "https://www.mql5.com" #property version "1.00" extern string Per="periode MM"; extern int PEROM1=4; extern int PERCM1=4; extern int PEROM15=4; extern int PERCM15=1; extern int PEROH1=1; extern int PERCH1=4; extern string mod="Mode MM"; extern int MODEMA=1; extern int adxperiod =27; extern int adxthreshold =22; extern int v0=0; extern int v5=0; extern int shift0pen0 =1; extern int shift0pen1=0; extern int shiftClose0=0; extern int shiftClose1=1; extern double LotFactor=24; //lotsize factor bool Long_Short= true,Long_Only=false,Short_Only=false; bool Auto_Disable_EA=true; extern double TakeProfit = 100; extern bool use_bb=true,use_rsi = true,use_sar=true; extern double step=0.50,maximum=0.53; extern double InitialStop = 0; extern bool trail=true; extern double TrailingStop=100; extern int MaxTrades = 5000; extern int Pips = 100; extern int SecureProfit = 130; extern double EURUSDPipValue = 10; extern double GBPUSDPipValue = 10; extern double USDCHFPipValue = 10; extern double USDJPYPipValue = 9.715; extern int magic = 222; extern int bb_period=20; extern int bb_deviation=0; extern int bb_shift=1; extern int StartHour = 0; extern int EndHour = 24; //+------------------------------------------------------------------+ int PRICE_TYPE=5; int OpenOrders = 0, cnt = 0; int slippage = 50; double sl = 0, tp = 0; double BuyPrice = 0, SellPrice = 0; double lotsi = 0, mylotsi = 0; int mode = 0, myOrderType = 0; bool ContinueOpening = True; double LastPrice = 0; int PreviousOpenOrders = 0; double Profit = 0; int LastTicket = 0, LastType = 0,res; double LastClosePrice = 0, LastLots = 0; double PipValue = 0; string text = "", text2 = ""; int ActiveOrders=0; double AllTP=0; int rsi_per5=0; int rsi_per15=0; int rsi_per30=0; int rsi_per60=0; //+------------------------------------------------------------------+ //| Trailing Stop | //+------------------------------------------------------------------+ void trail() { for(int i=0; i<OrdersTotal(); i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) if(OrderSymbol()==Symbol()) { if(OrderType()==OP_BUY) { if(Bid - OrderOpenPrice() > TrailingStop * MarketInfo(OrderSymbol(),MODE_POINT)) { if(OrderStopLoss() < Bid - TrailingStop * MarketInfo(OrderSymbol(), MODE_POINT)) { bool modify1=OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TrailingStop*MarketInfo(OrderSymbol(),MODE_POINT),OrderTakeProfit(),Red); } } } else if(OrderType()==OP_SELL) { if(OrderOpenPrice()-Ask>TrailingStop*MarketInfo(OrderSymbol(),MODE_POINT)) { if((OrderStopLoss()>Ask+TrailingStop*MarketInfo(OrderSymbol(),MODE_POINT)) || (OrderStopLoss()==0)) { bool modify2=OrderModify(OrderTicket(),OrderOpenPrice(), Ask+TrailingStop*MarketInfo(OrderSymbol(),MODE_POINT),OrderTakeProfit(),Red); } } } } } } //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- To assign a unique Magic number for each Pair. MathSrand(MathCeil(Ask*100)); magic= MathRand(); return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { if(trail) trail(); //---- lotsi = AccountBalance() * 0.0001 /LotFactor; //---- if(lotsi > 100) lotsi = 100; OpenOrders = 0; //---- for(cnt = 0; cnt < OrdersTotal(); cnt++) { if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) //---- if(OrderSymbol() == Symbol()) OpenOrders++; } //---- if(OpenOrders < 1) { ActiveOrders=0; if(TimeHour(TimeCurrent()) < StartHour) return(0); //---- if(TimeHour(TimeCurrent()) > EndHour) return(0); } //---- if(Symbol() == "EURUSD") PipValue = EURUSDPipValue; //---- if(Symbol() == "GBPUSD") PipValue = GBPUSDPipValue; //---- if(Symbol() == "USDJPY") PipValue = USDJPYPipValue; //---- if(Symbol() == "USDCHF") PipValue = USDCHFPipValue; //---- if(PipValue == 0) { PipValue = 5; } //---- if(PreviousOpenOrders > OpenOrders) for(cnt = OrdersTotal(); cnt >= 0; cnt--) { if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) mode = OrderType(); //---- if(OrderSymbol() == Symbol()) { if(mode == OP_BUY) if(OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), slippage, Green)) //---- if(mode == OP_SELL) if(OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), slippage, Green)) return(0); } } PreviousOpenOrders = OpenOrders; //---- if(OpenOrders >= MaxTrades) ContinueOpening = False; else ContinueOpening = True; //---- if(LastPrice == 0) for(cnt = 0; cnt < OrdersTotal(); cnt++) { if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) mode = OrderType(); //---- if(OrderSymbol() == Symbol()) { LastPrice = OrderOpenPrice(); //---- if(mode == OP_BUY) myOrderType = 2; //---- if(mode == OP_SELL) myOrderType = 1; } } //---- if(OpenOrders < 1) //+------------------------------------------------------------------+ //STRATEGIE 1 //+------------------------------------------------------------------+ { myOrderType = 3; //---- double upBB=iBands(Symbol(),5,bb_period,bb_deviation,0,PRICE_OPEN,MODE_UPPER,bb_shift); double loBB=iBands(Symbol(),5,bb_period,bb_deviation,0,PRICE_OPEN,MODE_LOWER,bb_shift); int bar1=iBars(Symbol(),5); int bar2=iBars(Symbol(),15); int bar3=iBars(Symbol(),30); int bar4=iBars(Symbol(),60); datetime time=iTime(Symbol(),5,0); int shift1=iBarShift(Symbol(),5,time,true); int shift2=iBarShift(Symbol(),15,time,true); int shift3=iBarShift(Symbol(),30,time,true); int shift4=iBarShift(Symbol(),60,time,true); double RSI1 =iRSI(Symbol(),5,rsi_per5,PRICE_TYPE,shift1); double RSI2 =iRSI(Symbol(),15,rsi_per15,PRICE_TYPE,shift2); double RSI3 =iRSI(Symbol(),30,rsi_per30,PRICE_TYPE,shift3); double RSI4 =iRSI(Symbol(),60,rsi_per60,PRICE_TYPE,shift4); double mabela = iSAR(Symbol(), 5,step,maximum,shift1); double mabelb = iSAR(Symbol(), 15,step,maximum,shift2); double mabelc = iSAR(Symbol(), 30,step,maximum,shift3); //use all three signals if(use_rsi && use_bb && use_sar) // use all three signals { if(RSI1>50 && RSI2>50 && RSI3>50 && RSI4>50 && High[bb_shift]>=upBB && mabela< Low[0] && mabelb < Low[0] && mabelc < Low[0] ) myOrderType = 2; if(RSI1<50 && RSI2<50 && RSI3<50 && RSI4<50 && Low[bb_shift]<=loBB && mabela> High[0]&& mabelb > High[0]&& mabelc > High[0]) myOrderType = 1; } if(!use_rsi && use_bb && use_sar) // use both bba and sar { if( High[bb_shift]>=upBB && mabela< Low[0] && mabelb < Low[0] && mabelc < Low[0] ) myOrderType = 2; if( Low[bb_shift]<=loBB && mabela> High[0]&& mabelb > High[0]&& mabelc > High[0]) myOrderType = 1; } if(use_rsi && !use_bb && use_sar) // use both rsi and sar { if(RSI1>50 && RSI2>50 && RSI3>50 && RSI4>50 && mabela< Low[0] && mabelb < Low[0] && mabelc < Low[0] ) myOrderType = 2; if(RSI1<50 && RSI2<50 && RSI3<50 && RSI4<50 && mabela> High[0]&& mabelb > High[0]&& mabelc > High[0]) myOrderType = 1; } if(use_rsi && use_bb && !use_sar) // use both rsi and bb { if(RSI1>50 && RSI2>50 && RSI3>50 && RSI4>50 && High[bb_shift]>=upBB ) myOrderType = 2; if(RSI1<50 && RSI2<50 && RSI3<50 && RSI4<50 && Low[bb_shift]<=loBB ) myOrderType = 1; } else if(use_rsi && !use_bb && !use_sar) // use only rsi { if(RSI1>50 && RSI2>50 && RSI3>50 && RSI4>50) myOrderType = 2; if(RSI1<50 && RSI2<50 && RSI3<50 && RSI4<50) myOrderType = 1; } else if(!use_rsi && use_bb && !use_sar) // use only bb { if(High[bb_shift]>=upBB )myOrderType = 2; // return(buy); if(Low[bb_shift]<=loBB ) myOrderType = 1;// return(sell); } else if(!use_rsi && !use_bb && use_sar) // use only sar { if( mabela< Low[0] && mabelb < Low[0] && mabelc < Low[0] ) myOrderType = 2; if( mabela> High[0]&& mabelb > High[0]&& mabelc > High[0]) myOrderType = 1; } //+------------------------------------------------------------------+ // FIN STRATEGIE 2 //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ // DEBUT STRATEGIE 2 //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ // BUY //+------------------------------------------------------------------+ { // Here is your open buy rule if(iMA(NULL,PERIOD_M1,PEROM1,0,MODEMA,PRICE_OPEN,shift0pen0)>iMA(NULL,PERIOD_M1,PERCM1,0,MODEMA,PRICE_CLOSE,shiftClose0)&&iMA(NULL,PERIOD_M1,PEROM1,1,MODEMA,PRICE_OPEN,shift0pen1)<iMA(NULL,PERIOD_M1,PERCM1,1,MODEMA,PRICE_CLOSE,shiftClose1)&& iMA(NULL,PERIOD_M15,PEROM15,0,MODEMA,PRICE_OPEN,shift0pen0)>iMA(NULL,PERIOD_M15,PERCM15,0,MODEMA,PRICE_CLOSE,shiftClose0)&&iMA(NULL,PERIOD_M15,PEROM15,1,MODEMA,PRICE_OPEN,shift0pen1)<iMA(NULL,PERIOD_M15,PERCM15,1,MODEMA,PRICE_CLOSE,shiftClose1)&& iMA(NULL,PERIOD_H1,PEROH1,0,MODEMA,PRICE_OPEN,shift0pen0)>iMA(NULL,PERIOD_H1,PERCH1,0,MODEMA,PRICE_CLOSE,shiftClose0)&&iMA(NULL,PERIOD_H1,PEROH1,1,MODEMA,PRICE_OPEN,shift0pen1)<iMA(NULL,PERIOD_H1,PERCH1,1,MODEMA,PRICE_CLOSE,shiftClose1) // Here is your open buy rule &&(iADX(Symbol(),0,adxperiod,PRICE_CLOSE,MODE_MAIN,0)>adxthreshold )&&(Volume[v0]> Volume[v5])) myOrderType = 2; //+------------------------------------------------------------------+ // SELL //+------------------------------------------------------------------+ // Here is your open Sell rule if(iMA(NULL,PERIOD_M1,PEROM1,0,MODEMA,PRICE_OPEN,shift0pen0)<iMA(NULL,PERIOD_M1,PERCM1,0,MODEMA,PRICE_CLOSE,shiftClose0)&&iMA(NULL,PERIOD_M1,PEROM1,1,MODEMA,PRICE_OPEN,shift0pen1)>iMA(NULL,PERIOD_M1,PERCM1,1,MODEMA,PRICE_CLOSE,shiftClose1)&& // Here is your open Sell rule iMA(NULL,PERIOD_M15,PEROM15,0,MODEMA,PRICE_OPEN,shift0pen0)<iMA(NULL,PERIOD_M15,PERCM15,0,MODEMA,PRICE_CLOSE,shiftClose0)&&iMA(NULL,PERIOD_M15,PEROM15,1,MODEMA,PRICE_OPEN,shift0pen1)>iMA(NULL,PERIOD_M15,PERCM15,1,MODEMA,PRICE_CLOSE,shiftClose1) &&iMA(NULL,PERIOD_H1,PEROH1,0,MODEMA,PRICE_OPEN,shift0pen0)<iMA(NULL,PERIOD_H1,PERCH1,0,MODEMA,PRICE_CLOSE,shiftClose0)&&iMA(NULL,PERIOD_H1,PEROH1,1,MODEMA,PRICE_OPEN,shift0pen1)>iMA(NULL,PERIOD_H1,PERCH1,1,MODEMA,PRICE_CLOSE,shiftClose1) &&(iADX(Symbol(),0,adxperiod,PRICE_CLOSE,MODE_MAIN,0)>adxthreshold )&&(Volume[v0]> Volume[v5])) myOrderType = 1; //+------------------------------------------------------------------+ } } // end of if...*/ //+------------------------------------------------------------------+ // FIN STRATEGIE 2 //+------------------------------------------------------------------+ Profit = 0; LastTicket = 0; LastType = 0; LastClosePrice = 0; LastLots = 0; //---- for(cnt = 0; cnt < OrdersTotal(); cnt++) { if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) //---- if(OrderSymbol() == Symbol()) { LastTicket = OrderTicket(); //---- if(OrderType() == OP_BUY) LastType = OP_BUY; //---- if(OrderType() == OP_SELL) LastType = OP_SELL; LastClosePrice = OrderClosePrice(); LastLots = OrderLots(); //---- if(LastType == OP_BUY) { if(OrderClosePrice() < OrderOpenPrice()) Profit = Profit - (OrderOpenPrice() - OrderClosePrice())*OrderLots() / Point; //---- if(OrderClosePrice() > OrderOpenPrice()) Profit = Profit + (OrderClosePrice() - OrderOpenPrice())*OrderLots() / Point; } //---- if(LastType==OP_SELL) { if(OrderClosePrice() > OrderOpenPrice()) Profit = Profit - (OrderClosePrice() - OrderOpenPrice())*OrderLots() / Point; //---- if(OrderClosePrice() < OrderOpenPrice()) Profit = Profit + (OrderOpenPrice() - OrderClosePrice())*OrderLots() / Point; } } } Profit = Profit*PipValue; text2 = "Profit: $" + DoubleToStr(Profit,2) + " +/-"; //---- // if(OpenOrders >= (MaxTrades - OrderstoProtect) && AccountProtection == 1) if(Profit >= SecureProfit) { if(OrderClose(LastTicket, LastLots, LastClosePrice, slippage, Yellow)) ContinueOpening = False; return(0); } //---- if(myOrderType == 1 && ContinueOpening && (Long_Short|| Short_Only)) { if((Bid - LastPrice) >= Pips*Point || OpenOrders < 1) { SellPrice = Bid; LastPrice = 0; //---- if(TakeProfit == 0) tp = 0; else tp = SellPrice - TakeProfit*Point; //---- if(InitialStop == 0) sl = 0; else sl = SellPrice + InitialStop*Point; //---- if(OpenOrders >=2) { mylotsi = 2*mylotsi; //---- } else mylotsi=lotsi; //---- res=OrderSend(Symbol(), OP_SELL, mylotsi, SellPrice, slippage, sl, tp,"MTF EA Sell",magic, 0, Red); if (res < 0) mylotsi=mylotsi/2; // i.e if opening of order failed. else { ActiveOrders++; // increament open orders. if(ActiveOrders==1) AllTP=tp; else ModifyTP(); } return(0); } } if(myOrderType == 2 && ContinueOpening&& (Long_Short|| Long_Only)) { if((LastPrice-Ask) >= Pips*Point || OpenOrders < 1) { BuyPrice = Ask; LastPrice = 0; //---- if(TakeProfit == 0) tp = 0; else tp = BuyPrice + TakeProfit*Point; //---- if(InitialStop==0) sl = 0; else sl = BuyPrice - InitialStop*Point; //---- if(OpenOrders >=2) { mylotsi = 2*mylotsi; } else mylotsi = lotsi; //---- // if(mylotsi > 100) // mylotsi = 100; res=OrderSend(Symbol(), OP_BUY, mylotsi, BuyPrice, slippage, sl, tp, "MTF EA Buy", magic, 0,Blue); if (res < 0) mylotsi=mylotsi/2; // i.e if opening of order failed. else { ActiveOrders++; // increament open orders. if(ActiveOrders==1) AllTP=tp; else ModifyTP(); } return(0); } } //---- return(0); } void ModifyTP() { // int cnt; // if we have opened positions we take care of them for(cnt =0;cnt <=OrdersTotal() ; cnt++) { if( OrderSelect(cnt, SELECT_BY_POS,MODE_TRADES)) //---- if(OrderSymbol() == Symbol() && OrderMagicNumber()==magic) { if(OrderType() == OP_SELL) if( OrderModify(OrderTicket(),OrderOpenPrice(), OrderStopLoss(),tp, 1000, Purple)) Comment("\n\n\n\n MODIFYING ORDER........"); // return(0); } if(OrderType() == OP_BUY) { if( OrderModify(OrderTicket(), OrderOpenPrice(),OrderStopLoss(), tp, 1000, Purple))Comment("\n\n\n\n MODIFYING ORDER........"); // return(0); } } }// double dailyprofit() { int day=Day(); double res1=0,res2=0; for(int i=0; i<OrdersHistoryTotal(); i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) if(OrderMagicNumber()!=magic) continue; if(TimeDay(OrderOpenTime())==day) res1+=OrderProfit(); } for(i=0; i<OrdersTotal(); i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) if(OrderMagicNumber()!=magic) continue; if(TimeDay(OrderOpenTime())==day) res2+=OrderProfit(); } return(res1+res2); } //+------------------------------------------------------------------+ //Calculates Lot Size based on balance and factor //+------------------------------------------------------------------+ double Lot_Volume() { mylotsi=AccountBalance() * 0.01 /LotFactor ; return(mylotsi); } //+---------------------------------------------
  • Lebenet

    Je vais voir si je trouve quelque chose.
    Quelle partie du code enlèves-tu ?
  • lefeuvr3

    Bonjour
    Merci pour ton intervention
    Je voudrais enlever toute le stratégie n°1 et faire fonctionner la n°2