_Fibo_Pivot_multiVal





//+------------------------------------------------------------------+
//|                                         _Fibo_Pivot_multiVal.mq4 |
//|                                                         olyakish |
//+------------------------------------------------------------------+
#property copyright "olyakish"
#property link      ""

extern int CountSymbol=10;
extern string AllVal="EURUSD,GBPUSD,USDCHF,USDJPY,USDCAD,AUDUSD,AUDJPY,CADJPY,EURJPY,EURCHF";
extern string All_Level_P_F1="33,33,33,33,33,33,33,33,33,33";
extern string All_Level_F1_F2="50,50,50,50,50,50,50,50,50,50";
extern string All_Level_F2_F3="33,33,33,33,33,33,33,33,33,33";
extern string All_Level_F3_out="40,40,40,40,40,40,40,40,40,40";
extern string All_F2_F3_Order = "bs,bs,bs,bs,bs,bs,bs,bs,bs,bs";
extern string rem01 = "Êîëè÷åñòâî ïðîôèòíûõ ñäåëîê ÷òîáû ïî äàííîé ïàðå íå âåëàñü òîðãîâëÿ";
extern string All_ExpertTrades="15,15,15,15,15,15,15,15,15,15";
extern string rem02 = "Ìèíèìàëüíîå çíà÷åíèå ïðîôèòà â !ïóíòàõ!";
extern string All_ExpertProfit1="150,150,150,150,150,150,150,150,150,150";
extern int AllValProfit=50;
extern int AllValProfitTrades=35;
extern string rem03 = "Åñëè b òî ââåðõó buy âíèçó sell";
extern string rem04 = "Åñëè s òî ââåðõó sell âíèçó buy";
extern string rem05 = "Åñëè bs òî ââåðõó è âíèçó buy/sell";
extern int MagicStart=1000;
extern int GlobalPeriod=15;
extern string HourMinStart="00:01";
extern string HourMinFinish="08:00";
extern string HourMinCloseAll="12:00";
extern bool DrawLine=true;

////--------äàííûå âîçìîæíîñòè ïîêà â ìóëüòèâàëþòíîì ýêñïåðòå íå ðàáîòàþò 
string rem06 = "Ïàðàìåòðû åñëè ïåðåìåííàÿ TZ==false";
int LimitPointIn=150;
int LimitPointOut=50;
bool TZ=true;


double LinePrice[19,50];
int LineStill[19];
color LineColor[19];
string LineName[19];
int timeolddraw[19];
int Magic=0;
double lot=0.1;
bool trade[];
int TimeDel=0;
string TradeSymbol[];
double Level_P_F1[];
double Level_F1_F2[];
double Level_F2_F3[];
double Level_F3_out[];
string F2_F3_Order[];
int ExpertTrades[];
int ExpertProfit[];
int ExpertTradesReal[];
int ExpertProfitReal[];

int init()
   {
      Print(All_ExpertProfit1);
      ArrayResize(TradeSymbol,CountSymbol);
      ArrayResize(Level_P_F1,CountSymbol);
      ArrayResize(Level_F1_F2,CountSymbol);
      ArrayResize(Level_F2_F3,CountSymbol);
      ArrayResize(Level_F3_out,CountSymbol);
      ArrayResize(F2_F3_Order,CountSymbol);
      ArrayResize(ExpertTrades,CountSymbol);
      ArrayResize(ExpertProfit,CountSymbol);
      ArrayResize(trade,CountSymbol);
      ArrayResize(ExpertTradesReal,CountSymbol);
      ArrayResize(ExpertProfitReal,CountSymbol);
      for(int i=0;i<=CountSymbol-1;i++){trade[i]=true;}
      Ðàçáèâêà(0,AllVal);
      Ðàçáèâêà(1,All_Level_P_F1);
      Ðàçáèâêà(2,All_Level_F1_F2);
      Ðàçáèâêà(3,All_Level_F2_F3);
      Ðàçáèâêà(4,All_Level_F3_out);
      Ðàçáèâêà(5,All_F2_F3_Order);
      Ðàçáèâêà(6,All_ExpertTrades);
      Ðàçáèâêà(7,All_ExpertProfit1);
      
      return(0);
   }

//+------------------------------------------------------------------+
void Ðàçáèâêà(int nMass,string stroka)
   {
      int i,n;
      int y=0;
      string mid="";
      if (nMass==0){for (i=0;i<=CountSymbol-1;i++){TradeSymbol[i]=StringSubstr(StringSubstr(stroka,i*7,6),0,6);}}     
      Print(stroka);
      for(n=0;n<=StringLen(stroka)-1;n++)
         {
            if (StringSubstr(stroka,n,1)!=",") { mid=StringConcatenate(mid,StringSubstr(stroka,n,1));}            
            if (StringSubstr(stroka,n,1)=="," || n==StringLen(stroka)-1)
               {
                  switch(nMass)
                     {
                        case 1:
                           {
                              if (mid==""){Level_P_F1[y]=0;y++;}
                              if (mid!=""){Level_P_F1[y]=StrToDouble(mid);y++;mid="";}
                              break;
                           }
                        case 2:
                           {
                              if (mid==""){Level_F1_F2[y]=0;y++;}
                              if (mid!=""){Level_F1_F2[y]=StrToDouble(mid);y++;mid="";}
                              break;
                           }
                        case 3:
                           {
                              if (mid==""){Level_F2_F3[y]=0;y++;}
                              if (mid!=""){Level_F2_F3[y]=StrToDouble(mid);y++;mid="";}
                              break;
                           }                           
                        case 4:
                           {
                              if (mid==""){Level_F3_out[y]=0;y++;}
                              if (mid!=""){Level_F3_out[y]=StrToDouble(mid);y++;mid="";}
                              break;
                           }
                        case 5:
                           {
                              if (mid==""){F2_F3_Order[y]="bs";y++;}
                              if (mid!=""){F2_F3_Order[y]=mid;y++;mid="";}
                              break;
                           }
                        case 6:
                           {
                              if (mid==""){ExpertTrades[y]=0;y++;}
                              if (mid!=""){ExpertTrades[y]=StrToInteger(mid);y++;mid="";}
                              break;
                           }
                        case 7:
                           {
                              if (mid==""){ExpertProfit[y]=0;y++;}
                              if (mid!=""){ExpertProfit[y]=StrToInteger(mid);y++;mid="";}
                              //Print (ExpertProfit[y-1]);
                              break;
                           }                                                                                 
                     }
               }     
          }
      return (0);
   }
//+------------------------------------------------------------------+
bool ÏðîâåðêàÍàëè÷èÿÎðäåðà(int MagicForFind)
   {      
         for(int i=0;i<=OrdersTotal();i++)
            {
               OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
               if (OrderMagicNumber()==MagicForFind && OrderCloseTime()==0){return(true);}                  
            }
      return(false);
   }

//+------------------------------------------------------------------+
int ÊîíòðîëüÏðîôèòà(int magicStart,int CountValIn)
   {      
         int AllProfitDoday=0;
         int AllProfitTrade=0;
         int ThisValProfitDoday=0;
         int ThisValProfitTrade=0;
         RefreshRates();
         double point;         
         bool exit=false;
         for(int i=OrdersHistoryTotal()-1;i>=0;i--)
            {
               OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);

           //    while (exit==false)
                  {
                     RefreshRates();
                     point=MarketInfo(OrderSymbol(),MODE_POINT);
             //        if(NormalizeDouble(point,4)==0.0001){point=NormalizeDouble(point,4);break;}
               //      if(NormalizeDouble(point,2)==0.01){point=NormalizeDouble(point,2);break;}
                 //    Print("CountValIn=",CountValIn," NormalizeDouble(point,8)=",NormalizeDouble(point,8));
                  }
               if (MagicStart>OrderMagicNumber() || MagicStart+14+15*CountSymbol<OrderMagicNumber()){continue;}   // ðàáîòàåì òîëüêî ñî ñâîåé ãðóïïîé ìàãèêîâ
               if (Day()==TimeDay(OrderCloseTime()) && OrderCloseTime()!=0) // îðäåð áûë çàêðûò ñåãîäíÿ
                  {
                     if (OrderType()==0)
                        {
                           if (magicStart<OrderMagicNumber() && magicStart+14>=OrderMagicNumber()){ThisValProfitDoday+=(OrderClosePrice()-OrderOpenPrice())/point;}
                           if (MagicStart<OrderMagicNumber() && MagicStart+14+15*CountSymbol>=OrderMagicNumber()){AllProfitDoday+=(OrderClosePrice()-OrderOpenPrice())/point;}
                        }
                     if (OrderType()==1)
                        {
                           if (magicStart<OrderMagicNumber() && magicStart+14>=OrderMagicNumber()){ThisValProfitDoday+=(OrderOpenPrice()-OrderClosePrice())/point;}
                           if (MagicStart<OrderMagicNumber() && MagicStart+14+15*CountSymbol>=OrderMagicNumber()){AllProfitDoday+=(OrderOpenPrice()-OrderClosePrice())/point;}
                        }
                     if(OrderClosePrice()==OrderTakeProfit())
                        {
                           if (magicStart<OrderMagicNumber() && magicStart+14>=OrderMagicNumber()){ThisValProfitTrade++;}
                           if (MagicStart<OrderMagicNumber() && MagicStart+14+15*CountSymbol>=OrderMagicNumber()){AllProfitTrade++;}
                        }                        
                  }
               else {break;}/// çàêàí÷èâàåì ïðîñìîòð òàê êàê çàêîí÷èëèñü îðäåðà â èñòîðèè ïî äàííîìó äíþ                  
            }
         RefreshRates();
         int AllProfitHistory=AllProfitDoday;         
         int ThisValProfitHistory=ThisValProfitDoday;
        // Print ("History=",AllProfitDoday,"  " ,AllValProfit,"  " ,AllProfitTrade,"  " ,AllValProfitTrades);
         
         for(i=OrdersTotal()-1;i>=0;i--)
            {
               OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
               while (exit==false)
                  {
                     RefreshRates();
                     point=MarketInfo(OrderSymbol(),MODE_POINT);
                     if(NormalizeDouble(point,4)==0.0001){point=NormalizeDouble(point,4);break;}
                     if(NormalizeDouble(point,2)==0.01){point=NormalizeDouble(point,2);break;}
                  }               
               //Print ("Symbol=",OrderSymbol()," ",OrderOpenPrice() ,"   A=", MarketInfo(OrderSymbol(),MODE_ASK),"   B=", MarketInfo(OrderSymbol(),MODE_BID),"  P=",point);
               if (MagicStart>OrderMagicNumber() || MagicStart+14+15*CountSymbol<OrderMagicNumber()){continue;}   // ðàáîòàåì òîëüêî ñî ñâîåé ãðóïïîé ìàãèêîâ
               if (OrderType()==0)
                  {
                     if (MagicStart<OrderMagicNumber() && MagicStart+14+15*CountSymbol>=OrderMagicNumber()){AllProfitDoday+=(MarketInfo(OrderSymbol(),MODE_BID)-OrderOpenPrice())/point;}
                     if (magicStart<OrderMagicNumber() && magicStart+14>=OrderMagicNumber()){ThisValProfitDoday+=(MarketInfo(OrderSymbol(),MODE_BID)-OrderOpenPrice())/point;}
                  }
              if (OrderType()==1)
                  {
                     if (MagicStart<OrderMagicNumber() && MagicStart+14+15*CountSymbol>=OrderMagicNumber()){AllProfitDoday+=(OrderOpenPrice()-MarketInfo(OrderSymbol(),MODE_ASK))/point;}
                     if (magicStart<OrderMagicNumber() && magicStart+14>=OrderMagicNumber()){ThisValProfitDoday+=(OrderOpenPrice()-MarketInfo(OrderSymbol(),MODE_ASK))/point;}
                  }
            }
      //Comment ("AllProfitHistory=",AllProfitHistory,"\n","AllProfitDoday=",AllProfitDoday,"\nTrade=",trade[CountValIn],"\n",TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES),"\nAllProfitTrade=",AllProfitTrade);
      ExpertTradesReal[CountValIn]=ThisValProfitTrade;
      ExpertProfitReal[CountValIn]=ThisValProfitDoday;
      //Print (ThisValProfitDoday,"   ",ExpertProfit[CountValIn],"  ", ThisValProfitTrade,"  ",ExpertTrades[CountValIn]);        
      //Print(
      //Print ("All",AllProfitDoday,"  " ,AllValProfit,"  " ,AllProfitTrade,"  " ,AllValProfitTrades);
      if (AllProfitDoday>=AllValProfit || AllProfitTrade>=AllValProfitTrades){return(-1);}
   
      if (ThisValProfitDoday>=ExpertProfit[CountValIn] || ThisValProfitTrade>=ExpertTrades[CountValIn]){return(1);}      
      return(0);
   }
 
//+------------------------------------------------------------------+

void ÓñòàíîâêàÎòëîæåííîãî(int type,double prOpen,double TP,double SL,int Magic,int CountValIn)
   {
      
      if (type==0)   //óñòàíàâëèâàåì íà ïîêóïêó ëèáî áàéëèìèò ëèáî áàéñòîï
         {
            if (MarketInfo(TradeSymbol[CountValIn],MODE_ASK)<prOpen-3*MarketInfo(TradeSymbol[CountValIn],MODE_POINT))
               {
                  Print("OP_BUYSTOP,",prOpen,",",TP,",",SL,",",Magic);
                  OrderSend(TradeSymbol[CountValIn],OP_BUYSTOP,lot,NormalizeDouble(prOpen,MarketInfo(TradeSymbol[CountValIn],MODE_DIGITS)),0,NormalizeDouble(SL,MarketInfo(TradeSymbol[CountValIn],MODE_DIGITS)),NormalizeDouble(TP,MarketInfo(TradeSymbol[CountValIn],MODE_DIGITS)),"Buy",Magic,0,Lime);
               }
            if (MarketInfo(TradeSymbol[CountValIn],MODE_BID)>prOpen+3*MarketInfo(TradeSymbol[CountValIn],MODE_POINT))
               {
                  Print("OP_BUYLIMIT,",prOpen,",",TP,",",SL,",",Magic);
                  OrderSend(TradeSymbol[CountValIn],OP_BUYLIMIT,lot,NormalizeDouble(prOpen,MarketInfo(TradeSymbol[CountValIn],MODE_DIGITS)),0,NormalizeDouble(SL,MarketInfo(TradeSymbol[CountValIn],MODE_DIGITS)),NormalizeDouble(TP,MarketInfo(TradeSymbol[CountValIn],MODE_DIGITS)),"Buy",Magic,0,Lime);
               }
         }
      if (type==1)   //óñòàíàâëèâàåì íà ïðîäàæó ëèáî ñåëëëèìèò ëèáî ñåëëñòîï
         {
            if (MarketInfo(TradeSymbol[CountValIn],MODE_BID)>prOpen+3*MarketInfo(TradeSymbol[CountValIn],MODE_POINT))
               {
                  Print("OP_SELLSTOP,",prOpen,",",TP,",",SL,",",Magic);
                  OrderSend(TradeSymbol[CountValIn],OP_SELLSTOP,lot,NormalizeDouble(prOpen,MarketInfo(TradeSymbol[CountValIn],MODE_DIGITS)),0,NormalizeDouble(SL,MarketInfo(TradeSymbol[CountValIn],MODE_DIGITS)),NormalizeDouble(TP,MarketInfo(TradeSymbol[CountValIn],MODE_DIGITS)),"Sell",Magic,0,Lime);
               }
            if (MarketInfo(TradeSymbol[CountValIn],MODE_ASK)<prOpen-3*MarketInfo(TradeSymbol[CountValIn],MODE_POINT))
               {
                  Print("OP_SELLLIMIT,",prOpen,",",TP,",",SL,",",Magic);
                  OrderSend(TradeSymbol[CountValIn],OP_SELLLIMIT,lot,NormalizeDouble(prOpen,MarketInfo(TradeSymbol[CountValIn],MODE_DIGITS)),0,NormalizeDouble(SL,MarketInfo(TradeSymbol[CountValIn],MODE_DIGITS)),NormalizeDouble(TP,MarketInfo(TradeSymbol[CountValIn],MODE_DIGITS)),"Sell",Magic,0,Lime);
               }              
         }         
      return(0);      
   }
  
//+------------------------------------------------------------------+

bool ÇàêðûòèåÎðäåðîâ(int type,int magicStart,int CountValIn)
   {
      //-2 çàêðûòü âñå îðäåðà ïî âñåì ïàðàì 
      //-1 çàêðûòü âñå îðäåðà ïî ñòàðòîâîìó ìàãèêó ïî äàííîé ïàðå
      // 0 çàêðûòü âñå îðäåðà BUY ïî ñòàðòîâîìó ìàãèêó
      // 1 çàêðûòü âñå îðäåðà SELL ïî ñòàðòîâîìó ìàãèêó
      // 2 óäàëèòü âñå îòëîæåííûå îðäåðà
    if (OrdersTotal()!=0) // ó íàñ åñòü  îðäåðà
      {
         for (int i=OrdersTotal()-1;i>=0;i--)
            {
               OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
               if (magicStart>OrderMagicNumber() && magicStart+14<OrderMagicNumber() && type!=-2 ){continue;}   // ðàáîòàåì òîëüêî ñî ñâîåé ãðóïïîé ìàãèêîâ
               if (MagicStart>OrderMagicNumber() && MagicStart+15*CountSymbol+14<OrderMagicNumber() && type==-2 ){continue;}   // ðàáîòàåì òîëüêî ñî ñâîåé ãðóïïîé ìàãèêîâ               
               if (type==-1 || type==2){if (OrderType()>=2){OrderDelete(OrderTicket());}}   // óäàëÿåì îòëîæåííûå îðäåðà
               RefreshRates();
               if (type==-1 || type==0){if (OrderType()==OP_BUY){OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(TradeSymbol[CountValIn],MODE_BID),MarketInfo(TradeSymbol[CountValIn],MODE_DIGITS)),2,Lime);}}
               if (type==-1 || type==1){if (OrderType()==OP_SELL){OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(TradeSymbol[CountValIn],MODE_ASK),MarketInfo(TradeSymbol[CountValIn],MODE_DIGITS)),2,Lime);}}
               if (type==-2 && OrderType()==OP_BUY){OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_BID),MarketInfo(OrderSymbol(),MODE_DIGITS)),2,Lime);}
               if (type==-2 && OrderType()==OP_SELL){OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_ASK),MarketInfo(OrderSymbol(),MODE_DIGITS)),2,Lime);}
               
            }
      }   
      return(0);
   }
//+------------------------------------------------------------------+


int start()
  {
    //if (AccountNumber()!=586802){return(0);}
    //Comment("");
    LineColor[0]=Magenta;LineColor[1]=LimeGreen;LineColor[2]=LimeGreen;LineColor[3]=LimeGreen;LineColor[4]=LimeGreen;LineColor[5]=LimeGreen;LineColor[6]=LimeGreen;
    LineColor[7]=SkyBlue;LineColor[8]=SkyBlue;LineColor[9]=SkyBlue;LineColor[10]=SkyBlue;LineColor[11]=SkyBlue;LineColor[12]=SkyBlue;
    LineColor[13]=SkyBlue;LineColor[14]=SkyBlue;LineColor[15]=SkyBlue;LineColor[16]=SkyBlue;LineColor[17]=SkyBlue;LineColor[18]=SkyBlue;
    lot=0.1;
    int iii;
    
    for(iii=0;iii<CountSymbol-1;iii++)
      {
         if (!IsTesting())
            {
               if (WindowHandle(TradeSymbol[iii],GlobalPeriod)==0){continue;}//// íåò ãðàôèêà ïî äàííîìó ñèìâîëó - ïðîïóñêàåì öèêë
            }
         double yesterday_high = 0;
         double yesterday_open = 0;
         double yesterday_low = 0;
         double yesterday_close = 0;
         double P = 0, S = 0, R = 0, S1 = 0, R1 = 0, S2 = 0, R2 = 0, S3 = 0, R3 = 0;
         double P_R1_1=0,P_R1_2=0,R1_R2_1=0,R2_R3_1=0,R2_R3_2=0,R3_out_1=0;
         double P_S1_1=0,P_S1_2=0,S1_S2_1=0,S2_S3_1=0,S2_S3_2=0,S3_out_1=0;
    
         int startbars=iTime(TradeSymbol[iii],GlobalPeriod,0)/86400;
         startbars*=86400;
         yesterday_high=iHigh(TradeSymbol[iii],GlobalPeriod,iBarShift(TradeSymbol[iii],GlobalPeriod,startbars,false)+1);
         yesterday_low=iLow(TradeSymbol[iii],GlobalPeriod,iBarShift(TradeSymbol[iii],GlobalPeriod,startbars,false)+1);  
         yesterday_close=iClose(TradeSymbol[iii],GlobalPeriod,iBarShift(TradeSymbol[iii],GlobalPeriod,startbars,false)+1);
         int j;   
         for(j=iBarShift(TradeSymbol[iii],GlobalPeriod,startbars,false)+1;j<=3610;j++)
            {
               if (iLow(TradeSymbol[iii],GlobalPeriod,j)<yesterday_low){yesterday_low=iLow(TradeSymbol[iii],GlobalPeriod,j);}
               if(iHigh(TradeSymbol[iii],GlobalPeriod,j)>yesterday_high){yesterday_high=iHigh(TradeSymbol[iii],GlobalPeriod,j);} 
               int t=iTime(TradeSymbol[iii],GlobalPeriod,j)/86400;
               if (iTime(TradeSymbol[iii],GlobalPeriod,j)==t*86400){break;}
            }
         //------ Pivot Points ------
         R = (yesterday_high - yesterday_low);
         P = (yesterday_high + yesterday_low + yesterday_close)/3; LinePrice[0,iii]=P;LineName[0]="P";LineStill[0]=0;//Pivot
         R1 = P + (R * 0.38);LinePrice[1,iii]=R1;LineName[1]="R1";LineStill[1]=0;
         R2 = P + (R * 0.62);LinePrice[2,iii]=R2;LineName[2]="R2";LineStill[2]=0;
         R3 = P + (R * 0.99);LinePrice[3,iii]=R3;LineName[3]="R3";LineStill[3]=0;
         S1 = P - (R * 0.38);LinePrice[4,iii]=S1;LineName[4]="S1";LineStill[4]=0;
         S2 = P - (R * 0.62);LinePrice[5,iii]=S2;LineName[5]="S2";LineStill[5]=0;
         S3 = P - (R * 0.99);LinePrice[6,iii]=S3;LineName[6]="S3";LineStill[6]=0;
    
         P_R1_1=NormalizeDouble(P+(R1-P)*(Level_P_F1[iii]/100),MarketInfo(TradeSymbol[iii],MODE_DIGITS));LinePrice[7,iii]=P_R1_1;LineName[7]="P_R1_1";LineStill[7]=2;
         P_R1_2=NormalizeDouble(R1-(R1-P)*(Level_P_F1[iii]/100),MarketInfo(TradeSymbol[iii],MODE_DIGITS));LinePrice[8,iii]=P_R1_2;LineName[8]="P_R1_2";LineStill[8]=2;
         R1_R2_1=NormalizeDouble(R1+(R2-R1)*(Level_F1_F2[iii]/100),MarketInfo(TradeSymbol[iii],MODE_DIGITS));LinePrice[9,iii]=R1_R2_1;LineName[9]="R1_R2_1";LineStill[9]=2;
         R2_R3_1=NormalizeDouble(R2+(R3-R2)*(Level_F2_F3[iii]/100),MarketInfo(TradeSymbol[iii],MODE_DIGITS));LinePrice[10,iii]=R2_R3_1;LineName[10]="R2_R3_1";LineStill[10]=2;
         R2_R3_2=NormalizeDouble(R3-(R3-R2)*(Level_F2_F3[iii]/100),MarketInfo(TradeSymbol[iii],MODE_DIGITS));LinePrice[11,iii]=R2_R3_2;LineName[11]="R2_R3_2";LineStill[11]=2;
         R3_out_1=NormalizeDouble(R3+(R3-R2)*(Level_F3_out[iii]/100),MarketInfo(TradeSymbol[iii],MODE_DIGITS));LinePrice[12,iii]=R3_out_1;LineName[12]="R3_out_1";LineStill[12]=2;
         P_S1_1=NormalizeDouble(P-(P-S1)*(Level_P_F1[iii]/100),MarketInfo(TradeSymbol[iii],MODE_DIGITS));LinePrice[13,iii]=P_S1_1;LineName[13]="P_S1_1";LineStill[13]=2;
         P_S1_2=NormalizeDouble(S1+(P-S1)*(Level_P_F1[iii]/100),MarketInfo(TradeSymbol[iii],MODE_DIGITS));LinePrice[14,iii]=P_S1_2;LineName[14]="P_S1_2";LineStill[14]=2;
         S1_S2_1=NormalizeDouble(S1-(S1-S2)*(Level_F1_F2[iii]/100),MarketInfo(TradeSymbol[iii],MODE_DIGITS));LinePrice[15,iii]=S1_S2_1;LineName[15]="S1_S2_1";LineStill[15]=2;
         S2_S3_1=NormalizeDouble(S2-(S2-S3)*(Level_F2_F3[iii]/100),MarketInfo(TradeSymbol[iii],MODE_DIGITS));LinePrice[16,iii]=S2_S3_1;LineName[16]="S2_S3_1";LineStill[16]=2;
         S2_S3_2=NormalizeDouble(S3+(S2-S3)*(Level_F2_F3[iii]/100),MarketInfo(TradeSymbol[iii],MODE_DIGITS));LinePrice[17,iii]=S2_S3_2;LineName[17]="S2_S3_2";LineStill[17]=2;
         S3_out_1=NormalizeDouble(S3-(S2-S3)*(Level_F3_out[iii]/100),MarketInfo(TradeSymbol[iii],MODE_DIGITS));LinePrice[18,iii]=S3_out_1;LineName[18]="S3_out_1";LineStill[18]=2;
    
         if (TimeToStr(TimeCurrent(),TIME_MINUTES)>=HourMinStart && TimeToStr(TimeCurrent(),TIME_MINUTES)<HourMinFinish && trade[iii]==true)
            {  
               if (MarketInfo(TradeSymbol[iii],MODE_BID)>R2 && MarketInfo(TradeSymbol[iii],MODE_BID)<R3)
                  {
                     //Comment("R2---R3");
                     Magic=MagicStart+15*iii+3;
                     if (!ÏðîâåðêàÍàëè÷èÿÎðäåðà(Magic))
                        {
                           //Print("0R2---R3");
                           if (TZ){ÓñòàíîâêàÎòëîæåííîãî(0,R2_R3_1,R2_R3_2,0,Magic,iii);}
                           if (!TZ && R<LimitPointOut*MarketInfo(TradeSymbol[iii],MODE_POINT)){ÓñòàíîâêàÎòëîæåííîãî(0,R2_R3_1,R3_out_1,0,Magic,iii);}
                           if (!TZ && R>LimitPointIn*MarketInfo(TradeSymbol[iii],MODE_POINT)){ÓñòàíîâêàÎòëîæåííîãî(1,R2_R3_1,P,0,Magic,iii);}
                        }
                     Magic=MagicStart+15*iii+2;
                     if (!ÏðîâåðêàÍàëè÷èÿÎðäåðà(Magic))
                        {
                           //Print("1R2---R3");
                           if (TZ){ÓñòàíîâêàÎòëîæåííîãî(1,R2_R3_2,R2_R3_1,0,Magic,iii);}
                           if (!TZ && R<LimitPointOut*MarketInfo(TradeSymbol[iii],MODE_POINT)){ÓñòàíîâêàÎòëîæåííîãî(0,R2_R3_2,R3_out_1,0,Magic,iii);}
                           if (!TZ && R>LimitPointIn*MarketInfo(TradeSymbol[iii],MODE_POINT)){ÓñòàíîâêàÎòëîæåííîãî(1,R2_R3_2,P,0,Magic,iii);}                            
                        }                  
                  }

               if (MarketInfo(TradeSymbol[iii],MODE_BID)>R1 && MarketInfo(TradeSymbol[iii],MODE_BID)<R2)
                  {
                     //Comment("R1---R2");            
                     if (F2_F3_Order[iii]=="b" || F2_F3_Order[iii]=="bs")
                        {
                           Magic=MagicStart+15*iii+5;
                           if (!ÏðîâåðêàÍàëè÷èÿÎðäåðà(Magic))
                              {
                                 //Comment("0R1---R2");  
                                 if (TZ){ÓñòàíîâêàÎòëîæåííîãî(0,R1_R2_1,R2,0,Magic,iii);}
                                 if (!TZ && R<LimitPointOut*MarketInfo(TradeSymbol[iii],MODE_POINT)){ÓñòàíîâêàÎòëîæåííîãî(0,R1_R2_1,R3_out_1,0,Magic,iii);}
                                 if (!TZ && R>LimitPointIn*MarketInfo(TradeSymbol[iii],MODE_POINT)){ÓñòàíîâêàÎòëîæåííîãî(1,R1_R2_1,P,0,Magic,iii);}                           
                              }
                        }
                     if (F2_F3_Order[iii]=="s" || F2_F3_Order[iii]=="bs")
                        {
                           Magic=MagicStart+15*iii+4;
                           if (!ÏðîâåðêàÍàëè÷èÿÎðäåðà(Magic))
                              {
                                 //Comment("1R1---R2");
                                 if (TZ){ÓñòàíîâêàÎòëîæåííîãî(1,R1_R2_1,R1,0,Magic,iii);}
                                 if (!TZ && R<LimitPointOut*MarketInfo(TradeSymbol[iii],MODE_POINT)){ÓñòàíîâêàÎòëîæåííîãî(0,R1_R2_1,R3_out_1,0,Magic,iii);}
                                 if (!TZ && R>LimitPointIn*MarketInfo(TradeSymbol[iii],MODE_POINT)){ÓñòàíîâêàÎòëîæåííîãî(1,R1_R2_1,P,0,Magic,iii);}                             
                              }                  
                        }
                  }
               if (MarketInfo(TradeSymbol[iii],MODE_BID)>P && MarketInfo(TradeSymbol[iii],MODE_BID)<R1)
                  {
                     //Comment("P---R1");               
                     Magic=MagicStart+15*iii+7;
                     if (!ÏðîâåðêàÍàëè÷èÿÎðäåðà(Magic))
                        {
                           //Print("0P---R1");
                           if (TZ){ÓñòàíîâêàÎòëîæåííîãî(0,P_R1_1,P_R1_2,0,Magic,iii);}
                           if (!TZ && R<LimitPointOut*MarketInfo(TradeSymbol[iii],MODE_POINT)){ÓñòàíîâêàÎòëîæåííîãî(0,P_R1_1,R3_out_1,0,Magic,iii);}
                           if (!TZ && R>LimitPointIn*MarketInfo(TradeSymbol[iii],MODE_POINT)){ÓñòàíîâêàÎòëîæåííîãî(1,P_R1_1,P,0,Magic,iii);}                       
                        }
                     Magic=MagicStart+15*iii+6;
                     if (!ÏðîâåðêàÍàëè÷èÿÎðäåðà(Magic))
                        {
                           //Print("1P---R1");
                           if (TZ){ÓñòàíîâêàÎòëîæåííîãî(1,P_R1_2,P_R1_1,0,Magic,iii);}
                           if (!TZ && R<LimitPointOut*MarketInfo(TradeSymbol[iii],MODE_POINT)){ÓñòàíîâêàÎòëîæåííîãî(0,P_R1_2,R3_out_1,0,Magic,iii);}
                           if (!TZ && R>LimitPointIn*MarketInfo(TradeSymbol[iii],MODE_POINT)){ÓñòàíîâêàÎòëîæåííîãî(1,P_R1_2,P,0,Magic,iii);}                      
                        }                  
                  }
               if (MarketInfo(TradeSymbol[iii],MODE_BID)<P && MarketInfo(TradeSymbol[iii],MODE_BID)>S1)
                  {
                     //Comment("P---S1"); 
                     Magic=MagicStart+15*iii+9;
                     if (!ÏðîâåðêàÍàëè÷èÿÎðäåðà(Magic))
                        {
                           //Print("0P---S1");
                           if (TZ){ÓñòàíîâêàÎòëîæåííîãî(0,P_S1_2,P_S1_1,0,Magic,iii);}
                           if (!TZ && R>LimitPointIn*MarketInfo(TradeSymbol[iii],MODE_POINT)){ÓñòàíîâêàÎòëîæåííîãî(0,P_S1_2,P,0,Magic,iii);}
                           if (!TZ && R<LimitPointOut*MarketInfo(TradeSymbol[iii],MODE_POINT)){ÓñòàíîâêàÎòëîæåííîãî(1,P_S1_2,S3_out_1,0,Magic,iii);}                       
                        }
                     Magic=MagicStart+15*iii+8;
                     if (!ÏðîâåðêàÍàëè÷èÿÎðäåðà(Magic))
                        {
                           //Print("1P---S1");
                           if (TZ){ÓñòàíîâêàÎòëîæåííîãî(1,P_S1_1,P_S1_2,0,Magic,iii);}
                           if (!TZ && R>LimitPointIn*MarketInfo(TradeSymbol[iii],MODE_POINT)){ÓñòàíîâêàÎòëîæåííîãî(0,P_S1_1,P,0,Magic,iii);}
                           if (!TZ && R<LimitPointOut*MarketInfo(TradeSymbol[iii],MODE_POINT)){ÓñòàíîâêàÎòëîæåííîãî(1,P_S1_1,S3_out_1,0,Magic,iii);}                        
                        }                  
                  }
               if (MarketInfo(TradeSymbol[iii],MODE_BID)<S1 && MarketInfo(TradeSymbol[iii],MODE_BID)>S2)
                  {
                     //Comment("S1---S2"); 
                     if (F2_F3_Order[iii]=="s" || F2_F3_Order[iii]=="bs")
                        {   
                           Magic=MagicStart+15*iii+11;
                           if (!ÏðîâåðêàÍàëè÷èÿÎðäåðà(Magic))
                              {
                                 ///Print("0S1---S2"); 
                                 if (TZ){ÓñòàíîâêàÎòëîæåííîãî(0,S1_S2_1,S1,0,Magic,iii);}
                                 if (!TZ && R>LimitPointIn*MarketInfo(TradeSymbol[iii],MODE_POINT)){ÓñòàíîâêàÎòëîæåííîãî(0,S1_S2_1,P,0,Magic,iii);}
                                 if (!TZ && R<LimitPointOut*MarketInfo(TradeSymbol[iii],MODE_POINT)){ÓñòàíîâêàÎòëîæåííîãî(1,S1_S2_1,S3_out_1,0,Magic,iii);}                             
                              }
                        }
                     if (F2_F3_Order[iii]=="b" || F2_F3_Order[iii]=="bs")
                        { 
                           Magic=MagicStart+15*iii+10;
                           if (!ÏðîâåðêàÍàëè÷èÿÎðäåðà(Magic))
                              {
                                 //Print("1S1---S2"); 
                                 if (TZ){ÓñòàíîâêàÎòëîæåííîãî(1,S1_S2_1,S2,0,Magic,iii);}
                                 if (!TZ && R>LimitPointIn*MarketInfo(TradeSymbol[iii],MODE_POINT)){ÓñòàíîâêàÎòëîæåííîãî(0,S1_S2_1,P,0,Magic,iii);}
                                 if (!TZ && R<LimitPointOut*MarketInfo(TradeSymbol[iii],MODE_POINT)){ÓñòàíîâêàÎòëîæåííîãî(1,S1_S2_1,S3_out_1,0,Magic,iii);}                             
                              }                  
                        }
                  }           
               if (MarketInfo(TradeSymbol[iii],MODE_BID)<S2 && MarketInfo(TradeSymbol[iii],MODE_BID)>S3)
                  {
                     //Comment("S2---S3");
                     Magic=MagicStart+15*iii+13;
                     if (!ÏðîâåðêàÍàëè÷èÿÎðäåðà(Magic))
                        {
                           //Print("0S2---S3");
                           if (TZ){ÓñòàíîâêàÎòëîæåííîãî(0,S2_S3_2,S2_S3_1,0,Magic,iii);}
                           if (!TZ && R>LimitPointIn*MarketInfo(TradeSymbol[iii],MODE_POINT)){ÓñòàíîâêàÎòëîæåííîãî(0,S2_S3_2,P,0,Magic,iii);}
                           if (!TZ && R<LimitPointOut*MarketInfo(TradeSymbol[iii],MODE_POINT)){ÓñòàíîâêàÎòëîæåííîãî(1,S2_S3_2,S3_out_1,0,Magic,iii);}                             
                        }
                     Magic=MagicStart+15*iii+12;
                     if (!ÏðîâåðêàÍàëè÷èÿÎðäåðà(Magic))
                        {
                           //Print("1S2---S3");
                           if (TZ){ÓñòàíîâêàÎòëîæåííîãî(1,S2_S3_1,S2_S3_2,0,Magic,iii);}
                           if (!TZ && R>LimitPointIn*MarketInfo(TradeSymbol[iii],MODE_POINT)){ÓñòàíîâêàÎòëîæåííîãî(0,S2_S3_1,P,0,Magic,iii);}
                           if (!TZ && R<LimitPointOut*MarketInfo(TradeSymbol[iii],MODE_POINT)){ÓñòàíîâêàÎòëîæåííîãî(1,S2_S3_1,S3_out_1,0,Magic,iii);}                                 
                        }              
                  }
               if (MarketInfo(TradeSymbol[iii],MODE_BID)<S3)
                  {
                     //Comment("<S3"); 
                     Magic=MagicStart+15*iii+14;
                     if (!ÏðîâåðêàÍàëè÷èÿÎðäåðà(Magic))
                        {
                           //Print("1<S3");                  
                           lot=0.2;
                           trade[iii]=false;
                           if (TZ){ÓñòàíîâêàÎòëîæåííîãî(1,S3_out_1,S3_out_1-(S3-S3_out_1),S2,Magic,iii);}
                           if (!TZ && R>LimitPointIn*MarketInfo(TradeSymbol[iii],MODE_POINT)){ÓñòàíîâêàÎòëîæåííîãî(0,S3_out_1,P,0,Magic,iii);}
                           if (!TZ && R<LimitPointOut*MarketInfo(TradeSymbol[iii],MODE_POINT)){ÓñòàíîâêàÎòëîæåííîãî(1,S3_out_1,0,0,Magic,iii);}                        
                        }
                  }
                  
               if (MarketInfo(TradeSymbol[iii],MODE_BID)>R3)
                  {
                     //Comment(">R3"); 
                     Magic=MagicStart+15*iii+1;
                     if (!ÏðîâåðêàÍàëè÷èÿÎðäåðà(Magic))
                        {
                           //Print("1>R3");
                           lot=0.2;
                           trade[iii]=false;
                           if (TZ){ÓñòàíîâêàÎòëîæåííîãî(0,R3_out_1,R3_out_1+(R3_out_1-R3),R2,Magic,iii);}
                           if (!TZ && R<LimitPointOut*MarketInfo(TradeSymbol[iii],MODE_POINT)){ÓñòàíîâêàÎòëîæåííîãî(0,R3_out_1,0,0,Magic,iii);}
                           if (!TZ && R>LimitPointIn*MarketInfo(TradeSymbol[iii],MODE_POINT)){ÓñòàíîâêàÎòëîæåííîãî(1,R3_out_1,P,0,Magic,iii);}                       
                        }
                  }
                
                        
            }/// if           
      //--------------------------------------------------------------------  
      int Check=ÊîíòðîëüÏðîôèòà(MagicStart+15*iii,iii);
      if(Check==-1)
         {
            //Print("Check",Check,"   magic=",MagicStart+15*iii,"   ",iii);
            ÇàêðûòèåÎðäåðîâ(-2,MagicStart,iii); //  çàêðûâàåì íà ñåãîäíÿ òîðãîâëþ ïî âñåì ïàðàì
            ÇàêðûòèåÎðäåðîâ(2,MagicStart+15*iii,iii); //  óäàëÿåì îòëîæåííûå            
            ArrayInitialize(trade,0);
         } 
      if(Check==1)
         {
            //Print("Check",Check,"   magic=",MagicStart+15*iii,"   ",iii);
            ÇàêðûòèåÎðäåðîâ(-1,MagicStart+15*iii,iii); //  çàêðûâàåì íà ñåãîäíÿ òîðãîâëþ ïî äàííîé ïàðå
            trade[iii]=false;
         }
      }//////////////////iii       
   //--------------------------------------------------------------------      

   if (TimeToStr(TimeCurrent(),TIME_MINUTES)>HourMinFinish)
      {
         //Print(" TimeToStr(TimeCurrent(),TIME_MINUTES)>HourMinFinish"); 
         ÇàêðûòèåÎðäåðîâ(2,MagicStart+15*iii,iii); //  óäàëÿåì îòëîæåííûå
         trade[iii]=false;
      }
   if (HourMinStart>TimeToStr(TimeCurrent(),TIME_MINUTES)){ArrayInitialize(trade,1);ArrayInitialize(ExpertTradesReal,0);ArrayInitialize(ExpertProfitReal,0);}     
   if (TimeToStr(TimeCurrent(),TIME_MINUTES)>HourMinCloseAll)
      {
         //Print("  (TimeToStr(TimeCurrent(),TIME_MINUTES)>HourMinCloseAll)");
         ÇàêðûòèåÎðäåðîâ(-2,MagicStart,iii); //  óäàëÿåì !ÂÑÅ!         
         trade[iii]=true;
      }
//============================================================================
  /* 
   if(DrawLine && timeolddraw[iii]!=iTime(TradeSymbol[iii],GlobalPeriod,1))
      { 
         for(int y=0;y<=18;y++)
            {
               if(ObjectFind(LineName[y])!=0)
                  {
                     ObjectCreate(LineName[y], OBJ_TREND, 0, startbars, LinePrice[y,iii],iTime(TradeSymbol[iii],GlobalPeriod,0),LinePrice[y,iii]);
                     ObjectSet(LineName[y], OBJPROP_STYLE, LineStill[y]);
                     ObjectSet(LineName[y], OBJPROP_COLOR, LineColor[y]);
                     ObjectSet(LineName[y],OBJPROP_RAY , false);
                  }
                else
                  {
                     ObjectSet(LineName[y],OBJPROP_TIME2 , iTime(TradeSymbol[iii],GlobalPeriod,0));
                     ObjectSet(LineName[y],OBJPROP_TIME1 , startbars);
                     ObjectSet(LineName[y],OBJPROP_PRICE1 ,LinePrice[y,iii]);
                     ObjectSet(LineName[y],OBJPROP_PRICE2 ,LinePrice[y,iii]);
                  }      
            }
       timeolddraw[iii]=iTime(TradeSymbol[iii],GlobalPeriod,1);  
      }
  */ 
   return(0);
  }
//+------------------------------------------------------------------+



Sample





Analysis



Market Information Used:

Series array that contains the highest prices of each bar
Series array that contains the lowest prices of each bar
Series array that contains close prices for each bar


Indicator Curves created:


Indicators Used:



Custom Indicators Used:

Order Management characteristics:
Checks for the total of open orders

Checks for the total of closed orders
It automatically opens orders when conditions are reached
It Closes Orders by itself

Other Features: