ProfitInd-2

Author: Copyright � 2010, Mike Zhitnev
Price Data Components
Series array that contains the highest prices of each bar
Orders Execution
Checks for the total of closed orders
0 Views
0 Downloads
0 Favorites
ProfitInd-2
//+----------------------------------------------------------------------+
//|                                                        ProfitInd.mq4 |
//|                                       Copyright © 2010, Mike Zhitnev |
//|                                               http://Forex-Robots.ru |
//| ******************************************************************** |
//| Äàííûé èíäèêàòîð îòîáðàæàåò íà ãðàôèêå ïîëó÷åííóþ ïðèáûëü            |
//| çà êàæäûé òîðãîâûé äåíü. Êîððåêòíî ðàáîòàåò íà ïåðèîäàõ îò M1 äî H4. |
//| ******************************************************************** |
//| Ðàçðàáàòûâàþ äëÿ Âàñ ýêñïåðòû è èíäèêàòîðû íà çàêàç.                 |
//| Ïîäðîáíîñòè íà ñàéòå http://Forex-Robots.ru                          |
//| E-mail: admin@Forex-Robots.ru                                        |
//+----------------------------------------------------------------------+
#property copyright "Copyright © 2010, Mike Zhitnev"
#property link      "http://Forex-Robots.ru"

#property indicator_chart_window

extern color ProfitColor = Aqua;        // öâåò ðåçóëüòàòà ïðèáûëüíîé ñäåëêè
extern color LossColor = Red;           // öâåò ðåçóëüòàòà óáûòî÷íîé ñäåëêè
extern color ZeroColor = White;         // öâåò ðåçóëüòàòà íóëåâîé ñäåëêè
extern bool  AllSymbols = true;         // Åñëè TRUE - òî âûâîäÿòñÿ ñäåëêè ïî âñåì èíñòðóìåíòàì, FALSE - ïî òåêóùåìó èíñòðóìåíòó                                
                                        
int HTickets;    // Âñåãî îðäåðîâ â èñòîðèè
int Delta = 20;  // Ðàçíèöà â âûñîòå ìåæäó îòîáðàæàåìîé ìåòêîé è ìàêñèìàëüíîé öåíîé äíÿ (High-çíà÷åíèå)
datetime LastTime;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {   
    ClearAllObjects(); // óäàëèì âîçìîæíûå îñòàâøèåñÿ îáúåêòû
    LastTime = 0;
    HTickets=0;
    return(0);
  }

//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
    ClearAllObjects();
    return(0);
  }

//+------------------------------------------------------------------+
//| óäàëÿåò âñå îáúåêòû Èíäèêàòîðà ñ ãðàôèêà                         |
//+------------------------------------------------------------------+
void ClearAllObjects()
  {
   for (int i=0; i<ObjectsTotal(); i++)    // óäàëèì âñå ìåòêè ïðè äåèíèöèàëèçàöèè ýêñïåðòà
   {
     string name = "lbProfit" +  DoubleToStr( i, 0) ;
     if (ObjectFind(name)>=0) ObjectDelete(name);      
   }     
  }

  
//+------------------------------------------------------------------+
//| ìíîæèòåëü çíà÷åíèÿ ïóíêòîâ â çàâèñèìîñòè îò òî÷íîñòè èíñòðóìåíòà |
//+------------------------------------------------------------------+
int SetValueX10(int Value)
  {
    if (Point==0.00001)                      // Âû÷èñëèì çíà÷åíèå äëÿ èíñòðóìåíòîâ ñ (5) çíàêàìè
      Value = MathRound(Value * 0.0001 / Point);   
    if (Point==0.001)                        // Âû÷èñëèì çíà÷åíèå äëÿ èíñòðóìåíòîâ ñ (3) çíàêàìè
      Value = MathRound(Value * 0.01 / Point);            
    return (MathRound(Value));  
  }  

//+------------------------------------------------------------------+
//| Âûâîäèò ìåòêó äëÿ äíÿ day ñî çíà÷åíèåì ïðîôèòà Profit            |
//+------------------------------------------------------------------+
int SetLabel(int day, double Profit)
  {
    int Win=0; // òåêóùåå                                                         
    string name = "lbProfit" +  DoubleToStr( day, 0) ;
    if (AllSymbols) // åñëè âûáðàíû âñå ñèìâîëû, òî âûâîäèì òèï âàëþòû
      string EXT = AccountCurrency(); 
    else            // èíà÷å âûâîäèì òèï âàëþòíîé ïàðû
      EXT = Symbol();  
    string TEXT = DoubleToStr( Profit, 2) + " " + EXT;
    int Error=ObjectFind(name);
    if (Error==-1) ObjectCreate(name, OBJ_TEXT, Win, 0,0);  // Åñëè ìåòêà-îáúåêò íå íàéäåíà, òî ñîçäàäèì íîâóþ ìåòêó
    datetime TIME;                                          
    if (day>0)                                                 
      TIME = iTime(Symbol(),PERIOD_D1,day) + 12*PERIOD_H1*60;  
    else
      TIME = TimeCurrent();           
    ObjectSet(name, OBJPROP_TIME1, TIME);      
    ObjectSet(name, OBJPROP_PRICE1, iHigh(Symbol(),PERIOD_D1,day) + SetValueX10(Delta)*Point);      
         
    // óñòàíîâèì öâåò ìåòêè
    int color_;                
    if (Profit>0)  color_=ProfitColor; 
    if (Profit<0)  color_=LossColor;
    if (Profit==0) color_=ZeroColor;        
    int FSize = 12;  // ðàçìåð øðèôòà ïî óìîë÷àíèþ
    switch(Period()) // ïåðåêëþ÷àåì ðàçìåð øðèôòà â çàâèñèìîñòè îò òàéìôðåéìà
    {
      case PERIOD_M1: 
        FSize = 20; break;
      case PERIOD_M5: 
        FSize = 18; break;
      case PERIOD_M15: 
        FSize = 12; break;
      case PERIOD_M30: 
        FSize = 12; break;
      case PERIOD_H1: 
        FSize = 10; break;
      default: 
        FSize = 10; break;
     }       
     ObjectSetText(name,TEXT,FSize,"Arial",color_);     
  }  
  
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {      
 
   // ïðîâåðÿåì êîë-âî îðäåðîâ â èñòîðèè, ÷òîáû íå ÷èòàòü äàííûå âñåõ îðäåðîâ èñòîðèè ñ ïðèõîäîì íîâîãî òèêà
   // îäíàêî, ïåðåñ÷èòûâàåì âñå îðäåðà ïîñëå ïðèõîäà êàæäîé íîâîé ìèíóòêè
   if (HTickets==OrdersHistoryTotal() && LastTime==iTime(Symbol(),PERIOD_M1,0)) return(0);
   HTickets = OrdersHistoryTotal();
   LastTime = iTime(Symbol(),PERIOD_M1,0);
   
   int day = 0;        // äåíü 
   double Profit = 0;  // ïðîôèò çà äåíü day
         
   for (int i=OrdersHistoryTotal()-1; i>=0; i--)
    if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) && OrderType()<=1 && (AllSymbols==false || (AllSymbols==true && OrderSymbol()==Symbol() )))
    {                       
       double OProf = OrderProfit() + OrderSwap() + OrderCommission(); // Âû÷èñëèì ïðîôèò îðäåðà
                     
       if (OrderCloseTime()>iTime(Symbol(),PERIOD_D1,day))   // Åñëè âðåìÿ çàêðûòèÿ îðäåðà â ïðåäåëàõ äíÿ Day,
       {
         Profit = Profit + OProf;                            // òî ñóììèðóåì ïðîôèò îðäåðîâ äíÿ Day         
       }  
       else                                                  //  ïðîòèâíîì ñëó÷àå:        
       {         
         SetLabel(day, Profit);  // Âðåìÿ çàêðûòèÿ î÷åðåäíîãî îðäåðà âíå ãðàíèöàõ äíÿ Day, óñòàíîâèì ìåòêó
         Profit = OProf;         // Çàïîìíèì ïðîôèò äíÿ        
         while (iTime(Symbol(),PERIOD_D1,day)>OrderCloseTime()) 
         {
           day++;                  // Ñìåùàåì ñ÷åò÷èê äíåé äëÿ óñòàíîâêè ñëåäóþùåé ìåòêè
           SetLabel(day, 0);       // Âûâîäèì "0 USD" â ïðîìåæóòî÷íûå äíè, êîãäà íå áûëî òîðãîâëè
         }  
       }              
     }            
   return(0);
  }
//+------------------------------------------------------------------+

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