//+------------------------------------------------------------------+ //| Normalized Volume Oscillator v2.mq4 | //| Vadim Shumiloff | //| shumiloff@mail.ru | //| ICQ 84796634 | //+------------------------------------------------------------------+ #property copyright "Vadim Shumiloff" #property link "shumiloff@mail.ru" #property indicator_separate_window #property indicator_buffers 5 #property indicator_color1 Blue // Çàêðàñêà îòðèöàòåëüíûõ áàðîâ #property indicator_color2 Green // Çàêðàñêà áàðîâ 0 - 38.2 #property indicator_color3 Lime // Çàêðàñêà áàðîâ 38.2 - 61.8 #property indicator_color4 Yellow // Çàêðàñêà áàðîâ 61.8 - 100 #property indicator_color5 Red // Çàêðàñêà áàðîâ ñâûøå 100 #property indicator_width1 2 #property indicator_width2 2 #property indicator_width3 2 #property indicator_width4 2 #property indicator_width5 2 /* Method: 0 - MODE_SMA 1 - MODE_EMA 2 - MODE_SMMA 3 - MODE_LWMA 4 - MODE_LRMA */ extern int Method = 0; extern int VolumePeriod = 21; extern int Shift = 1; double VolBufferH1[]; double VolBufferH2[]; double VolBufferH3[]; double VolBufferH4[]; double VolBufferH5[]; double Buffer[]; int init() { string short_name; IndicatorBuffers(5); SetIndexBuffer(1, VolBufferH1); SetIndexStyle(0, DRAW_HISTOGRAM); SetIndexBuffer(0, VolBufferH1); SetIndexDrawBegin(0, VolBufferH1); SetIndexBuffer(2, VolBufferH2); SetIndexStyle(1, DRAW_HISTOGRAM); SetIndexBuffer(1, VolBufferH2); SetIndexDrawBegin(1, VolBufferH2); SetIndexBuffer(3, VolBufferH3); SetIndexStyle(2, DRAW_HISTOGRAM); SetIndexBuffer(2, VolBufferH3); SetIndexDrawBegin(2, VolBufferH3); SetIndexBuffer(4, VolBufferH4); SetIndexStyle(3, DRAW_HISTOGRAM); SetIndexBuffer(3, VolBufferH4); SetIndexDrawBegin(3, VolBufferH4); SetIndexBuffer(5, VolBufferH5); SetIndexStyle(4, DRAW_HISTOGRAM); SetIndexBuffer(4, VolBufferH5); SetIndexDrawBegin(4, VolBufferH5); short_name="NVO (" + VolumePeriod + ")"; IndicatorShortName(short_name); SetIndexLabel(0, short_name); ArrayResize(Buffer, Bars); ArrayInitialize(Buffer, 0); ArrayResize(VolBufferH1, Bars); ArrayInitialize(VolBufferH1, 0); ArrayResize(VolBufferH2, Bars); ArrayInitialize(VolBufferH2, 0); ArrayResize(VolBufferH3, Bars); ArrayInitialize(VolBufferH3, 0); ArrayResize(VolBufferH4, Bars); ArrayInitialize(VolBufferH4, 0); ArrayResize(VolBufferH5, Bars); ArrayInitialize(VolBufferH5, 0); return(0); } int start() { int i, limit; double nvo; int counted_bars = IndicatorCounted(); if (counted_bars > 0) counted_bars--; limit = Bars - counted_bars; ArraySetAsSeries(Buffer, true); for(i = 0; i < limit; i++) Buffer[i] = Volume[i]; for(i = 0; i < limit; i++) { if (Method < 4) nvo = NormalizeDouble(Buffer[i] / iMAOnArray(Buffer, 0, VolumePeriod, 0, Method, i+Shift), 4)*100 - 100; else nvo = NormalizeDouble(Buffer[i] / (3*iMAOnArray(Buffer, 0, VolumePeriod, 0, MODE_LWMA, i+Shift) - 2*iMAOnArray(Buffer, 0, VolumePeriod, 0, MODE_SMA, i+Shift)), 4)*100 - 100; if (nvo < 0) VolBufferH1[i] = nvo; else { if (nvo < 38.2) VolBufferH2[i] = nvo; else { if (nvo < 61.8) VolBufferH3[i] = nvo; else { if (nvo < 100) { VolBufferH4[i] = nvo; } else VolBufferH5[i] = nvo; } } } } return(0); }
Sample
Analysis
Market Information Used:
Series array that contains tick volumes of each bar
Indicator Curves created:
Implements a curve of type DRAW_HISTOGRAM
Indicators Used:
Moving average indicator
Custom Indicators Used:
Order Management characteristics:
Other Features: