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

MODULO LONG SHORT STOPLOSS TRAILINGSTOP BREAKEVEN

  • lefeuvr3

    Le Takeprofit est assuré par le Trailingstop suiveur
    Code
    //+------------------------------------------------------------------+ //| MODULO. LG SH. SL TS BREAKEVEN.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" //+------------------------------------------------------------------+ //| MODULO LONG SHORT TP SL TS BREAKEVEN.mq4 | //| Copyright 2019, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| MODULO VERSION 4 LONG SHORT.mq4.mq4 | //| QPG | //| https://www.mql5.com | //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| PARAMETRES EURUSD 1 MN | //+------------------------------------------------------------------+ int MagicNumber=20181005; //magic extern double LotFactorLONG=150 ; // double LotFactorSHORT = 130; //lotsize factor extern double MultiplierLONG = 0.8; // double MultiplierSHORT = 0.7; //from 0.04...to 0.09 int long_courtLONG=1; // 0 = Long & 1 = Court int long_courtSHORT=1; // 0 = Long & 1 = Court extern int gainLONG=50; // no comment ;) int gainSHORT=0; // no comment ;) input int ecartLONG=26;// Ecart : 150, 1000, ou 1500 selon les paires.. int ecartSHORT=18;// Ecart : 150, 1000, ou 1500 selon les paires extern bool trail=true; extern double TrailingStop=62; double pips = 0.00001; //leave as default for 5 digit brokers int stopOK = 0; // ne pas modifier int sendOK = 0; // ne pas modifier extern int hour=23; int c=0; double LotSizeLONG; //lotsize double SizeLotLONG; double LotSizeSHORT; //lotsize double SizeLotSHORT; //extern int profit=85; extern int stop =35; extern int Slippage =0; //---- double TP=0,SL=0,TR; //+------------------------------------------------------------------+ //| Hidden StopLoss Calculations | //+------------------------------------------------------------------+ void StopLoss() { double MyPoint=Point; if(Digits==3 || Digits==5) MyPoint=Point*10; // TP=profit*MyPoint; SL=stop*MyPoint; double OrdP=0,OrdTP=0,OrdSL=0; for(int i=0; i<OrdersTotal(); i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) if(OrderMagicNumber()==MagicNumber && Symbol()==OrderSymbol()) { OrdP=OrderProfit()-MathAbs(OrderSwap())-MathAbs(OrderCommission()); OrdSL=(-1)*SL*OrderLots()*MarketInfo(OrderSymbol(),MODE_TICKVALUE)/Point; OrdTP=TP*OrderLots()*MarketInfo(OrderSymbol(),MODE_TICKVALUE)/Point; if(OrdP>OrdTP || OrdP<OrdSL) { if(OrderType()==OP_BUY) bool OrdClP=OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,clrGreen); if(OrderType()==OP_SELL) bool OrdClL=OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,clrYellow); } } } } //+------------------------------------------------------------------+ //| Trailing Stoploss après Breakeven | //+------------------------------------------------------------------+ void trail() { for (int i = OrdersTotal()-1; i >= 0; i --) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) if(OrderSymbol()==Symbol()) { if(OrderType()==OP_BUY) { if(Bid - OrderOpenPrice() > TrailingStop *10* MarketInfo(OrderSymbol(),MODE_POINT)) { if(((OrderStopLoss() < Bid - TrailingStop *10* MarketInfo(OrderSymbol(), MODE_POINT))&& ((Bid-OrderOpenPrice())>(Point*TrailingStop)))|| (OrderStopLoss()==0)) { bool modify1=OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TrailingStop*10*MarketInfo(OrderSymbol(),MODE_POINT),OrderTakeProfit(),Red); } } } else if(OrderType()==OP_SELL) { if(OrderOpenPrice()-Ask>TrailingStop*10*MarketInfo(OrderSymbol(),MODE_POINT)) { if(((OrderStopLoss()>Ask+TrailingStop*10*MarketInfo(OrderSymbol(),MODE_POINT))&& ((OrderOpenPrice()-Ask)>(Point*TrailingStop)))|| (OrderStopLoss()==0)) { bool modify2=OrderModify(OrderTicket(),OrderOpenPrice(), Ask+TrailingStop*10*MarketInfo(OrderSymbol(),MODE_POINT),OrderTakeProfit(),Red); } } } } } } //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { if(trail) trail(); double MyPoint=Point; if(Digits==3 || Digits==5) MyPoint=Point*10; if(IsNewCandle()) { Lot_Volume(); //calc lotsize return(0); } //MODIF*********** if (!IsTradeContextBusy() && IsTradeAllowed()) if(c==0){if(OrderSend(Symbol(), OP_BUY, SizeLotLONG, Ask, 0, Ask - (stop * Point),/* Ask + (profit * Point)*/0, "MODULO LONG SHORT TP SL TS"))c=1;} // if(c==0){if(OrderSend(Symbol(), OP_BUY, SizeLotSHORT, Ask, 0, Ask - (stop * Point),/* Ask + (profit * Point)*/0, "MODULO LONG SHORT TP SL TS"))c=1;} // //MODIF*********** Comment(AccountEquity() - AccountBalance()); int type = OrderType(); int type2 = OrderType(); if (Hour()==1 && Minute()==1 && Seconds()==1 && sendOK==0) { sendOK=1;stopOK=0; //+------------------------------------------------------------------+ if(long_courtLONG==1) if (!IsTradeContextBusy() && IsTradeAllowed()) { int ticket5= OrderSend(Symbol(), OP_SELLSTOP, LotSizeLONG, Bid-ecartLONG*pips, 0, 0, 0, 0); if (!IsTradeContextBusy() && IsTradeAllowed()) if(long_courtSHORT==1) { int ticket6= OrderSend(Symbol(), OP_SELLSTOP, LotSizeSHORT, Bid-ecartSHORT*pips, 0, 0, 0,0); if(ticket5<0) { Print("OrderSend failed with error #",GetLastError()); } else Print("OrderSend placed successfully"); } if(ticket6<0) { Print("OrderSend failed with error #",GetLastError()); } else Print("OrderSend placed successfully"); } //+------------------------------------------------------------------+ if(long_courtLONG==0) if (!IsTradeContextBusy() && IsTradeAllowed()) { int ticket1= OrderSend(Symbol(), OP_BUYSTOP, LotSizeLONG, Ask+ecartLONG*pips, 0, 0, 0,0); if(long_courtSHORT==0) if (!IsTradeContextBusy() && IsTradeAllowed()) { int ticket2= OrderSend(Symbol(), OP_BUYSTOP, LotSizeSHORT, Ask+ecartSHORT*pips, 0, 0, 0,0); if(ticket1<0) { Print("OrderSend failed with error #",GetLastError()); } else Print("OrderSend placed successfully"); } if(ticket2<0) { Print("OrderSend failed with error #",GetLastError()); } else Print("OrderSend placed successfully"); } //+------------------------------------------------------------------+ } if (Hour()>=hour && stopOK==0) { stopOK=1;sendOK=0; int u = OrdersTotal() - 1; while (u >= 0) { if(OrderSelect(u, SELECT_BY_POS)) if (type == OP_SELLSTOP || type == OP_BUYSTOP) { bool modif3= OrderDelete(OrderTicket()); } u -= 1; } } if (AccountEquity()>= AccountBalance()+ gainLONG) if (AccountEquity()>= AccountBalance()+ gainSHORT) { int w = OrdersTotal() - 1; while (w >= 0) { if(OrderSelect(w, SELECT_BY_POS)) { bool modif1= OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID),2); bool modif2= OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK),2); } w -= 1; } //MODIF*********** if (!IsTradeContextBusy() && IsTradeAllowed()) int ticket3=OrderSend(Symbol(), OP_BUY, SizeLotLONG, Ask, 0, Ask - (stop * Point),/* Ask + (profit * Point)*/0, "MODULO LONG SHORT TP SL TS"); //(OrderSend(Symbol(), OP_BUY, SizeLotLONG, Ask, 0, Ask - (stop1 * Point), Ask + (profit1 * Point), 0, "MODULO VERSION 4 LONG SHORT") int ticket4=OrderSend(Symbol(), OP_BUY, SizeLotSHORT, Ask, 0, Ask - (stop * Point),/* Ask + (profit * Point)*/0, "MODULO LONG SHORT TP SL TS"); //--- place market order to buy 1 lot if(ticket3<0) { Print("OrderSend failed with error #",GetLastError()); } else Print("OrderSend placed successfully"); if(ticket4<0) { Print("OrderSend failed with error #",GetLastError()); } else Print("OrderSend placed successfully"); //MODIF*********** } return(0); } //+------------------------------------------------------------------+ //insuring its a new candle function //+------------------------------------------------------------------+ bool IsNewCandle() { static int BarsOnChart=0; if (Bars == BarsOnChart) return (false); BarsOnChart = Bars; return(true); } //+------------------------------------------------------------------+ //Calculates Lot Size based on balance and factor //+------------------------------------------------------------------+ double Lot_Volume() { LotSizeLONG=AccountBalance() * 0.01 /LotFactorLONG ; SizeLotLONG=LotSizeLONG*MultiplierLONG; return(LotSizeLONG); return(SizeLotLONG); LotSizeSHORT=AccountBalance() * 0.01 /LotFactorSHORT ; SizeLotSHORT=LotSizeSHORT*MultiplierSHORT; return(LotSizeSHORT); return(SizeLotSHORT); } //+------------------------------------------------------------------+
    lefeuvr3 a joint une image
    modulo-long-short-stoploss-trailingstop-breakeven-11761