i-TotalStopCurrency

Author: ��� ����� �. aka KimIV
Orders Execution
Checks for the total of open orders
2 Views
0 Downloads
0 Favorites
i-TotalStopCurrency
//+----------------------------------------------------------------------------+
//|                                                   i-TotalStopCurrency.mq4  |
//|                                                                            |
//|                                                    Êèì Èãîðü Â. aka KimIV  |
//|                                                       http://www.kimiv.ru  |
//|                                                                            |
//|  21.12.2011  Indicator of the Total Stop in the Deposit Currency.          |
//|              Èíäèêàòîð ñóììàðíîãî ñòîïà â âàëþòå äåïîçèòà.                 |
//|  04.05.2012  Äîáàâèë ñïîñîá ðàñ÷åòà ïðèáûëè äëÿ Futures.                   |
//+----------------------------------------------------------------------------+
#property copyright "Êèì Èãîðü Â. aka KimIV"
#property link      "http://www.kimiv.ru"

#property indicator_chart_window
#property indicator_buffers 0

//------- Âíåøíèå ïàðàìåòðû èíäèêàòîðà ----------------------------------------+
extern string symbol   = "GOLD";
extern color  ecText   = Navy;    // Öâåò òåêñòà
extern int    eiCorner = 2;       // Íîìåð óãëà ïðèâÿçêè:
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
                                  //   0 - ëåâûé âåðõíèé
//   1 - ïðàâûé âåðõíèé
//   2 - ëåâûé íèæíèé
//   3 - ïðàâûé íèæíèé

//------- Ãëîáàëüíûå ïåðåìåííûå èíäèêàòîðà ------------------------------------+

//+----------------------------------------------------------------------------+
//|                                                                            |
//|  ÏÐÅÄÎÏÐÅÄÅ˨ÍÍÛÅ ÔÓÍÊÖÈÈ                                                  |
//|                                                                            |
//+----------------------------------------------------------------------------+
//|  Custom indicator initialization function                                  |
//+----------------------------------------------------------------------------+
void init() 
  {
   Comment("");
  }
//+----------------------------------------------------------------------------+
//|  Custom indicator deinitialization function                                |
//+----------------------------------------------------------------------------+
void deinit() 
  {
   Comment("");
   for(int i=0; i<4; i++) ObjectDelete("iTotalStopCurrency"+i);
  }
//+----------------------------------------------------------------------------+
//|  Custom indicator iteration function                                       |
//+----------------------------------------------------------------------------+
void start() 
  {
   double s=ProfitIFStopInCurrency(symbol);

   SetLabel("iTotalStopCurrency0","Óðîâåíü ñòîïà",ecText,5,17,eiCorner);
   SetLabel("iTotalStopCurrency1",DoubleToStr(s,2)+" "+AccountCurrency(),ecText,5,5,eiCorner);
   SetLabel("iTotalStopCurrency2",DoubleToStr(s/AccountBalance()*100,2)+" %",ecText,100,5,eiCorner);
  }
//+----------------------------------------------------------------------------+
//|  Àâòîð    : Êèì Èãîðü Â. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Âåðñèÿ   : 03.05.2012                                                     |
//|  Îïèñàíèå : Âîçâðàùàåò ïðåäïîëàãàåìóþ ïðèáûëü/óáûòîê â âàëþòå äåïîçèòà     |
//|             â ñëó÷àå ñðàáàòûâàíèÿ ñòîïà îòêðûòûõ ïîçèöèé.                  |
//+----------------------------------------------------------------------------+
//|  Ïàðàìåòðû:                                                                |
//|    sy - íàèìåíîâàíèå èíñòðóìåíòà   ( ""  - ëþáîé ñèìâîë,                   |
//|                                     NULL - òåêóùèé ñèìâîë)                 |
//|    op - îïåðàöèÿ                   ( -1  - ëþáàÿ ïîçèöèÿ)                  |
//|    mn - MagicNumber                ( -1  - ëþáîé ìàãèê)                    |
//+----------------------------------------------------------------------------+
double ProfitIFStopInCurrency(string sy="",int op=-1,int mn=-1) 
  {
   if(sy=="0") sy=Symbol();  // Òåêóùèé ñèìâîë
   int    i, k=OrdersTotal(); // Ïîäñ÷¸ò îòêðûòûõ ïîçèöèé
   int    m;                  // Ñïîñîá ðàñ÷åòà ïðèáûëè: 0 - Forex, 1 - CFD, 2 - Futures
   double l;                  // Ðàçìåð êîíòðàêòà â áàçîâîé âàëþòå èíñòðóìåíòà
   double p;                  // Ðàçìåð ïóíêòà â âàëþòå êîòèðîâêè
   double t;                  // Ìèíèìàëüíûé øàã èçìåíåíèÿ öåíû èíñòðóìåíòà â âàëþòå êîòèðîâêè
   double v;                  // Ðàçìåð ìèíèìàëüíîãî èçìåíåíèÿ öåíû èíñòðóìåíòà â âàëþòå äåïîçèòà
   double s=0;                // Ïîäñ÷¸ò ñòîïà â âàëþòå äåïîçèòà

   for(i=0; i<k; i++) 
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) 
        {
         if((OrderSymbol()==sy || sy=="") && (mn<0 || OrderMagicNumber()==mn)) 
           {
            if((OrderType()==OP_BUY || OrderType()==OP_SELL) && (op<0 || OrderType()==op)) 
              {
               l=MarketInfo(OrderSymbol(), MODE_LOTSIZE);
               m=MarketInfo(OrderSymbol(), MODE_PROFITCALCMODE);
               p=MarketInfo(OrderSymbol(), MODE_POINT);
               t=MarketInfo(OrderSymbol(), MODE_TICKSIZE);
               v=MarketInfo(OrderSymbol(), MODE_TICKVALUE);
               if(OrderType()==OP_BUY) 
                 {
                  if(m==0) s-=(OrderOpenPrice()-OrderStopLoss())/p*v*OrderLots();
                  if(m==1) s-=(OrderOpenPrice()-OrderStopLoss())/p*v/t/l*OrderLots();
                  if(m==2) s-=(OrderOpenPrice()-OrderStopLoss())/p*v*OrderLots();
                  s+=OrderCommission()+OrderSwap();
                 }
               if(OrderType()==OP_SELL) 
                 {
                  if(OrderStopLoss()>0) 
                    {
                     if(m==0) s-=(OrderStopLoss()-OrderOpenPrice())/p*v*OrderLots();
                     if(m==1) s-=(OrderStopLoss()-OrderOpenPrice())/p*v/t/l*OrderLots();
                     if(m==2) s-=(OrderStopLoss()-OrderOpenPrice())/p*v*OrderLots();
                     s+=OrderCommission()+OrderSwap();
                    }
                  else s=-AccountBalance();
                 }
              }
           }
        }
     }
   if(AccountBalance()+s<0) s=-AccountBalance(); // Îãðàíè÷åíèå óáûòêà áàëàíñîì ñ÷¸òà
   return(s);
  }
//+----------------------------------------------------------------------------+
//|  Àâòîð    : Êèì Èãîðü Â. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Âåðñèÿ   : 12.10.2007                                                     |
//|  Îïèñàíèå : Óñòàíîâêà òåêñòîâîé ìåòêè, îáúåêò OBJ_LABEL.                   |
//+----------------------------------------------------------------------------+
//|  Ïàðàìåòðû:                                                                |
//|    nm - íàèìåíîâàíèå îáúåêòà                                               |
//|    tx - òåêñò                                                              |
//|    cl - öâåò ìåòêè                                                         |
//|    xd - êîîðäèíàòà X â ïèêñåëàõ                                            |
//|    yd - êîîðäèíàòà Y â ïèêñåëàõ                                            |
//|    cr - íîìåð óãëà ïðèâÿçêè        (0 - ëåâûé âåðõíèé )                    |
//|                                     1 - ïðàâûé âåðõíèé                     |
//|                                     2 - ëåâûé íèæíèé                       |
//|                                     3 - ïðàâûé íèæíèé )                    |
//|    fs - ðàçìåð øðèôòà              (9 - ïî óìîë÷àíèþ  )                    |
//+----------------------------------------------------------------------------+
void SetLabel(string nm,string tx,color cl,int xd,int yd,int cr=0,int fs=9) 
  {
   if(ObjectFind(nm)<0) ObjectCreate(nm,OBJ_LABEL,0,0,0);
   ObjectSetText(nm,tx,fs);
   ObjectSet(nm,OBJPROP_COLOR,cl);
   ObjectSet(nm,OBJPROP_XDISTANCE,xd);
   ObjectSet(nm,OBJPROP_YDISTANCE,yd);
   ObjectSet(nm,OBJPROP_CORNER,cr);
   ObjectSet(nm,OBJPROP_FONTSIZE,fs);
  }
//+----------------------------------------------------------------------------+

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