Orders Execution
It automatically opens orders when conditions are reachedChecks for the total of open ordersIt Closes Orders by itself
Miscellaneous
It issuies visual alerts to the screen
0 Views
0 Downloads
0 Favorites
cm-insurer
//+------------------------------------------------------------------+
//|                               Copyright © 2014, Vladimir Hlystov |
//|    Çàêðûâàåò âñå îðäåðà ïðè îïðåäåëåííîì ïðîôèòå                 |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2014, http://cmillion.narod.ru"
#property link      "cmillion@narod.ru"
#property version   "1.0"
#property description "Ñîâåòíèê âûñòàâëÿåò íà ðàññòîÿíèè îò êðàéíèõ îðäåðîâ ñòîï îðäåðà óêàçàííîãî îáúåìà, ïîñëå èõ ñðàáàòûâàíèÿ è äîñòèæåíèÿ ñóììàðíîãî ïðîôèòà âñåõ îðäåðîâ äàííîé âàëþòíîé ïàðå, ñîâåòíèê âñå çàêðûâàåò ïîçèöèè ïî ýòîé ïàðå"
#property strict
//-------------------------------------------------------------------
extern double PercentProfitClose = 0.1;   //çàêðûâàòü âñå îðäåðà ïðè ïîëó÷åíèè ïðîôèòà â ïðîöåíòå îò äåïîçèòà
extern double Lot                = 5;     //ëîò ñòðàõóþùåãî ñòîï îðäåðà
extern int    delta              = 25;    //ðàññòîÿíèå äî ñòîï îðäåðà îò êðàéíåé ïîçèöèè
//--------------------------------------------------------------------
int init()
{
   if (IsTesting()) 
   {
      int err=OrderSend(Symbol(),OP_SELL,Lot/2,NormalizeDouble(Bid,Digits),30,0,0,NULL,0,0,Red);
   }
   return(0);
}
//-------------------------------------------------------------------
int deinit()
{
   return(0);
}
//-------------------------------------------------------------------
int start()
{
   double Profit=0,LB=0,LS=0,OL=0,MaxPrice=0,MinPrice=0;
   int b=0,s=0,bs=0,ss=0,OT;
   for (int i=OrdersTotal()-1; i>=0; i--)
   {                                               
      if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {
         if (OrderSymbol() == Symbol())
         {
            OT = OrderType();
            OL = OrderLots();
            double OOP = OrderOpenPrice();
            if (MaxPrice<OOP) MaxPrice=OOP;
            if (MinPrice>OOP || MinPrice==0) MinPrice=OOP;
            if (OT==OP_BUY)
            {
               b++;LB+= OL;
               Profit+=OrderProfit();
            }
            if (OT==OP_SELL)
            {
               s++;LS+= OL;
               Profit+=OrderProfit();
            }
            if (OT==OP_BUYSTOP) bs++;
            if (OT==OP_SELLSTOP) ss++;
         }
      }
   }
   //--- 
   if (Profit>=AccountBalance()/100*PercentProfitClose) 
   {
      Alert("Äîñòèãíóò óðîâåíü ïðîôèòà = "+DoubleToStr(Profit,2));
      CloseAll();
   }
   //--- 
   int err;
   if (bs==0) 
   {
      err=OrderSend(Symbol(),OP_BUYSTOP, Lot,NormalizeDouble(MaxPrice+delta*Point,Digits),30,0,0,NULL,0,0,Blue);
   }
   if (ss==0) 
   {
      err=OrderSend(Symbol(),OP_SELLSTOP,Lot,NormalizeDouble(MinPrice-delta*Point,Digits),30,0,0,NULL,0,0,Red);
   }
return(0);
}
//------------------------------------------------------------------
bool CloseAll()
{
   bool error=true;
   int j,err,nn,OT;
   while(true)
   {
      for (j = OrdersTotal()-1; j >= 0; j--)
      {
         if (OrderSelect(j, SELECT_BY_POS))
         {
            if (OrderSymbol() == Symbol())
            {
               OT = OrderType();
               if (OT>1) 
               {
                  error=OrderDelete(OrderTicket());
               }
               if (OT==OP_BUY) 
               {
                  error=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),3,Blue);
                  if (error) Alert(Symbol(),"  Çàêðûò îðäåð N ",OrderTicket(),"  ïðèáûëü ",OrderProfit(),
                                     " ",TimeToStr(TimeCurrent(),TIME_SECONDS));
               }
               if (OT==OP_SELL) 
               {
                  error=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),3,Red);
                  if (error) Alert(Symbol(),"  Çàêðûò îðäåð 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 k=0;
      for (j = 0; j < OrdersTotal(); j++)
      {
         if (OrderSelect(j, SELECT_BY_POS))
         {
            if (OrderSymbol() == Symbol())
            {
               OT = OrderType();
               if (OT==OP_BUY || OT==OP_SELL) k++;
            }
         }  
      }
      if (k==0) break;
      nn++;
      if (nn>10) {Alert(Symbol(),"  Íå óäàëîñü çàêðûòü âñå ñäåëêè, îñòàëîñü åùå ",k);return(0);}
      Sleep(1000);
      RefreshRates();
   }
   return(1);
}
//--------------------------------------------------------------------

Comments

Markdown supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---