Indicators Used
Miscellaneous
0
Views
0
Downloads
0
Favorites
VQ bars
//+------------------------------------------------------------------+
//| | VQ.mq4 |
//| Volatility Quality |
//| by raff1410@o2.pl |
//+------------------------------------------------------------------+
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Green
#property indicator_color2 Red
#property indicator_width1 2
#property indicator_width2 2
extern int Length = 5;
extern int Method = 3;
extern int Smoothing = 1;
extern int Filter = 5;
extern bool Steady = false;
double VQ[];
double SumVQ[];
double DIR[];
double UpBuffer[];
double DnBuffer[];
//+------------------------------------------------------------------+
int init()
{
IndicatorBuffers(5);
SetIndexStyle(0,DRAW_HISTOGRAM);
SetIndexBuffer(0,UpBuffer);
SetIndexStyle(1,DRAW_HISTOGRAM);
SetIndexBuffer(1,DnBuffer);
SetIndexBuffer(2,SumVQ);
SetIndexBuffer(3,VQ);
SetIndexBuffer(4,DIR);
if (Length < 2) Length = 2;
if (Method < 0) Method = 0;
if (Method > 3) Method = 3;
if (Smoothing < 0) Smoothing = 0;
if (Filter < 0) Filter = 0;
string short_name = "VQ | "+ Length + " , " +
Method + " , " + Smoothing + " , " + Filter + " | ";
IndicatorShortName(short_name);
SetIndexEmptyValue(0, 0.0);
SetIndexEmptyValue(1, 0.0);
SetIndexEmptyValue(2, 0.0);
SetIndexEmptyValue(3, 0.0);
return(0);
}
//+------------------------------------------------------------------+
int start()
{
double MH = 0, ML = 0, MO = 0, MC = 0, MC1 = 0;
int i, j, limit, counted_bars=IndicatorCounted();
//---- check for possible errors
if(counted_bars<0) return(-1);
//---- last counted bar will be recounted
if(counted_bars>0) counted_bars--;
//----
if(counted_bars<1) i=Bars-Length-1;
else i=Bars-counted_bars;
if(counted_bars<1)
{
j=Bars-Length-1;
SumVQ[j + 1] = Close[j + 1];
}
while (i >= 0)
{
MH = iMA(NULL,0,Length,0,Method,PRICE_HIGH,i);
ML = iMA(NULL,0,Length,0,Method,PRICE_LOW,i);
MO = iMA(NULL,0,Length,0,Method,PRICE_OPEN,i);
MC = iMA(NULL,0,Length,0,Method,PRICE_CLOSE,i);
MC1 = iMA(NULL,0,Length,0,Method,PRICE_CLOSE,i+Smoothing);
if (Steady==true)
{
MC=iMA(NULL,0,Length,0,Method,PRICE_MEDIAN,i);
MC1=iMA(NULL,0,Length,0,Method,PRICE_MEDIAN,i+Smoothing);
}
if((MH - ML)>0) VQ[i] = MathAbs(((MC - MC1) / MathMax(MH - ML, MathMax(MH - MC1, MC1 - ML)) + (MC - MO) / (MH - ML)) * 0.5) * ((MC - MC1 + (MC - MO)) * 0.5);
SumVQ[i] = SumVQ[i + 1] + VQ[i];
if (Filter > 0) if (MathAbs(SumVQ[i] - SumVQ[i + 1]) < Filter * Point) SumVQ[i] = SumVQ[i + 1];
i--;
}
if(counted_bars<1) limit=Bars-Length-1;
else limit=Bars-counted_bars;
for (i = limit-1; i >= 0; i--)
{
if (SumVQ[i] > SumVQ[i+1]) DIR[i] = 1;
if (SumVQ[i] < SumVQ[i+1]) DIR[i] = -1;
if (SumVQ[i]== SumVQ[i+1]) DIR[i] = DIR[i + 1];
if (DIR[i] > 0)
{
UpBuffer[i] = High[i];
DnBuffer[i] = Low[i];
}
else
if (DIR[i] < 0)
{
DnBuffer[i] = High[i];
UpBuffer[i] = Low[i];
}
}
return(0);
}
Comments
Markdown Formatting Guide
# H1
## H2
### H3
**bold text**
*italicized text*
[title](https://www.example.com)

`code`
```
code block
```
> blockquote
- Item 1
- Item 2
1. First item
2. Second item
---