Индикатор баланса

Недавно захотелось мне поглядеть динамику изменения баланса (программирование советников пока отложил) одного из моих счетов, в разрезе времени, например: каждый день, каждый час.

Получился простенький индикатор (программирование советников сложнее):

//+------------------------------------------------------------------+
//|                                                   ShowEquity.mq4 |
//|                               Copyright 2014, Gavrilin Alexander |
//|                                            http://sovetnikov.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, Gavrilin Alexander"
#property link      "http://sovetnikov.net"
#property version   "1.00"
#property strict
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 LimeGreen
double balance[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,balance);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   double pr;
   balance[0]=AccountBalance();
 
   for(int j=1;j<bars ;j++)
     {
      pr=0;
      for(int i=OrdersHistoryTotal()-1;i>=0;i--)
        {
         if(!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) continue;
 
         if(iBarShift(Symbol(),Period(),OrderCloseTime(),false)==j-1)
           {
            pr+=OrderProfit()+OrderSwap()+OrderCommission();
           }
        }
      balance[j]=balance[j-1]-pr;
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
</bars>

Было не до оптимизации кода, — программирование советников снова заняло много времени, поэтому сильно не ругайте, терминал может хорошо подвиснуть пока обсчитывает 🙂

индикатор баланса

Рекомендуем:

Отправить ответ

Оставьте первый комментарий!

Notify of
wpDiscuz