Fitful_13





//+---------------------------------------------------------+
//|              FitFul_13.mq4                              |
//|              Copyright © 2006, AS-Bisiness Corp.        |
//|              Artapov Alexandr, Sidorina Yulia           |
//+---------------------------------------------------------+
#property copyright "Copyright © 2006, AS-Bisiness Corp."
//----
extern double Y=15.5;
extern double TrailingStop=30;
extern int Period_1=PERIOD_H1;
extern int Period_3=PERIOD_M15;
extern int CloseTimeMin_1 =172800;
extern int CloseHour    =21;
extern int CloseMim_1   =50;
extern int CloseMim_2   =59;
extern int OpenMim_0   =0;
extern int OpenMim_1   =15;
extern int OpenMim_2   =30;
extern int OpenMim_3   =45;
//----
double HW,LW,CW;
double OP,R1,R2,R3,S1,S2,S3,S05,S15,S25,R05,R15,R25;
int _GetLastError=0;
//+------------------------------------------------------------------+
double MarginCalculate(string symbol,double volume)
  {
   string first   =StringSubstr(Symbol(),0,3);
   string second  =StringSubstr(Symbol(),3,3);
   string currency=AccountCurrency();
   double leverage=AccountLeverage();
   double contract=MarketInfo(Symbol(),MODE_LOTSIZE);
   double bid     =MarketInfo(Symbol(),MODE_BID);
//---- äîïóñêàåì òîëüêî ñòàíäàðòíûå ôîðåêñíûå ñèìâîëû XXXYYY
   if(StringLen(Symbol())!=6)
     {
      Print("MarginCalculate: '",first+second,"' must be standard forex symbol XXXYYY");
      return(0.0);
     }
//---- ïðîâåðêà íàëè÷èÿ äàííûõ
   if(bid<=0 || contract<=0)
     {
      Print("MarginCalculate: no market information for '",first+second,"'");
      return(0.0);
     }
//---- ïðîâåðÿåì ñàìûå ïðîñòûå âàðèàíòû - áåç êðîññîâ
   if(first==currency)   return(contract*volume/leverage);           // USDxxx
   if(second==currency)  return(contract*bid*volume/leverage);       // xxxUSD
//---- ïðîâåðÿåì îáû÷íûå êðîññû, èùåì ïðÿìîå ïðåîáðàçîâàíèå ÷åðåç âàëþòó äåïîçèòà
   string base=currency+first;                                       // USDxxx
   if(MarketInfo(base,MODE_BID)>0) return(contract/MarketInfo(base,MODE_BID)*volume/leverage);
//---- ïîïðîáóåì íàîáîðîò
   base=first+currency;                                              // xxxUSD
   if(MarketInfo(base,MODE_BID)>0) return(contract*MarketInfo(base,MODE_BID)*volume/leverage);
//---- íåò âîçìîæíîñòè ïðÿìîãî ïåðåðàñ÷åòà
   Print("MarginCalculate: can not convert '",first+second,"'");
   return(0.0);
  }
//--- extern variables
extern double ExtMaxRisk=0.05;
//--- calculate current volume
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double CalcVol()
  {
   double lot_min =MarketInfo(Symbol(),MODE_MINLOT);//0.1;   
   double lot_max =MarketInfo(Symbol(),MODE_MAXLOT);//5.0;   
   double lot_step=MarketInfo(Symbol(),MODE_LOTSTEP);//0.1;   
   double vol;
//----
   if(lot_min<0 || lot_max<=0.0 || lot_step<=0.0)
     {
      Print("CalculateVolume: invalid MarketInfo() results [",lot_min,",",lot_max,",",lot_step,"]");
      return(0);
     }
   if(AccountLeverage()<=0)
     {
      Print("CalculateVolume: invalid AccountLeverage() [",AccountLeverage(),"]");
      return(0);
     }
//--- basic formula
   vol=NormalizeDouble(AccountFreeMargin()*ExtMaxRisk/AccountLeverage()/10.0,2);
//--- additional calculation
   int    orders=HistoryTotal();
   int    losses=0;
   if(AccountBalance()>0)
     {
      for(int m=orders-1;m>=0;m--)
        {
         if(OrderSelect(m,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Error in history!"); break; }
         if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) continue;
         //----
         if(OrderProfit()>0) break;
         if(OrderProfit()<0) losses++;
        }
      if(losses>1) vol=NormalizeDouble(vol-lot_step,1);
     }
//--- 
   vol=NormalizeDouble(vol/lot_step,0)*lot_step;
   if(vol<lot_min) vol=lot_min;
   if(vol>lot_max) vol=lot_max;
//---
   return(vol);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
 int start()
  {
   double bid    =MarketInfo(Symbol(),MODE_BID);
   double ask    =MarketInfo(Symbol(),MODE_ASK);
   double point  =MarketInfo(Symbol(),MODE_POINT);
   int digits    =MarketInfo(Symbol(),MODE_DIGITS);
   double slip   =MarketInfo(Symbol(),MODE_STOPLEVEL);
   //========Âû÷èñëåíèå íåäåëüíûõ óðîâíåé============
   double HW=iHigh(Symbol(),PERIOD_W1,1);
   double LW=iLow(Symbol(),PERIOD_W1,1);
   double CW=iClose(Symbol(),PERIOD_W1,1);
   //----
   double OP= NormalizeDouble((HW+LW+CW)/3,digits);
   double R1= NormalizeDouble(2*OP-LW,digits);
   double S1= NormalizeDouble(2*OP-HW,digits);
   double R05=NormalizeDouble((OP+R1)/2,digits);
   double S05=NormalizeDouble((OP+S1)/2,digits);
   double R2= NormalizeDouble(OP+(HW-LW),digits);
   double S2= NormalizeDouble(OP-(HW-LW),digits);
   double R15=NormalizeDouble((R1+R2)/2,digits);
   double S15=NormalizeDouble((S1+S2)/2,digits);
   double R3= NormalizeDouble(2*OP+(HW-2*LW),digits);
   double S3= NormalizeDouble(2*OP-(2*HW-LW),digits);
   double R25=NormalizeDouble((R2+R3)/2,digits);
   double S25=NormalizeDouble((S2+S3)/2,digits);
   int total=OrdersTotal(),ticket,i=0,a=0,flag=0,k=0;
//----
   if(total<1)
     {
      if(Bars<100 || IsTradeAllowed()==false)
        {Print("Íåäîñòàòî÷íî Áàðîâ - = ", BarsPerWindow());
         return;
        }
      if (AccountFreeMargin()<MarginCalculate(Symbol(),1.0))
        {
         Print("Ðàáîòàòü íåëüçÿ -ÍÅÒ ÄÅÍÅÃ- = ", MarginCalculate(Symbol(),1.0));
         return;
        }
     }
   RefreshRates();
   //======Îïðåäåëåíèå ïåðåìåííûõ íåîáõîäèìîãî áàðà=======
   double O1_b1=iOpen(Symbol(),Period_1,1);
   double C1_b1=iClose(Symbol(),Period_1,1);
   double O2_b1=iOpen(Symbol(),Period_1,2);
   double C2_b1=iClose(Symbol(),Period_1,2);
   double O1_b3=iOpen(Symbol(),Period_3,1);
   double C1_b3=iClose(Symbol(),Period_3,1);
   double L2_b3=iLow(Symbol(),Period_3,2);
   double C2_b3=iClose(Symbol(),Period_3,2);
   double L3_b3=iLow(Symbol(),Period_3,3);
   double C3_b3=iClose(Symbol(),Period_3,3);
   double H2_b3=iHigh(Symbol(),Period_3,2);
   double H3_b3=iHigh(Symbol(),Period_3,3);
   //=================================        
   if (total>0)
      while(a<=total)
        {   if (OrderSelect(a, SELECT_BY_POS)==true)
           {  if (OrderSymbol()==Symbol()) k++;
            if (k==3) {flag=1; break;}
           }
         a++;
        }
   //================================================
   if(flag==0)
     {
      if((Minute()== OpenMim_0)||(Minute()== OpenMim_1)||(Minute()== OpenMim_2)||(Minute()== OpenMim_3))
        {
         //11111111111111111111111111111111111111
         if (O1_b1<=C1_b1)
           {
            if(O2_b1<=OP && C2_b1>=OP)
              {
               ticket=OrderSend(Symbol(),OP_BUY,CalcVol(),ask,slip,NormalizeDouble(S1-Y*point,digits),
               NormalizeDouble(R1+Y*point,digits),"0B",100,0,Lime);
               Print( "MagicNum=",OrderMagicNumber(), " OrderSend ¹ ", GetLastError());return(-1);
              return(0);
              }
            if(O2_b1<=R05 && C2_b1>=R05)
              {
               ticket=OrderSend(Symbol(),OP_BUY,CalcVol(),ask,slip,NormalizeDouble(S05-Y*point,digits),
               NormalizeDouble(R15+Y*point,digits),"1B",101,0,Lime);
               Print( "MagicNum=",OrderMagicNumber()," OrderSend ¹ ", GetLastError());return(-1);
              return(0);
              }
            if(O2_b1<=R1 && C2_b1>=R1)
              {
               ticket=OrderSend(Symbol(),OP_BUY,CalcVol(),ask,slip,NormalizeDouble(OP-Y*point,digits),
               NormalizeDouble(R2+Y*point,digits),"2B",102,0,Lime);
               Print( "MagicNum=",OrderMagicNumber()," OrderSend ¹ ", GetLastError());return(-1);
              return(0);
              }
            if(O2_b1<=R15 && C2_b1>=R15)
              {
               ticket=OrderSend(Symbol(),OP_BUY,CalcVol(),ask,slip,NormalizeDouble(R05-Y*point,digits),
               NormalizeDouble(R25+Y*point,digits),"3B",103,0,Lime);
               Print( "MagicNum=",OrderMagicNumber()," OrderSend ¹ ", GetLastError());return(-1);
              return(0);
              }
            if(O2_b1<=R2 && C2_b1>=R2)
              {
               ticket=OrderSend(Symbol(),OP_BUY,CalcVol(),ask,slip,NormalizeDouble(R1-Y*point,digits),
               NormalizeDouble(R3+Y*point,digits),"4B",104,0,Lime);
               Print( "MagicNum=",OrderMagicNumber()," OrderSend ¹ ", GetLastError());return(-1);
              return(0);
              }
            if(O2_b1<=R25 && C2_b1>=R25)
              {
               ticket=OrderSend(Symbol(),OP_BUY,CalcVol(),ask,slip,NormalizeDouble(R15-Y*point,digits),
               NormalizeDouble(R3+Y*point,digits),"5B",105,0,Lime);
               Print( "MagicNum=",OrderMagicNumber()," OrderSend ¹ ", GetLastError());return(-1);
              return(0);
              }
            if(O2_b1<=S1 && C2_b1>=S1)
              {
               ticket=OrderSend(Symbol(),OP_BUY,CalcVol(),ask,slip,NormalizeDouble(S2-Y*point,digits),
               NormalizeDouble(OP+Y*point,digits),"7B",107,0,Lime);
               Print( "MagicNum=",OrderMagicNumber()," OrderSend ¹ ", GetLastError());return(-1);
              return(0);
              }
            if(O2_b1<=S05 && C2_b1>=S05)
              {
               ticket=OrderSend(Symbol(),OP_BUY,CalcVol(),ask,slip,NormalizeDouble(S15-Y*point,digits),
               NormalizeDouble(R05+Y*point,digits),"8B",108,0,Lime);
               Print( "MagicNum=",OrderMagicNumber()," OrderSend ¹ ",GetLastError() );return(-1);
              return(0);
              }
           }
         // - ÏÐÎÁÎÉ (ÂÂÅÐÕÓ ÑÍÈÇ)!!! 
         if (O1_b1>=C1_b1)
           {
            if(O2_b1>=OP && C2_b1<=OP)
              {
               ticket=OrderSend(Symbol(),OP_SELL,CalcVol(),bid,slip,NormalizeDouble(R1+Y*point,digits),
               NormalizeDouble(S1-Y*point,digits),"0S",200,0,Red);
               Print( "MagicNum=",OrderMagicNumber()," OrderSend ¹ ", GetLastError());return(-1);
              return(0);
              }
            if(O2_b1>=S05 && C2_b1<=S05)
              {
               ticket=OrderSend(Symbol(),OP_SELL,CalcVol(),bid,slip,NormalizeDouble(R05+Y*point,digits),
               NormalizeDouble(S15-Y*point,digits),"1S",201,0,Red);
               Print( "MagicNum=",OrderMagicNumber()," OrderSend ¹ ", GetLastError());return(-1);
              return(0);
              }
            if(O2_b1>=S1 && C2_b1<=S1)
              {
               ticket=OrderSend(Symbol(),OP_SELL,CalcVol(),bid,slip,NormalizeDouble(OP+Y*point,digits),
               NormalizeDouble(S2-Y*point,digits),"2S",202,0,Red);
               Print( "MagicNum=",OrderMagicNumber()," OrderSend ¹ ", GetLastError());return(-1);
              return(0);
              }
            if(O2_b1>=S15 && C2_b1<=S15)
              {
               ticket=OrderSend(Symbol(),OP_SELL,CalcVol(),bid,slip,NormalizeDouble(S05+Y*point,digits),
               NormalizeDouble(S25-Y*point,digits),"3S",203,0,Red);
               Print( "MagicNum=",OrderMagicNumber()," OrderSend ¹ ", GetLastError());return(-1);
              return(0);
              }
            if(O2_b1>=S2 && C2_b1<=S2)
              {
               ticket=OrderSend(Symbol(),OP_SELL,CalcVol(),bid,slip,NormalizeDouble(S1+Y*point,digits),
               NormalizeDouble(S3-Y*point,digits),"4S",204,0,Red);
               Print( "MagicNum=",OrderMagicNumber()," OrderSend ¹ ", GetLastError());return(-1);
              return(0);
              }
            if(O2_b1>=S25 && C2_b1<=S25)
              {
               ticket=OrderSend(Symbol(),OP_SELL,CalcVol(),bid,slip,NormalizeDouble(S15+Y*point,digits),
               NormalizeDouble(S3-Y*point,digits),"5S",205,0,Red);
               Print( "MagicNum=",OrderMagicNumber()," OrderSend ¹ ", GetLastError());return(-1);
              return(0);
              }
            if(O2_b1>=R1 && C2_b1<=R1)
              {
               ticket=OrderSend(Symbol(),OP_SELL,CalcVol(),bid,slip,NormalizeDouble(R2+Y*point,digits),
               NormalizeDouble(OP-Y*point,digits),"7S",207,0,Red);
               Print( "MagicNum=",OrderMagicNumber()," OrderSend ¹ ", GetLastError());return(-1);
              return(0);
              }
            if(O2_b1>=R05 && C2_b1<=R05)
              {
               ticket=OrderSend(Symbol(),OP_SELL,CalcVol(),bid,slip,NormalizeDouble(R15+Y*point,digits),
               NormalizeDouble(S05-Y*point,digits),"8S",208,0,Red);
               Print( "MagicNum=",OrderMagicNumber()," OrderSend ¹ ", GetLastError());return(-1);
              return(0);
              }
           }
         // - ÎÒÁÎÉ (ÑÂÅÐÕÓ ÂÍÈÇ È ÂÂÅÐÕ)!!! 

         if (O1_b3<=C1_b3)
           {
            if((L3_b3<=OP && C3_b3>=OP)&& (L2_b3<=OP && C2_b3>=OP))
              {
               ticket=OrderSend(Symbol(),OP_BUY,CalcVol(),ask,slip,NormalizeDouble(S1-Y*point,digits),
               NormalizeDouble(R1+Y*point,digits),"8B",300,0,PaleGreen);
               Print( "MagicNum=",OrderMagicNumber()," OrderSend ¹ ", GetLastError());return(-1);
              return(0);
              }
            if((L3_b3<=R05 && C3_b3>=R05)&& (L2_b3<=R05 && C2_b3>=R05))
              {
               ticket=OrderSend(Symbol(),OP_BUY,CalcVol(),ask,slip,NormalizeDouble(S05-Y*point,digits),
               NormalizeDouble(R15+Y*point,digits),"9B",301,0,PaleGreen);
               Print( "MagicNum=",OrderMagicNumber()," OrderSend ¹ ", GetLastError());return(-1);
              return(0);
              }
            if((L3_b3<=R1 && C3_b3>=R1)&& (L2_b3<=R1 && C2_b3>=R1))
              {
               ticket=OrderSend(Symbol(),OP_BUY,CalcVol(),ask,slip,NormalizeDouble(OP-Y*point,digits),
               NormalizeDouble(R2+Y*point,digits),"10B",302,0,PaleGreen);
               Print( "MagicNum=",OrderMagicNumber()," OrderSend ¹ ", GetLastError());return(-1);
              return(0);
              }
            if((L3_b3<=R15 && C3_b3>=R15)&& (L2_b3<=R15 && C2_b3>=R15))
              {
               ticket=OrderSend(Symbol(),OP_BUY,CalcVol(),ask,slip,NormalizeDouble(R05-Y*point,digits),
               NormalizeDouble(R25+Y*point,digits),"11B",303,0,PaleGreen);
               Print( "MagicNum=",OrderMagicNumber()," OrderSend ¹ ", GetLastError());return(-1);
              return(0);
              }
            if((L3_b3<=R2 && C3_b3>=R2)&& (L2_b3<=R2 && C2_b3>=R2))
              {
               ticket=OrderSend(Symbol(),OP_BUY,CalcVol(),ask,slip,NormalizeDouble(R1-Y*point,digits),
               NormalizeDouble(R3+Y*point,digits),"12B",304,0,PaleGreen);
               Print( "MagicNum=",OrderMagicNumber()," OrderSend ¹ ", GetLastError());return(-1);
              return(0);
              }
            if((L3_b3<=R25 && C3_b3>=R25)&& (L2_b3<=R25 && C2_b3>=R25))
              {
               ticket=OrderSend(Symbol(),OP_BUY,CalcVol(),ask,slip,NormalizeDouble(R15-Y*point,digits),
               NormalizeDouble(R3+Y*point,digits),"13B",305,0,PaleGreen);
               Print( "MagicNum=",OrderMagicNumber()," OrderSend ¹ ", GetLastError());return(-1);
              return(0);
              }
            if((L3_b3<=S1 && C3_b3>=S1)&& (L2_b3<=S1 && C2_b3>=S1))
              {
               ticket=OrderSend(Symbol(),OP_BUY,CalcVol(),ask,slip,NormalizeDouble(S2-Y*point,digits),
               NormalizeDouble(OP+Y*point,digits),"15B",307,0,PaleGreen);
               Print( "MagicNum=",OrderMagicNumber()," OrderSend ¹ ", GetLastError());return(-1);
              return(0);
              }
            if((L3_b3<=S05 && C3_b3>=S05)&& (L2_b3<=S05 && C2_b3>=S05))
              {
               ticket=OrderSend(Symbol(),OP_BUY,CalcVol(),ask,slip,NormalizeDouble(S15-Y*point,digits),
               NormalizeDouble(R05+Y*point,digits),"16B",308,0,PaleGreen);
               Print( "MagicNum=",OrderMagicNumber()," OrderSend ¹ ", GetLastError());return(-1);
              return(0);
              }
           }
         // - ÎÒÁÎÉ (ÑÍÈÇÓ ÂÂÅÐÕ È ÂÍÈÇ)!!!    
         if (O1_b3>=C1_b3)
           {
            if((H3_b3>=OP && C3_b3<=OP) && (H2_b3>=OP && C2_b3<=OP))
              {
               ticket=OrderSend(Symbol(),OP_SELL,CalcVol(),bid,slip,NormalizeDouble(R1+Y*point,digits),
               NormalizeDouble(S1-Y*point,digits),"8S",400,0,Salmon);
               Print( "MagicNum=",OrderMagicNumber()," OrderSend ¹ ", GetLastError());return(-1);
              return(0);
              }
            if((H3_b3>=S05 && C3_b3<=S05) && (H2_b3>=S05 && C2_b3<=S05))
              {
               ticket=OrderSend(Symbol(),OP_SELL,CalcVol(),bid,slip,NormalizeDouble(R05+Y*point,digits),
               NormalizeDouble(S15-Y*point,digits),"9S",401,0,Salmon);
               Print( "MagicNum=",OrderMagicNumber()," OrderSend ¹ ", GetLastError());return(-1);
              return(0);
              }
            if((H3_b3>=S1 && C3_b3<=S1) && (H2_b3>=S1 && C2_b3<=S1))
              {
               ticket=OrderSend(Symbol(),OP_SELL,CalcVol(),bid,slip,NormalizeDouble(OP+Y*point,digits),
               NormalizeDouble(S2-Y*point,digits),"10S",402,0,Salmon);
               Print( "MagicNum=",OrderMagicNumber()," OrderSend ¹ ", GetLastError());return(-1);
              return(0);
              }
            if((H3_b3>=S15 && C3_b3<=S15) && (H2_b3>=S15 && C2_b3<=S15))
              {
               ticket=OrderSend(Symbol(),OP_SELL,CalcVol(),bid,slip,NormalizeDouble(S05+Y*point,digits),
               NormalizeDouble(S25-Y*point,digits),"11S",403,0,Salmon);
               Print( "MagicNum=",OrderMagicNumber()," OrderSend ¹ ", GetLastError());return(-1);
              return(0);
              }
            if((H3_b3>=S2 && C3_b3<=S2) && (H2_b3>=S2 && C2_b3<=S2))
              {
               ticket=OrderSend(Symbol(),OP_SELL,CalcVol(),bid,slip,NormalizeDouble(S1+Y*point,digits),
               NormalizeDouble(S3-Y*point,digits),"12S",404,0,Salmon);
               Print( "MagicNum=",OrderMagicNumber()," OrderSend ¹ ", GetLastError());return(-1);
              return(0);
              }
            if((H3_b3>=S25 && C3_b3<=S25) && (H2_b3>=S25 && C2_b3<=S25))
              {
               ticket=OrderSend(Symbol(),OP_SELL,CalcVol(),ask,slip,NormalizeDouble(S15+Y*point,digits),
               NormalizeDouble(S3-Y*point,digits),"13S",405,0,Salmon);
               Print( "MagicNum=",OrderMagicNumber()," OrderSend ¹ ", GetLastError());return(-1);
              return(0);
              }
            if((H3_b3>=R1 && C3_b3<=R1) && (H2_b3>=R1 && C2_b3<=R1))
              {
               ticket=OrderSend(Symbol(),OP_SELL,CalcVol(),bid,slip,NormalizeDouble(R2+Y*point,digits),
               NormalizeDouble(OP-Y*point,digits),"15S",407,0,Salmon);
               Print( "MagicNum=",OrderMagicNumber()," OrderSend ¹ ", GetLastError());return(-1);
              return(0);
              }
            if((H3_b3>=R05 && C3_b3<=R05) && (H2_b3>=R05 && C2_b3<=R05))
              {
               ticket=OrderSend(Symbol(),OP_SELL,CalcVol(),bid,slip,NormalizeDouble(R15+Y*point,digits),
               NormalizeDouble(S05-Y*point,digits),"16S",408,0,Salmon);
               Print( "MagicNum=",OrderMagicNumber()," OrderSend ¹ ", GetLastError());return(-1);
              return(0);
              }
           }
        }
     }
//-------------------------------------------------------------
   for(i=0;i<=total;i++)
     {
      OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
      if(OrderType()<=OP_SELL && OrderSymbol()==Symbol()&& IsTradeAllowed()==true)
        {
         if(OrderType()==OP_BUY)
           {
            if(CurTime()-OrderOpenTime() >CloseTimeMin_1 &&  OrderProfit( )>=0)
              {
               OrderClose(OrderTicket(),OrderLots(),bid,slip,Violet);
               Sleep(10000);continue;
              }
            if (DayOfWeek()== 5 && (Hour()==CloseHour && Minute()>=CloseMim_1 && Minute()<=CloseMim_2))
              {
               OrderClose(OrderTicket(),OrderLots(),ask,slip,Violet);
               Sleep(10000);continue;
              }
            if(TrailingStop>0)
              {
               if(bid-OrderOpenPrice()>point*TrailingStop)
                 {
                  if(OrderStopLoss()<bid-point*TrailingStop)
                    {
                     OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss()+TrailingStop*point,OrderTakeProfit(),0,Moccasin);
                     Sleep(10000);return(0);
                    }
                 }
              }
           }
         else
           {
            if(OrderType()==OP_SELL)
              {
               if(CurTime()-OrderOpenTime() >CloseTimeMin_1 &&  OrderProfit( )>=0)
                 {
                  OrderClose(OrderTicket(),OrderLots(),ask,slip,Violet);
                  Sleep(10000);continue;
                 }
               if (DayOfWeek()== 5 && (Hour()==CloseHour && Minute()>=CloseMim_1 && Minute()<=CloseMim_2))
                 {
                  OrderClose(OrderTicket(),OrderLots(),ask,slip,Violet);
                  Sleep(10000);continue;
                 }
               if((OrderOpenPrice()-ask)>(point*TrailingStop))
                 {
                  if((OrderStopLoss()>(ask+point*TrailingStop)) || (OrderStopLoss()==0))
                    {
                     OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss()-TrailingStop*point,OrderTakeProfit(),0,Moccasin);
                     Sleep(10000);return(0);
                    }
                 }
              }
           }
        }
     }
//----
   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
Series array that contains open prices of each bar


Indicator Curves created:


Indicators Used:



Custom Indicators Used:

Order Management characteristics:
Checks for the total of open orders
It Closes Orders by itself
It can change open orders parameters, due to possible stepping strategy

Other Features: