//+------------------------------------------------------------------+
//| Волатильность.mq4 |
//| Copyright © 2010, MetaQuotes Software Corp. |
//| _http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2010, MetaQuotes Software Corp."
#property link "_http://www.metaquotes.net"
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Gold
//---- buffers
double Buffer1[];
double Buffer2[];
extern int period=120;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
IndicatorBuffers(2);
SetIndexBuffer(0,Buffer1);
SetIndexStyle(0,12);
SetIndexBuffer(1,Buffer2);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int toCount = MathMin(Bars, Bars - IndicatorCounted() + 1);
for (int i = toCount - 1; i >= 0; i--)
{
Buffer1=(iClose(Symbol(),0,i)-iOpen(Symbol(),0,i))/(Point);
}
for (i = toCount - 1; i >= 0; i--)
{
Buffer2 = EMPTY_VALUE;
double sum = 0;
int dayShift = iBarShift(Symbol(), 0, Time, true);
if (dayShift != -1 && Buffer1 != EMPTY_VALUE)
{
int offset = Time - iTime(Symbol(), 0, dayShift);
double lastValue = Buffer1;
for (int j = 0; j < period; j++)
{
int elementShift = iBarShift(Symbol(), 0, iTime(Symbol(),0, dayShift + j) + offset, true);
if (elementShift == -1 || Buffer1[elementShift] == EMPTY_VALUE)
{
sum += lastValue;
}
else
{
sum += Buffer1[elementShift];
lastValue = Buffer1[elementShift];
}
}
Buffer2 = sum;
}
}
//----
//----
return(0);
}
//+-------------