Profit factor:
0.00
Orders Execution
Checks for the total of open ordersIt Closes Orders by itself It automatically opens orders when conditions are reached
Miscellaneous
It issuies visual alerts to the screen
10 Views
0 Downloads
0 Favorites
Split_f2k
//+------------------------------------------------------------------+
//|                               Copyright © 2011, Vladimir Hlystov |
//|    Çàêðûâàåò âñå îðäåðà ïðè îïðåäåëåííîì ïðîôèòå                 |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, http://cmillion.narod.ru"
#property link      "cmillion@narod.ru"

extern string b       = "Ïàðàìåòðû ñêðèïòà";

#property show_inputs
//--------------------------------------------------------------------
extern datetime TimeSet        = D'2011.12.10 17:47'; //Âðåìÿ âûñòàâëåíèÿ îðäåðîâ, åñëè òåêóùåå âðåìÿ áîëüøå óñòàíîâëåííîãî, òî âûñòàâëÿþòñÿ ñðàçó
extern bool     Stop           = true;     //îòêðûòü ñòîï îðäåðà
extern bool     Limit          = false;     //îòêðûòü ëèìèòíûå îðäåðà
extern bool     SELL           = true;     //îòêðûòü îðäåðà SELL
extern bool     BUY            = true;     //îòêðûòü îðäåðà BUY
extern string   __             = "";
extern double   FirstBuyStop   = 0;        //öåíà âûñòàâëåíèÿ ïåðâîãî BuyStop îðäåðà, åñëè 0 òî ïåðâûé BuyStop áóäåò âûñòàâëåí ïî öåíå Ask+delta
extern double   FirstSellStop  = 0;        //öåíà âûñòàâëåíèÿ ïåðâîãî SellStop îðäåðà, åñëè 0 òî ïåðâûé SellStop áóäåò âûñòàâëåí ïî öåíå Bid-delta
extern double   FirstBuyLimit  = 0;        //öåíà âûñòàâëåíèÿ ïåðâîãî BuyLimit îðäåðà, åñëè 0 òî ïåðâûé BuyLimit áóäåò âûñòàâëåí ïî öåíå Bid-delta
extern double   FirstSellLimit = 0;        //öåíà âûñòàâëåíèÿ ïåðâîãî SellLimit îðäåðà, åñëè 0 òî ïåðâûé SellLimit áóäåò âûñòàâëåí ïî öåíå Ask+delta
extern int      FirstStop      = 50;      //ðàññòîÿíèå (â ïóíêòàõ) îò òåêóùåé öåíû äî ïåðâîãî Stop îðäåðà â ñëó÷àå First..Stop=0 
extern int      FirstLimit     = 0;       //ðàññòîÿíèå (â ïóíêòàõ) îò òåêóùåé öåíû äî ïåðâîãî Limit îðäåðà â ñëó÷àå First..Limit=0
extern int      StepStop       = 50;       //ðàññòîÿíèå (â ïóíêòàõ) ìåæäó Stop îðäåðàìè
extern int      StepLimit      = 0;       //ðàññòîÿíèå (â ïóíêòàõ) ìåæäó Limit îðäåðàìè
extern string   _              = "";
extern int      Orders         = 15;        //êîë-âî îðäåðîâ ñåòêè
extern double   LotStop        = 0.01;      //îáúåì ïåðâîãî Stop îðäåðà
extern double   K_LotStop      = 1.2;        //óìíîæåíèå ëîòà Stop îðäåðîâ 
extern double   LotLimit       = 0.01;      //îáúåì ïåðâîãî Limit îðäåðà
extern double   K_LotLimit     = 1.2;        //óìíîæåíèå ëîòà Limit îðäåðîâ
extern int      stoploss       = 0;       //óðîâåíü âûñòàâëåíèÿ SL, åñëè 0, òî SL íå âûñòàâëÿåòñÿ
extern int      takeprofit     = 0;      //óðîâåíü âûñòàâëåíèÿ TP, åñëè 0, òî TP íå âûñòàâëÿåòñÿ
extern int      Expiration     = 1440;     //Ñðîê èñòå÷åíèÿ îòëîæåííîãî îðäåðà â ìèíóòàõ, åñëè 0, òî ñðîê íå îãðàíè÷åí (1440 - ñóòêè)
extern int      attempts       = 10;       //êîë-âî ïîïûòîê îòêðûòèÿ îðäåðà 
extern int      Magic          = 0;        //óíèêàëüíûé íîìåð îðäåðà
//--------------------------------------------------------------------
string txt;
int n,slippage=3,STOPLEVEL;
datetime expiration;

extern string a       = "Ïàðàìåòðû ñîâåòíèêà";
//-------------------------------------------------------------------
extern double ProfitClose     = 10;   //çàêðûâàòü âñå îðäåðà ïðè ïîëó÷åíèè ïðîôèòà
extern double LossClose       = 1000; //çàêðûâàòü âñå îðäåðà ïðè ïîëó÷åíèè óáûòêà
extern bool   AllSymbol       = false;//ó÷èòûâàòü âñå èíñòðóìåíòû èëè òîëüêî òîò, íà êîòîðîì ñòîèò ñîâåòíèê
//-------------------------------------------------------------------
string _txt;
int init()
{
   ObjectCreate("Balance", OBJ_LABEL, 0, 0, 0);
   ObjectSet("Balance", OBJPROP_CORNER, 1);
   ObjectSet("Balance", OBJPROP_XDISTANCE, 5);
   ObjectSet("Balance", OBJPROP_YDISTANCE, 15);
   ObjectCreate("Equity", OBJ_LABEL, 0, 0, 0);
   ObjectSet("Equity", OBJPROP_CORNER, 1);
   ObjectSet("Equity", OBJPROP_XDISTANCE, 5);
   ObjectSet("Equity", OBJPROP_YDISTANCE, 25);
   ObjectCreate("Profit", OBJ_LABEL, 0, 0, 0);
   ObjectSet("Profit", OBJPROP_CORNER, 1);
   ObjectSet("Profit", OBJPROP_XDISTANCE, 5);
   ObjectSet("Profit", OBJPROP_YDISTANCE, 35);
   ObjectCreate("Copyright", OBJ_LABEL, 0, 0, 0);
   ObjectSet("Copyright", OBJPROP_CORNER, 3);
   ObjectSet("Copyright", OBJPROP_XDISTANCE, 5);
   ObjectSet("Copyright", OBJPROP_YDISTANCE, 5);
   ObjectSetText("Copyright","CloseProfit Copyright © 2011, http://cmillion.narod.ru\n",8,"Arial",Gold);
   if (AllSymbol) _txt = "Ïî âñåì èíñòðóìåíòàì ñ÷åòà";
   return(0);
}
//-------------------------------------------------------------------
int deinit()
{
   ObjectDelete("Balance");
   ObjectDelete("Equity");
   ObjectDelete("Profit");
   ObjectDelete("Copyright");
   return(0);
}
//-------------------------------------------------------------------
int start()
{
   if(OrdersTotal()==0)
   {
      script();
   }
   
   double Profit;
   int b,s,OT;
   for (int i=OrdersTotal()-1; i>=0; i--)
   {                                               
      if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {
         if (OrderSymbol() == Symbol() || AllSymbol)
         {
            OT = OrderType();
            if (OT==OP_BUY)
            {
               b++;
               Profit+=OrderProfit();
            }
            if (OT==OP_SELL)
            {
               s++;
               Profit+=OrderProfit();
            }
         }
      }
   }
   Comment(_txt,"\nBuy ",b,"\nSell ",s);
   //--- 
   if (Profit>=ProfitClose) 
   {
      Alert("Äîñòèãíóò óðîâåíü ïðîôèòà = "+DoubleToStr(Profit,2));
      CloseAll();
   }
   if (Profit<=-LossClose)
   {
      Alert("Äîñòèãíóò óðîâåíü ìàêñèìàëüíîãî óáûòêà "+DoubleToStr(Profit,2));
      CloseAll();
   }
   ObjectSetText("Balance",StringConcatenate("Balance ",DoubleToStr(AccountBalance(),2)),12,"Arial",Gold);
   ObjectSetText("Equity",StringConcatenate("Equity ",DoubleToStr(AccountEquity(),2)),12,"Arial",Gold);
   if (AllSymbol) ObjectSetText("Profit",StringConcatenate("Profit All Symbol ",DoubleToStr(Profit,2)),12,"Arial",Color(Profit));
   else ObjectSetText("Profit",StringConcatenate("Profit ",DoubleToStr(Profit,2)),12,"Arial",Color(Profit));
return;
}
//------------------------------------------------------------------
color Color(double P)
{
   if (P>0) return(Gold);
   if (P<0) return(Red);
   if (P==0) return(Green);
}
//------------------------------------------------------------------
bool CloseAll()
{
   bool error=true;
   int err,nn,OT;
   string Symb;
   while(true)
   {
      for (int j = OrdersTotal()-1; j >= 0; j--)
      {
         if (OrderSelect(j, SELECT_BY_POS))
         {
            Symb = OrderSymbol();
            if (Symb == Symbol() || AllSymbol)
            {
               OT = OrderType();
               if (OT>1) 
               {
                  OrderDelete(OrderTicket());
               }
               if (OT==OP_BUY) 
               {
                  error=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(Symb,MODE_BID),MarketInfo(Symb,MODE_DIGITS)),3,Blue);
                  if (error) Alert(Symb,"  Çàêðûò îðäåð N ",OrderTicket(),"  ïðèáûëü ",OrderProfit(),
                                     "     ",TimeToStr(TimeCurrent(),TIME_SECONDS));
               }
               if (OT==OP_SELL) 
               {
                  error=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(Symb,MODE_ASK),MarketInfo(Symb,MODE_DIGITS)),3,Red);
                  if (error) Alert(Symb,"  Çàêðûò îðäåð N ",OrderTicket(),"  ïðèáûëü ",OrderProfit(),
                                     "     ",TimeToStr(TimeCurrent(),TIME_SECONDS));
               }
               if (!error) 
               {
                  err = GetLastError();
                  if (err<2) continue;
                  if (err==129) 
                  {  Comment("Íåïðàâèëüíàÿ öåíà ",TimeToStr(TimeCurrent(),TIME_MINUTES));
                     Sleep(5000);
                     RefreshRates();
                     continue;
                  }
                  if (err==146) 
                  {
                     if (IsTradeContextBusy()) Sleep(2000);
                     continue;
                  }
                  Comment("Îøèáêà ",err," çàêðûòèÿ îðäåðà N ",OrderTicket(),
                          "     ",TimeToStr(TimeCurrent(),TIME_MINUTES));
               }
            }
         }
      }
      int n=0;
      for (j = 0; j < OrdersTotal(); j++)
      {
         if (OrderSelect(j, SELECT_BY_POS))
         {
            if (OrderSymbol() == Symbol() || AllSymbol)
            {
               OT = OrderType();
               if (OT==OP_BUY || OT==OP_SELL) n++;
            }
         }  
      }
      if (n==0) break;
      nn++;
      if (nn>10) {Alert(Symb,"  Íå óäàëîñü çàêðûòü âñå ñäåëêè, îñòàëîñü åùå ",n);return(0);}
      Sleep(1000);
      RefreshRates();
   }
   return(1);
}
//--------------------------------------------------------------------

int script()
{
//===========================================================================================================================================   
//===========================================================================================================================================   
//===========================================================================================================================================   
/*============================================*/if (IsTesting() && OrdersTotal()>0) return;/*===============================================*/
//===========================================================================================================================================   
//===========================================================================================================================================   
//===========================================================================================================================================   
   if (Expiration>0) expiration=TimeCurrent()+Expiration*60; else expiration=0;
   Comment("Çàïóñê ñêðèïòà OpenStopOrderNetTime ",TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS));
   STOPLEVEL=MarketInfo(Symbol(),MODE_STOPLEVEL);
   if (Digits==3 || Digits==5) slippage=30;
   while (TimeCurrent()<TimeSet)
   {
      Sleep(1000);
      Comment("Ñêðèïò âûñòàâëåíèÿ ñåòêè îòëîæåííûõ îðäåðîâ Copyright © 2011 cmillion@narod.ru\n",
      TimeToStr(TimeCurrent(),TIME_SECONDS)," Äî âûñòàâëåíèÿ ñåòêè îñòàëîñü ",TimeToStr(TimeSet-TimeCurrent(),TIME_SECONDS));
      RefreshRates();
   }
   double PriceBS,PriceBL,PriceSS,PriceSL;
   double LOTs=LotStop;
   double LOTl=LotLimit;
   if (FirstBuyStop==0) PriceBS = NormalizeDouble(Ask+FirstStop*Point,Digits);
   else PriceBS = NormalizeDouble(FirstBuyStop,Digits);
   if ((PriceBS-Ask)/Point<STOPLEVEL) {Alert("Ïåðâûé îðäåð BuyStop íå ìîæåò áûòü óñòàíîâëåí áëèæå ÷åì ",STOPLEVEL," ï");return;}
   
   if (FirstSellStop==0) PriceSS = NormalizeDouble(Bid-FirstStop*Point,Digits);
   else PriceSS = NormalizeDouble(FirstSellStop,Digits);
   if ((Bid-PriceSS)/Point<STOPLEVEL) {Alert("Ïåðâûé îðäåð SellStop íå ìîæåò áûòü óñòàíîâëåí áëèæå ÷åì ",STOPLEVEL," ï");return;}
   
   if (FirstBuyLimit==0) PriceBL = NormalizeDouble(Bid-FirstLimit*Point,Digits);
   else PriceBL = NormalizeDouble(FirstBuyLimit,Digits);
   if ((Bid-PriceBL)/Point<STOPLEVEL) {Alert("Ïåðâûé îðäåð BuyLimit íå ìîæåò áûòü óñòàíîâëåí áëèæå ÷åì ",STOPLEVEL," ï");return;}
   
   if (FirstSellLimit==0) PriceSL = NormalizeDouble(Ask+FirstLimit*Point,Digits);
   else PriceSL = NormalizeDouble(FirstSellLimit,Digits);
   if ((PriceSL-Ask)/Point<STOPLEVEL) {Alert("Ïåðâûé îðäåð SellLimit íå ìîæåò áûòü óñòàíîâëåí áëèæå ÷åì ",STOPLEVEL," ï");return;}
   
   for (int i=1; i<=Orders; i++)
   {
      if (Stop)
      {
         if (BUY)
         {
            OPENORDER (OP_BUYSTOP,PriceBS,LOTs,i);
            PriceBS = NormalizeDouble(PriceBS+StepStop*Point,Digits);
         }
         if (SELL)
         {  
            OPENORDER (OP_SELLSTOP,PriceSS,LOTs,i);
            PriceSS = NormalizeDouble(PriceSS-StepStop*Point,Digits);
         }
      }
      LOTs=LOTs*K_LotStop;
      if (Limit)
      {
         if (BUY)
         {
            OPENORDER (OP_BUYLIMIT,PriceBL,LOTl,i);
            PriceBL = NormalizeDouble(PriceBL-StepLimit*Point,Digits);
         }
         if (SELL)
         {  
            OPENORDER (OP_SELLLIMIT,PriceSL,LOTl,i);
            PriceSL = NormalizeDouble(PriceSL+StepLimit*Point,Digits);
         }
      }
      LOTl=LOTl*K_LotLimit;
   }
   Comment("Ñêðèïò çàêîí÷èë ñâîþ ðàáîòó, âûñòàâëåíî ",n," îðäåðîâ  ",TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS));
return(0);
}
//--------------------------------------------------------------------
void OPENORDER(int ord,double Price,double LOT,int i)
{
   int error,err;
   double SL,TP;
   while (true)
   {  error=true;
      if (ord==OP_BUYSTOP) 
      {
         if (takeprofit!=0) TP  = NormalizeDouble(Price + takeprofit*Point,Digits); else TP=0;
         if (stoploss!=0)   SL  = NormalizeDouble(Price - stoploss*Point,Digits); else SL=0;     
         error=OrderSend(Symbol(),ord, LOT,Price,slippage,SL,TP,"setka_eurusd",Magic,expiration,Blue);
      }
      if (ord==OP_SELLSTOP) 
      {
         if (takeprofit!=0) TP = NormalizeDouble(Price - takeprofit*Point,Digits); else TP=0;
         if (stoploss!=0)   SL = NormalizeDouble(Price + stoploss*Point,Digits);  else SL=0;              
         error=OrderSend(Symbol(),ord,LOT,Price,slippage,SL,TP,"setka_eurusd",Magic,expiration,Red);
      }
      if (ord==OP_SELLLIMIT) 
      {
         if (takeprofit!=0) TP = NormalizeDouble(Price - takeprofit*Point,Digits); else TP=0;
         if (stoploss!=0)   SL = NormalizeDouble(Price + stoploss*Point,Digits);  else SL=0;              
         error=OrderSend(Symbol(),ord, LOT,Price,slippage,SL,TP,"setka_eurusd",Magic,expiration,Blue);
      }
      if (ord==OP_BUYLIMIT) 
      {
         if (takeprofit!=0) TP  = NormalizeDouble(Price + takeprofit*Point,Digits); else TP=0;
         if (stoploss!=0)   SL  = NormalizeDouble(Price - stoploss*Point,Digits); else SL=0;     
         error=OrderSend(Symbol(),ord,LOT,Price,slippage,SL,TP,"setka_eurusd",Magic,expiration,Red);
      }
      if (error==-1)
      {  
         txt=StringConcatenate(txt,"\nError ",GetLastError());
         if (ord==OP_BUYSTOP)   txt = StringConcatenate(txt,"  OPENORDER BUYSTOP ",  i,"   Ask =",DoubleToStr(Ask,Digits),"   Price =",DoubleToStr(Price,Digits)," (",NormalizeDouble((Price-Ask)/Point,0),")  SL =",DoubleToStr(SL,Digits)," (",NormalizeDouble((Price-SL)/Point,0),")  TP=",DoubleToStr(TP,Digits)," (",NormalizeDouble((TP-Price)/Point,0),")  STOPLEVEL=",STOPLEVEL);
         if (ord==OP_SELLSTOP)  txt = StringConcatenate(txt,"  OPENORDER SELLSTOP ", i,"   Bid =",DoubleToStr(Bid,Digits),"   Price =",DoubleToStr(Price,Digits)," (",NormalizeDouble((Bid-Price)/Point,0),")  SL =",DoubleToStr(SL,Digits)," (",NormalizeDouble((SL-Price)/Point,0),")  TP=",DoubleToStr(TP,Digits)," (",NormalizeDouble((Price-TP)/Point,0),")  STOPLEVEL=",STOPLEVEL);
         if (ord==OP_SELLLIMIT) txt = StringConcatenate(txt,"  OPENORDER SELLLIMIT ",i,"   Ask =",DoubleToStr(Ask,Digits),"   Price =",DoubleToStr(Price,Digits)," (",NormalizeDouble((Price-Ask)/Point,0),")  SL =",DoubleToStr(SL,Digits)," (",NormalizeDouble((Price-SL)/Point,0),")  TP=",DoubleToStr(TP,Digits)," (",NormalizeDouble((TP-Price)/Point,0),")  STOPLEVEL=",STOPLEVEL);
         if (ord==OP_BUYLIMIT)  txt = StringConcatenate(txt,"  OPENORDER BUYLIMIT ", i,"   Bid =",DoubleToStr(Bid,Digits),"   Price =",DoubleToStr(Price,Digits)," (",NormalizeDouble((Bid-Price)/Point,0),")  SL =",DoubleToStr(SL,Digits)," (",NormalizeDouble((SL-Price)/Point,0),")  TP=",DoubleToStr(TP,Digits)," (",NormalizeDouble((Price-TP)/Point,0),")  STOPLEVEL=",STOPLEVEL);
         //Print(txt);
         //Comment(txt,"  ",TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS));
         err++;Sleep(1000);RefreshRates();
      }
      else 
      {
         Comment("Îðäåð ",error," óñïåøíî âûñòàâëåí ",TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS));
         n++;
         return;
      }
      if (err>attempts) return;
   }
return;
}                  
//--------------------------------------------------------------------


Comments