← Назад к списку файлов

overdraftspazm v6.mq4

Поиск по коду файла

extern bool VirtualReverse=true; // ??????????? ??????
extern string OldStrategySet_=" ????????? ??????? ?????????";
extern double k=5.0;//????????? ??? ???????? ?????? ???????. ??????? ????????????? ?.?. ????????_???_????????=?????????????_??_??????*k 
extern int period=24;//?????? ??? ??????? ????????????? ? ?????
extern int exp=0;//????? ??????????? ????????????? 0-??????? ?????????? 1-???????-?????????? 
extern int open_close=0;//????? ??????? ????????????? ?? 1-open/close, 0-High/Low
extern bool visualize=true; //????????? ????????

extern string In_=" ????????? ?????";
extern int SpreadMinimumToCloseLOSS=1; // ??????????? ?????? ? ?????? ??? ??????? ???? ????????? ??? ??????? ?????? ???? 0 - ?? ????? ?? ????????
extern int SpreadMinimumToClosePROF=1; // ??????????? ??????? ? ?????? ??? ??????? ???? ????????? ??? ??????? ?????? ???? 0 - ?? ????? ?? ????????
extern bool ReverseSignal=false; // true - ?????????????? ?????? ?????????. 
extern string trade_="????????? ????????";
extern int Magic=777;                     // ?????????? ?????
extern int StopLoss=0;                    // ????????, 0 - ?? ????????????
extern int TakeProfit=0;                  // ?????????? , 0 - ?? ????????????
extern int Slippage=0;                    // ???????????????
extern bool MarketWatch=false;            // ????? ???????? ?? MarketWatch true  = ??????? ???????????? ???????/?????? ??? ??????, ????? ?????????? ??????????? - ??? ????????? ????????
extern bool ClosePosifChange=true;        // ????????? ??????? ??? ???????? ???????
extern bool ONlyOnePosbySignal=true;      // ?????? ?????? ??? ??? ? / ??? ???? 1 ????????
extern int MaxPosifMoreThenOne=5;// ???????????? ?????????? ??????? ???? ONlyOnePosbySignal=false
extern string autolot_="????????? ????????";
extern double Lots=0.1;                   // ????????????? ??? 
extern bool DynamicLot=false;             // ???????????? ???
extern double LotBalancePcnt=20;          // % ?? ????????
extern double MaxLot=999;                 // ???????????? ??? ??? ???????
extern double Martin=1; // ???? 1 ?? ?? ????????????, ??????????? ??????? ?? ????????? ?????? ????? ?????????

extern string timetrade_="????????? ??????? ????????";
extern int OpenHour=0;                    // ??? ???????? ??????
extern int OpenMinute=0;                  // ?????? ???????? ??????
extern int CloseHour=23;                  // ??? ???????? ??????
extern int CloseMinute=59;                // ?????? ???????? ??????
extern string Trailing_="????????? ?????????????";
extern bool TrailingStopUSE=false;        // ???????????? ???????????? 
extern bool IfProfTrail=false;            // ???????????? ?????? ??? ????????? ??????? - ????? ?????????
extern int TrailingStop=0;                // ????????? ????????? = 0 - ?????????? ??????????
extern int TrailingStep=1;                // ??? ?????????
extern string Trailing_SAR="????????? ????????????? SAR";
extern bool TrailingStopSAR=false;        // ???????????? ???????????? 
extern double step=0.02;//-   ?????????? ?????? ?????, ?????? 0.02. 
extern double maximum=0.2;//   -   ???????????? ??????? ?????, ?????? 0.2. 
extern string TrailingLOSS_="????????? ???????????? ????????????? ??????";
extern int TrailingStopLOSS=10;// - ??????? ??? ?????? ????????? 0 - ????????
extern int TrailingstepLOSS=10;// - ??????? ??? ?????? ??? ????? 
extern bool LOSSOrderOnly=true;// ?????? ????????? ???????
extern string CloseProfitLoss=" ????????? ???????? ?? ?????? ???????";
extern string  ?lose="= 1 - ??????, 2 -?????? ,3 -%?????? ,4 -%??????";
extern int     TypeofClose=1; // ??? ???????? ?? ??????? 
extern bool CloseProfit=false;// ????????? ???? +
extern double prifitessss=10; // ?????????? ??????(? ??????????? ?? ?????? TypeofClose) ??? ???????? ???????
extern bool CloseLoss=false;// ????????? ???? -
extern double lossss=-10;// ?????????? ??????(? ??????????? ?? ?????? TypeofClose) ??? ???????? ??????
extern bool OFFAllEaAfterClosePROF=false;// ????????? ??? ????????? ? ??????? ????? ???????? ???????.
extern bool OFFAllEaAfterCloseLOSS=false;// ????????? ??? ????????? ? ??????? ????? ???????? ??????.
extern string BU_="????????? ?????????";
extern bool MovingInWLUSE=false;   // ??????? ??????? ? ?????????
extern int LevelWLoss=0; // ????????? ???????? ? +LevelWLoss ???????
extern int LevelProfit=0;// ????? ?????? ????? ? ???? LevelProfit ???????

int NumberOfPositions(string sy="", int op=-1, int mn=-1) {
  int i, k=OrdersTotal(), kp=0;

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==sy || sy=="") {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) kp++;
          }
        }
      }
    }
  }
  return(kp);
}

int TF;

double Prof,Loss;
bool printtime=false;

double timeCheckSignal; // ????? ???????? ???????
double sl,tp; // ??? ?????????? ?????? 

int sprea[];
double AverSpread=1;
double Spread()
  {
  if(ArraySize(sprea)>999)ArrayResize(sprea,1);
  ArrayResize(sprea,ArraySize(sprea)+1);
  sprea[ArraySize(sprea)-1]=(Ask-Bid)/Point;
  double aver;
  for(int i=0;i<ArraySize(sprea);i++)aver=aver+sprea[i];
   AverSpread=aver/ArraySize(sprea);
   if(AverSpread<1)AverSpread=1;
   ObjectCreate("Original2",OBJ_LABEL,0,0,0);
   ObjectSetText("Original2"," ??????? ??????? ????? ?? ?????? = "+DoubleToStr(AverSpread,8),12,"Arial Bold",Chartreuse);
   ObjectSet("Original2",OBJPROP_CORNER,0);
   ObjectSet("Original2",OBJPROP_XDISTANCE,0);
   ObjectSet("Original2",OBJPROP_YDISTANCE,30);

  }

int start()
  {
      // код доступен только после оплаты
   }

void MovingInWL(string sy="",int op=-1,int mn=-1)
  {
   double po,pp;
   int    i,k=OrdersTotal();

   for(i=0; i<k; i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && (OrderMagicNumber()==mn || mn<0) && (OrderSymbol()==sy || sy==""))
        {
         po=MarketInfo(OrderSymbol(),MODE_POINT);
         if(OrderType()==OP_BUY)
           {
            if(OrderStopLoss()-OrderOpenPrice()<LevelWLoss*po)
              {
               pp=MarketInfo(OrderSymbol(),MODE_BID);
               if(pp-OrderOpenPrice()>LevelProfit*po)
                 {
                  ModifyOrder(-1,OrderOpenPrice()+LevelWLoss*po,-1);
                 }
              }
           }
         if(OrderType()==OP_SELL)
           {
            if(OrderStopLoss()==0 || OrderOpenPrice()-OrderStopLoss()<LevelWLoss*po)
              {
               pp=MarketInfo(OrderSymbol(),MODE_ASK);
               if(OrderOpenPrice()-pp>LevelProfit*po)
                 {
                  ModifyOrder(-1,OrderOpenPrice()-LevelWLoss*po,-1);
                 }
              }
           }
        }
     }
  }

bool TDt(string CloseHour,string CloseMinute,string OpenHour,string OpenMinute) //   ??????? ????????? ?? ??????? ?? ??????? ?????
  {
   if(CloseHour=="23" && CloseMinute=="59" && OpenHour=="0" && OpenMinute=="0")return(true);

   string Autor=" ????? ??????? ??? ??????? : Ambrela0071@mail.ru";

   int TradingTime=false;                                    //   ?????????? ""?????""
   if(StrToTime(CloseHour+":"+CloseMinute)>StrToTime(OpenHour+":"+OpenMinute))
     {
      if(TimeCurrent()<StrToTime(CloseHour+":"+CloseMinute) && TimeCurrent()>=StrToTime(OpenHour+":"+OpenMinute)) //
         TradingTime=true;
     }
   if(StrToTime(CloseHour+":"+CloseMinute)<StrToTime(OpenHour+":"+OpenMinute))
     {
      if(TimeCurrent()<StrToTime(CloseHour+":"+CloseMinute) || TimeCurrent()>=StrToTime(OpenHour+":"+OpenMinute)) //
         TradingTime=true;
     }                                     //
   return(TradingTime);                                  //
  }

bool DxO(string sy="",int op=-1,int mn=-1,datetime ot=0)
  {
   int i,k=OrdersTotal(),ty;
   string Autor=" ????? ??????? ??? ??????? : Ambrela0071@mail.ru";

   if(sy=="0") sy=Symbol();
   for(i=k-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         ty=OrderType();
         if(ty>1 && ty<6)
           {
            if((OrderSymbol()==sy || sy=="") && (op<0 || ty==op))
              {
               if(mn<0 || OrderMagicNumber()==mn)
                 {
                  if(ot<=OrderOpenTime()) {OrderDelete(OrderTicket(),0);}
                 }
              }
           }
        }
     }
   return(False);
  }

void ModifyOrder(double pp=-1,double sl=0,double tp=0,datetime ex=0)
  {
   bool   fm;
   double op,pa,pb,os,ot;
   int    dg=MarketInfo(OrderSymbol(),MODE_DIGITS),er,it;
   string Autor=" ????? ??????? ??? ??????? : Ambrela0071@mail.ru";

   if(pp<=0) pp=OrderOpenPrice();
   if(sl<0 ) sl=OrderStopLoss();
   if(tp<0 ) tp=OrderTakeProfit();

   pp=NormalizeDouble(pp, dg);
   sl=NormalizeDouble(sl, dg);
   tp=NormalizeDouble(tp, dg);
   op=NormalizeDouble(OrderOpenPrice() , dg);
   os=NormalizeDouble(OrderStopLoss()  , dg);
   ot=NormalizeDouble(OrderTakeProfit(), dg);

   if(pp!=op || sl!=os || tp!=ot)
     {
      for(it=1; it<=3; it++)
        {
         if(!IsTesting() && (!IsExpertEnabled() || IsStopped())) break;
         RefreshRates();
         fm=OrderModify(OrderTicket(),pp,sl,tp,ex);
         if(fm)
           {
            break;
              } else {
            er=GetLastError();
            pa=MarketInfo(OrderSymbol(), MODE_ASK);
            pb=MarketInfo(OrderSymbol(), MODE_BID);

           }
        }
     }
  }

bool ExO(string sy="",int op=-1,int mn=-1,datetime ot=0)
  {
   int i,k=OrdersTotal(),ty;
   string Autor=" ????? ??????? ??? ??????? : Ambrela0071@mail.ru";

   if(sy=="0") sy=Symbol();
   for(i=0;i<k;i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         ty=OrderType();
         if(ty>1 && ty<6)
           {
            if((OrderSymbol()==sy || sy=="") && (op<0 || ty==op))
              {
               if(mn<0 || OrderMagicNumber()==mn)
                 {
                  if(ot<=OrderOpenTime()) return(True);
                 }
              }
           }
        }
     }
   return(False);
  }

int SetOrder(string sy,int op,double ll,double pp,
             double sl=0,double tp=0,int mn=0,string lsComm="",datetime ex=0)
  {
   color    clOpen;
   datetime ot;
   double   pa,pb,mp;
   int      err,it,ticket,msl;
   string Autor=" ????? ??????? ??? ??????? : Ambrela0071@mail.ru";

   if(sy=="" || sy=="0") sy=Symbol();
   msl=MarketInfo(sy,MODE_STOPLEVEL);
   if(ex>0 && ex<TimeCurrent()) ex=0;
   for(it=1; it<=5; it++)
     {
      if(!IsTesting() && (!IsExpertEnabled() || IsStopped()))
        {
         Print("SetOrder(): ????????? ?????? ???????");
         break;
        }
      while(!IsTradeAllowed())if(!IsTesting() && !IsOptimization()) Sleep(5000);
      RefreshRates();
      ot=TimeCurrent();
      if(!MarketWatch)ticket=OrderSend(sy,op,ll,NormalizeDouble(pp,MarketInfo(sy,MODE_DIGITS)),Slippage,NormalizeDouble(sl,MarketInfo(sy,MODE_DIGITS)),NormalizeDouble(tp,MarketInfo(sy,MODE_DIGITS)),lsComm,mn,ex,clOpen);
      if(MarketWatch)

        {
         ticket=OrderSend(sy,op,ll,NormalizeDouble(pp,MarketInfo(sy,MODE_DIGITS)),Slippage,0,0,lsComm,mn,ex,clOpen);
         if(SBT(ticket)) ModifyOrder(-1,sl,tp);
        }

      if(ticket>0)
        {
         if(!IsTesting()) WindowScreenShot(WindowExpertName()+"\\"+op+WindowExpertName()+Symbol()+Period()+TimeCurrent()+"_.gif",1024,768);

         return(ticket);
         break;
           } else {
         err=GetLastError();

         Print("Error(",err,") opening position: ",ErrorDescription(err),", try ",it);
         Print("Ask=",pa," Bid=",pb," sy=",sy," ll=",ll," op=",op,
               " pp=",pp," sl=",sl," tp=",tp," mn=",mn);
         if(pa==0 && pb==0) Print("????????? ? ?????? ????? ??????? ??????? "+sy);
         mp=MarketInfo(sy,MODE_POINT);
         pa=MarketInfo(sy, MODE_ASK);
         pb=MarketInfo(sy, MODE_BID);
         if(pa==0 && pb==0) Alert("SetOrder(): ????????? ? ?????? ????? ??????? ??????? "+sy);

         if(err==130)
           {
            switch(op)
              {
               case OP_BUYLIMIT:
                  if(pp>pa-msl*mp) pp=pa-msl*mp;
                  if(sl>pp-(msl+1)*mp) sl=pp-(msl+1)*mp;
                  if(tp>0 && tp<pp+(msl+1)*mp) tp=pp+(msl+1)*mp;
                  break;
               case OP_BUYSTOP:
                  if(pp<pa+(msl+1)*mp) pp=pa+(msl+1)*mp;
                  if(sl>pp-(msl+1)*mp) sl=pp-(msl+1)*mp;
                  if(tp>0 && tp<pp+(msl+1)*mp) tp=pp+(msl+1)*mp;
                  break;
               case OP_SELLLIMIT:
                  if(pp<pb+msl*mp) pp=pb+msl*mp;
                  if(sl>0 && sl<pp+(msl+1)*mp) sl=pp+(msl+1)*mp;
                  if(tp>pp-(msl+1)*mp) tp=pp-(msl+1)*mp;
                  break;
               case OP_SELLSTOP:
                  if(pp>pb-msl*mp) pp=pb-msl*mp;
                  if(sl>0 && sl<pp+(msl+1)*mp) sl=pp+(msl+1)*mp;
                  if(tp>pp-(msl+1)*mp) tp=pp-(msl+1)*mp;
                  break;
              }
            Alert("SetOrder(): ??????????????? ??????? ??????"+sy+"--op-"+op+"--ll-"+ll+"--pp-"+pp+"---"+Slippage+"--sl-"+sl+"--tp-"+tp+"---"+lsComm+"---"+mn+"---"+ex+"---"+clOpen);
           }

         Print("?????? "+err+" ???????? "+ErrorDescription(err));

         if(err==2 || err==64 || err==65 || err==133)
           {
            break;
           }
         if(err==128 || err==142 || err==143)
           {
            Sleep(1000*66.666);
           }

         Alert("Error(",err,") opening position: ",ErrorDescription(err),", try ",it);
         Alert("Ask=",pa," Bid=",pb," sy=",sy," ll=",ll," op=",op,
               " pp=",pp," sl=",sl," tp=",tp," mn=",mn);
         if(pa==0 && pb==0) Alert("????????? ? ?????? ????? ??????? ??????? "+sy);

         if(err==2 || err==64 || err==65 || err==133)
           {
            break;
           }

         if(err==4 || err==131 || err==132)
           {
            Sleep(1000*30); break;
           }
         if(err==140 || err==148 || err==4110 || err==4111) break;
         if(err==141) Sleep(1000*100);
         if(err==145) Sleep(1000*17);
         if(err==146) while(IsTradeContextBusy()) Sleep(1000*11);
         if(err!=135) Sleep(1000*7.7);
        }
     }
  }

bool SBT(int ti,string sy="",int op=-1,int mn=-1)
  {
   int i,k=OrdersTotal();
   string Autor=" ????? ??????? ??? ??????? : Ambrela0071@mail.ru";

   if(sy=="0") sy=Symbol();
   for(i=0;i<k;i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op))
           {
            if((mn<0 || OrderMagicNumber()==mn) && OrderTicket()==ti) return(True);
           }
        }
     }
   return(False);
  }

int OPs(string sy,int op,double ll,double sl=0,double tp=0,int mn=0,string coomment="")
  {
   color    clOpen;
   datetime ot;
   double   pp,pa,pb;
   int      dg,err,it,ticket=0;
   string   lsComm="";
   if(sy=="" || sy=="0") sy=Symbol();
   if(op==OP_BUY) clOpen=Green; else clOpen=Red;
   string Autor=" ????? ??????? ??? ??????? : Ambrela0071@mail.ru";

   for(it=1;it<=3;it++)
     {
      if(!IsTesting() && (!IsExpertEnabled() || IsStopped())) break;
      while(!IsTradeAllowed()) if(!IsTesting() && !IsOptimization())Sleep(5000);
      RefreshRates();
      dg=MarketInfo(sy, MODE_DIGITS);
      pa=MarketInfo(sy, MODE_ASK);
      pb=MarketInfo(sy, MODE_BID);
      if(op==OP_BUY) pp=pa; else pp=pb;
      pp=NormalizeDouble(pp, dg);
      ot=TimeCurrent();
      if(!MarketWatch) ticket=OrderSend(sy,op,ll,pp,Slippage,sl,tp,coomment,mn,0,clOpen);
      if(MarketWatch)

        {
         ticket=OrderSend(sy,op,ll,pp,Slippage,0,0,coomment,mn,0,clOpen);
         if(SBT(ticket)) ModifyOrder(-1,sl,tp);
        }

      if(ticket>0)
        {
         if(!IsTesting()) WindowScreenShot(WindowExpertName()+"\\"+op+WindowExpertName()+Symbol()+Period()+TimeCurrent()+"_.gif",1024,768);

         break;
           } else {
         err=GetLastError();

         Print("Error(",err,") opening position: ",ErrorDescription(err),", try ",it);
         Print("Ask=",pa," Bid=",pb," sy=",sy," ll=",ll," op=",op,
               " pp=",pp," sl=",sl," tp=",tp," mn=",mn);
         if(pa==0 && pb==0) Print("????????? ? ?????? ????? ??????? ??????? "+sy);
         Print("?????? "+err+" ???????? "+ErrorDescription(err));

         if(err==2 || err==64 || err==65 || err==133)
           {
            break;
           }
         if(err==128 || err==142 || err==143)
           {
            Sleep(1000*66.666);
           }

         Alert("Error(",err,") opening position: ",ErrorDescription(err),", try ",it);
         Alert("Ask=",pa," Bid=",pb," sy=",sy," ll=",ll," op=",op,
               " pp=",pp," sl=",sl," tp=",tp," mn=",mn);
         if(pa==0 && pb==0) Alert("????????? ? ?????? ????? ??????? ??????? "+sy);

         if(err==2 || err==64 || err==65 || err==133)
           {
            break;
           }

         if(err==4 || err==131 || err==132)
           {
            Sleep(1000*30); break;
           }
         if(err==140 || err==148 || err==4110 || err==4111) break;
         if(err==141) Sleep(1000*100);
         if(err==145) Sleep(1000*17);
         if(err==146) while(IsTradeContextBusy()) Sleep(1000*11);
         if(err!=135) Sleep(1000*7.7);

        }
     }
   return(ticket);
  }

bool EPs(string sy="",int op=-1,int mn=-1,int ticket=0)
  {
   string Autor=" ????? ??????? ??? ??????? : Ambrela0071@mail.ru";

   int i,k=OrdersTotal();

   if(sy=="0") sy=Symbol();
   for(i=0;i<k;i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==sy || sy=="")
           {
            if(OrderType()==OP_BUY || OrderType()==OP_SELL)
              {
               if(op<0 || OrderType()==op)
                 {
                  if(mn<0 || OrderMagicNumber()==mn)
                    {
                     if(ticket==OrderTicket() || ticket==0) return(True);
                    }
                 }
              }
           }
        }
     }
   return(False);
  }

double lastlot;

double GetSizeLot(double ll=1) //??????? ?????????? ???????? ?????, 
  {
   string Autor=" ????? ??????? ??? ??????? : Ambrela0071@mail.ru";
   string lotcalc;

   string Valdepo=AccountCurrency();

   double Lot2,MinLots,MaxLots;
   int lotdig;
   if(MarketInfo(Symbol(),MODE_LOTSTEP)==0.01)lotdig=2; else lotdig=1;
   if(Valdepo=="USD")
     {
      if(StringSubstr(Symbol(),0,3)=="USD")Lot2=NormalizeDouble(AccountFreeMargin()*LotBalancePcnt*AccountLeverage()/100/MarketInfo(Symbol(),MODE_LOTSIZE),lotdig);
      else if(StringSubstr(Symbol(),3,3)=="USD")Lot2=NormalizeDouble(AccountFreeMargin()*LotBalancePcnt*AccountLeverage()/Ask/100/MarketInfo(Symbol(),MODE_LOTSIZE),lotdig);
      else
        {
         double pr=MarketInfo(StringSubstr(Symbol(),0,3)+"USD",MODE_ASK);
         if(pr!=0)Lot2=NormalizeDouble(AccountFreeMargin()*LotBalancePcnt*AccountLeverage()/pr/100/MarketInfo(Symbol(),MODE_LOTSIZE),lotdig);
         else Lot2=NormalizeDouble(AccountFreeMargin()*LotBalancePcnt*AccountLeverage()/100/MarketInfo(Symbol(),MODE_LOTSIZE),lotdig);
        }
     }
   if(Valdepo=="EUR")
     {
      if(StringSubstr(Symbol(),0,3)=="EUR")Lot2=NormalizeDouble(AccountFreeMargin()*LotBalancePcnt*AccountLeverage()/100/MarketInfo(Symbol(),MODE_LOTSIZE),lotdig);
      else
        {
         pr=MarketInfo("EUR"+StringSubstr(Symbol(),0,3),MODE_BID);
         if(pr!=0)Lot2=NormalizeDouble(AccountFreeMargin()*LotBalancePcnt*AccountLeverage()*pr/100/MarketInfo(Symbol(),MODE_LOTSIZE),lotdig);
         else Lot2=NormalizeDouble(AccountFreeMargin()*LotBalancePcnt*AccountLeverage()/100/MarketInfo(Symbol(),MODE_LOTSIZE),lotdig);
        }
     }
   MinLots=MarketInfo(Symbol(),MODE_MINLOT);
   MaxLots=MaxLot;
   lotcalc=" Autolot="+Lot2;
   if(!DynamicLot)Lot2=Lots;
   if(Martin!=1)
     {
      if(isCloseLastPosByStop(Symbol(),-1,Magic)==1)lastlot=OrderLots()*Martin;
      if(isCloseLastPosByStop(Symbol(),-1,Magic)==2)lastlot=OrderLots();
      if(isCloseLastPosByStop(Symbol(),-1,Magic)==0)lastlot=Lot2;
      lotcalc=lotcalc+" Martinlot="+lastlot;
      Lot2=lastlot;
     }
   if(Lot2 < MinLots) Lot2 = MinLots;
   if(Lot2 > MaxLots) Lot2 = MaxLots;
   lotcalc=lotcalc+" MinLots="+MinLots+" LOT="+NormalizeDouble(Lot2,lotdig);
   Print(lotcalc);
   return(NormalizeDouble(Lot2,lotdig));
  }

void CPBS()
  {
   bool   fc;
   color  clClose;
   double ll,pa,pb,pp;
   int    err,it;
   string Autor=" ????? ??????? ??? ??????? : Ambrela0071@mail.ru";

   if(OrderType()==OP_BUY || OrderType()==OP_SELL)
     {
      for(it=1; it<=5; it++)
        {
         RefreshRates();
         pa=MarketInfo(OrderSymbol(), MODE_ASK);
         pb=MarketInfo(OrderSymbol(), MODE_BID);
         if(OrderType()==OP_BUY)
           {
            pp=pb;
              } else {
            pp=pa;
           }
         ll=OrderLots();
         fc=OrderClose(OrderTicket(), ll, pp, 1, clClose);
         if(fc)
           {
            break;
              } else {
            err=GetLastError();

            Print("Error(",err,") opening position: ",ErrorDescription(err),", try ",it);
           }
        }
     }
  }

void CPD(string sy="",int op=-1,int mn=-1)
  {
   int i,k=OrdersTotal();
   string Autor=" ????? ??????? ??? ??????? : Ambrela0071@mail.ru";

   if(sy=="0") sy=Symbol();
   for(i=k-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op))
           {
            if(OrderType()==OP_BUY || OrderType()==OP_SELL)
              {
               if(mn<0 || OrderMagicNumber()==mn) 
               if(SpreadMinimumToCloseLOSS==0||GetProfitOpenPosInPoint(sy,op,mn)<=0-SpreadMinimumToCloseLOSS*AverSpread){Print(" Tiket="+OrderTicket()+" Profit="+OrderProfit()+" AverSpread="+AverSpread);OrderSelect(i,SELECT_BY_POS,MODE_TRADES);CPBS();}
               if(SpreadMinimumToClosePROF==0||GetProfitOpenPosInPoint(sy,op,mn)>=SpreadMinimumToClosePROF*AverSpread){Print(" Tiket="+OrderTicket()+" Profit="+OrderProfit()+" AverSpread="+AverSpread);OrderSelect(i,SELECT_BY_POS,MODE_TRADES);CPBS();}
              }
           }
        }
     }
  }

  int GetProfitOpenPosInPoint(string sy="", int op=-1, int mn=-1) {
  double p;
  int    i, k=OrdersTotal(), pr=0;

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) {
        if (mn<0 || OrderMagicNumber()==mn) {
          p=MarketInfo(OrderSymbol(), MODE_POINT);
          if (p==0) if (StringFind(OrderSymbol(), "JPY")<0) p=0.0001; else p=0.01;
          if (OrderType()==OP_BUY) {
            pr+=(MarketInfo(OrderSymbol(), MODE_BID)-OrderOpenPrice())/p;
          }
          if (OrderType()==OP_SELL) {
            pr+=(OrderOpenPrice()-MarketInfo(OrderSymbol(), MODE_ASK))/p;
          }
        }
      }
    }
  }
  return(pr);
}

void SimpleTrailingSAR(string sy="",int op=-1,int mn=-1)
  {
   double po,pp;
   double SAR=iSAR(sy,0,step,maximum,0);
   int    i,k=OrdersTotal();
   string Autor=" ????? ??????? ??? ??????? : Ambrela0071@mail.ru";

   if(sy=="0") sy=Symbol();
   if(TrailingStop==0)TrailingStop=MarketInfo(Symbol(),MODE_STOPLEVEL);
   for(i=0;i<k;i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op))
           {
            po=MarketInfo(OrderSymbol(),MODE_POINT);
            if(mn<0 || OrderMagicNumber()==mn)
              {
               if(OrderType()==OP_BUY)
                 {
                  pp=MarketInfo(OrderSymbol(),MODE_BID);
                  if(OrderStopLoss()<SAR)
                    {
                     ModifyOr

Показано первые 50% кода (символов: 36640)

Как получить полную версию?

Введите ваш email и нажмите кнопку, чтобы перейти к оплате.