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

MULTISTAR X5

  • lefeuvr3

    Code
    //+------------------------------------------------------------------+ //| MULTISTAR X5.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 //+------------------------------------------------------------------+ extern double LotFactor =40; //lotsize factor double lot; extern int MagicNumber=200213; extern string mn="MULTISTAR X2"; extern double StopLoss=0; extern double TakeProfit=29; extern int TrailingStop=29; extern int Slippage=3; extern bool STRATEGY_A=true; extern int A4=20; extern int A1=0; extern int A2=2; extern int A3=13; extern bool STRATEGY_B=true; extern int B4=12; extern int B1=4; extern int B2=15; extern int B3=20; extern bool STRATEGY_C=true; extern int C4=7; extern int C1=0; extern int C2=14; extern int C3=13; extern bool STRATEGY_D=true; extern int D4=11; extern int D1=6; extern int D2=19; extern int D3=10; extern bool STRATEGY_E=true; extern int E4=20; extern int E1=3; extern int E2=3; extern int E3=13; int ras; double TP=0,SL=0,TR; extern int Start_Time = 7; // Time to allow trading to start ( hours of 24 hr clock ) 0 for both disables extern int Finish_Time = 22; // Time to stop trading ( hours of 24 hr clock ) 0 for both disables //+------------------------------------------------------------------+ //| Hidden StopLoss Calculations | //+------------------------------------------------------------------+ void StpLoss() { double MyPoint=Point; if(Digits==3 || Digits==5) MyPoint=Point*10; TP=TakeProfit*MyPoint; SL=StopLoss*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 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 start function //+------------------------------------------------------------------+ int start() { if(TimeHour(TimeCurrent())>=Start_Time && TimeHour(TimeCurrent())<=Finish_Time )return(0); double MyPoint=Point; if(Digits==3 || Digits==5) MyPoint=Point*10; double TheStopLoss=0; double TheTakeProfit=0; if( TotalOrdersCount()==0 ) { int result=0; if ((STRATEGY_A &&Open[A4]>Close[A4]&&Close[A4]>Open[A1]&&Open[A4]>Close[A1]&&Open[A2]<Open[A3]&&Open[A2]<Close[A3]&&Close[A2]<Open[A3]&&Close[A2]<Close[A3]&&Open[A3]<Close[A3]) // Here is your open Buy rule || (STRATEGY_B &&Open[B4]>Close[B4]&&Close[B4]>Open[B1]&&Open[B4]>Close[B1]&&Open[B2]<Open[B3]&&Open[B2]<Close[B3]&&Close[B2]<Open[B3]&&Close[B2]<Close[B3]&&Open[B3]<Close[B3]) // Here is your open Buy rule || (STRATEGY_C&&Open[C4]>Close[C4]&&Close[C4]>Open[C1]&&Open[C4]>Close[C1]&&Open[C2]<Open[C3]&&Open[C2]<Close[C3]&&Close[C2]<Open[C3]&&Close[C2]<Close[C3]&&Open[C3]<Close[C3]) // Here is your open Buy rule || (STRATEGY_D&&Open[D4]>Close[D4]&&Close[D4]>Open[D1]&&Open[D4]>Close[D1]&&Open[D2]<Open[D3]&&Open[D2]<Close[D3]&&Close[D2]<Open[D3]&&Close[D2]<Close[D3]&&Open[D3]<Close[D3]) // Here is your open Buy rule || (STRATEGY_E&&Open[E4]>Close[E4]&&Close[E4]>Open[E1]&&Open[E4]>Close[E1]&&Open[E2]<Open[E3]&&Open[E2]<Close[E3]&&Close[E2]<Open[E3]&&Close[E2]<Close[E3]&&Open[E3]<Close[E3])) // Here is your open Buy rule { if (!IsTradeContextBusy() && IsTradeAllowed()) result=OrderSend(Symbol(),OP_BUY, NR(Lot_Volume()),Ask,Slippage,0,0,"MULTISTAR X2",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); } if ((STRATEGY_A&&Open[A4]<Close[A4]&&Close[A4]<Open[A1]&&Open[A4]<Close[A1]&&Open[A2]>Open[A3]&&Open[A2]>Close[A3]&&Close[A2]>Open[A3]&&Close[A2]>Close[A3]&&Open[A3]>Close[A3]) // Here is your open Sell rule || (STRATEGY_B&&Open[B4]<Close[B4]&&Close[B4]<Open[B1]&&Open[B4]<Close[B1]&&Open[B2]>Open[B3]&&Open[B2]>Close[B3]&&Close[B2]>Open[B3]&&Close[B2]>Close[B3]&&Open[B3]>Close[B3]) // Here is your open Sell rule || (STRATEGY_C&&Open[C4]<Close[C4]&&Close[C4]<Open[C1]&&Open[C4]<Close[C1]&&Open[C2]>Open[C3]&&Open[C2]>Close[C3]&&Close[C2]>Open[C3]&&Close[C2]>Close[C3]&&Open[C3]>Close[C3]) // Here is your open Sell rule || (STRATEGY_D&&Open[D4]<Close[D4]&&Close[D4]<Open[D1]&&Open[D4]<Close[D1]&&Open[D2]>Open[D3]&&Open[D2]>Close[D3]&&Close[D2]>Open[D3]&&Close[D2]>Close[D3]&&Open[D3]>Close[D3]) // Here is your open Sell rule || (STRATEGY_E&&Open[E4]<Close[E4]&&Close[E4]<Open[E1]&&Open[E4]<Close[E1]&&Open[E2]>Open[E3]&&Open[E2]>Close[E3]&&Close[E2]>Open[E3]&&Close[E2]>Close[E3]&&Open[E3]>Close[E3])) // Here is your open Sell rule { if (!IsTradeContextBusy() && IsTradeAllowed()) result=OrderSend(Symbol(),OP_SELL, NR(Lot_Volume()),Bid,Slippage,0,0,"MULTISTAR X2",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); } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //insuring its a new candle function //+------------------------------------------------------------------+ bool IsNewCandle() { static int BarsOnChart=0; if (Bars == BarsOnChart) return (false); BarsOnChart = Bars; return(true); }
    lefeuvr3 a joint une image
    multistar-x5-11888
  • lefeuvr3

    La tentation et grande d'associer non pas 5 mais 10 stratégies différentes .....He bien
    ........le résultat n'est vraiment pas à la hauteur des attentes


    Au total ...1 stratégie c'est bien ...5 c'est beaucoup mieux mais 10 c'est sans intérêt
    lefeuvr3 a joint une image
    multistar-x5-11893