VR---Limit_losses

Author: Copyright 2014, www.trading-go.ru Project.
Orders Execution
Checks for the total of closed ordersChecks for the total of open orders
0 Views
0 Downloads
0 Favorites
VR---Limit_losses
//+------------------------------------------------------------------+
//|                                            VR---Limit losses.mq4 |
//|                  "Copyright 2014, www.trading-go.ru Project."    |
//|                                   "http://www.trading-go.ru"     |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, www.trading-go.ru Project."
#property link      "http://www.trading-go.ru"

#property version   "1.00"
#property strict
//Äíåâíîé ëèìèò â âàëþòå äåïîçèòà
input double DayLimit=100;
// Ìåäæèê íîìåð îðäåðîâ ïðè -1 ñîâåòíèê êîíòðîëèðóåò âñå îðäåðà è ðó÷íûå è ñîâåòíèêîâ, ïðè 0 òîëüêî ðó÷íûå.
input int    Magic=-1;
// Ïîñêàëüçûâàíèå ïðè çàêðûòèè îðäåðîâ
input int    Slippage=20;
bool trade_flag=false;   // Ôëàã ðàçðåøåíèÿ òîðãîâëè
string text="";          // òåêñòîâàÿ ïåðåìåííàÿ
//+------------------------------------------------------------------+
void OnTick()
  {
   double DayProfit=0;                                                                  // ïåðåìåííàÿ äëÿ ïîäñ÷åòà îáùåãî ïðîôèòà
   int counter=0;                                                                       // ñ÷åò÷èê îðäåðîâ
   datetime op=0,time=TimeCurrent();                                                    // äîïîëíèòåëüíûå ïåðåìåííûå è ïåðåìåííàÿ ñ âðåìåíåì ñåðâåðà

   RefreshRates();                                                                      // Îáíîâèì äàííûå (äëÿ âðåìåíè ñåðâåðà)

   for(int i=OrdersHistoryTotal()-1; i>=0; i--)                                         // Îáðàòèìñÿ ê ñèòîðèè îðäåðîâ
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))                                     // âûáðàëè îðäåð ðàññìîòðèì åãî
         if(OrderMagicNumber()==Magic || Magic==-1)                                     // åñëè ýòî íàø ìåäæèê
           {
            op=OrderOpenTime();                                                         // çàïîìíèì âðåìÿ åãî îòêðûòèÿ
            if(TimeDayOfYear(op)==TimeDayOfYear(time) && TimeYear(op)==TimeYear(time))  // ïðîâåðèì äàòó îòêðûòèÿ îðäåðà åñëè ýòî ñåãîäíÿ à òàê æå ïðîâåðèì ãîä
               DayProfit+=OrderProfit()+OrderCommission()+OrderSwap();                  // ñóììèðóåì ïðèáûëü
           }

   for(int i=OrdersTotal()-1; i>=0; i--)                                                // îáðàòèìñÿ ê òåêóùåìó ñïèñêó îòêðûòûõ îðäåðîâ
      if(OrderSelect(i,SELECT_BY_POS))                                                  // âûáðàëè îðäåð ðàññìîòðèì åãî
         if(OrderMagicNumber()==Magic || Magic==-1)                                     // åñëè ýòî íàø ìåäæèê
           {
            counter++;                                                                  // ïîñ÷èòàåì îðäåðà
            DayProfit+=OrderProfit()+OrderCommission()+OrderSwap();                     // ñóììèðóåì ïðèáûëü
           }

   if((DayProfit+DayLimit)<=0){ trade_flag=true; text=" STOP";} else text=" allowed";   // åñëè ñóììà ëèìèòà íàäåíü è ïðèáûëè çà äåíü ìåíüøå èëè ðàâíà 0 çíà÷èò íàø ëèìèò èçðàñõîäîâàí
                                                                                        // ïåðåâåäåì ôëàã â çàïðåòíîå ñîñòîÿíèå è çàïèøåì òåêñò â ïåðåìåííóþ
   if(trade_flag==true&&counter>0)close_all();                                          // åñëè ôëàã â çàïðåòíîì ñîñòîÿíèè è îðäåðà åñòü çàêðûòü âñå îðäåðà
   if(DayProfit==0){trade_flag=false; text=" allowed";}                                 // åñëè íà÷àëñÿ íîâûé äåíü çíà÷èò ïðîôèò áóäåò ðàâåí 0 ïåðåâåñòè ôëàã â ðàáî÷åå ñîñòîÿíèå
                                                                                        // è çàïèøåì òåêñò â ïåðåìåííóþ

   Comment(
           "\n","DayLimit ",DoubleToStr(DayLimit,2),               // Âûâîäèò íà ýêðàí óñòàíîâëåííûé ëèìèò
           "\n","DayProfit ",DoubleToStr(DayProfit,2),             // Âûâîäèò íà ýêðàí òåêóùèé ïðîôèò çà äåíü
           "\n","Dostupno",DoubleToStr(DayProfit+DayLimit,2),      // Âûâîäèò íà ýêðàí îñòàòîê îò ëèìèòà
           "\n","Trade ",text                                      // Âûâîäèò íà ýêðàí ñîîáùåíèå î ðàçðåøåíèè òîðãîâàòü èëè íåò
           );

  }
//+------------------------------------------------------------------+
// Ôóíêöèÿ çàêðûòèÿ âñåõ îðäåðîâ
void close_all()
  {

   double price=0;                                      // Ñîçäàäèì ïåðåìåííóþ äëÿ öåíû
   for(int i=OrdersTotal()-1; i>=0; i--)                // îáðàòèìñÿ ê ñïèñêó îòêðûòûõ îðäåðîâ
      if(OrderSelect(i,SELECT_BY_POS))                  // ðàçáèðàåì êàæäûé îðäåð
         if(OrderMagicNumber()==Magic || Magic==-1)     // åñëè óñëîâèÿ ìåäæèêà íàøè
           {
            if(OrderType()==0)price=MarketInfo(OrderSymbol(),MODE_BID);                // åñëè ïîïàëñÿ áàé îðäåð çàïîìíèì öåíó äëÿ çàêðûòèÿ
            if(OrderType()==1)price=MarketInfo(OrderSymbol(),MODE_ASK);                // åñëè ïîïàëñÿ ñåë îðäåð çàïîìíèì öåíó äëÿ çàêðûòèÿ
            if(!IsTradeContextBusy())                   // ïðîâåðèì ïîòîê
               if(OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(price,(int)MarketInfo(OrderSymbol(),MODE_DIGITS)),Slippage,clrGreen)==false) // çàêðîåì îðäåð åñëè íå óäàëîñü
                  Print(StringConcatenate(__FUNCTION__," OrderClose ",GetLastError()));                          // âûâåäåì ñîîáùåíèå
           }
  }
//+------------------------------------------------------------------+

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 ---