- Reversal Days
- Market condition indicators/tools
- some vertical lines in a period of 1y
hrv-6-100 indicator stopped working yesterday on time frame m1, works only on m5 and others. Someone can help?
what is "hrv-6-100"?
forum and google search returned 0 results
constantin_n: Someone can help?
| Only if you can post the source code. |
what is "hrv-6-100"?
forum and google search returned 0 results
Only if you can post the source code. |
it's for mt4. here it is
//+------------------------------------------------------------------+
//| HRV-6 -100 .mq4 |
//| Copyright © 2005, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property link ""
#property indicator_buffers 2
#property indicator_separate_window
#property indicator_color1 Yellow
#property indicator_color2 Red
#property indicator_level2 100
#property indicator_level3 0
#property indicator_level4 -100
extern int ShortPeriod = 6;
extern int LongPeriod = 100;
extern int calcperiode = 500;
//---- buffers
double Buffer3[];
extern int CountBars = 3000;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
IndicatorBuffers(1);
SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);
SetIndexBuffer(0,Buffer3);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//---- TODO: add your code here
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{//---- TODO: add your code here
for(int i=calcperiode;i>=0;i--)
{
Buffer3[i]=iStdDev(NULL,0,LongPeriod,MODE_EMA,0,PRICE_CLOSE,0 )/iStdDev(NULL,0,ShortPeriod,MODE_EMA,0,PRICE_CLOSE, i);
} //iStdDev(NULL,0,ShortPeriod,MODE_EMA,0,PRICE_CLOSE, i)/iStdDev(NULL,0,LongPeriod,MODE_EMA,0,PRICE_CLOSE,0 );
}
//----
//}
//+------------------------------------------------------------------+
- www.metaquotes.net
it's for mt4. here it is
//+------------------------------------------------------------------+
//| HRV-6 -100 .mq4 |
//| Copyright © 2005, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property link ""
#property indicator_buffers 2
#property indicator_separate_window
#property indicator_color1 Yellow
#property indicator_color2 Red
#property indicator_level2 100
#property indicator_level3 0
#property indicator_level4 -100
extern int ShortPeriod = 6;
extern int LongPeriod = 100;
extern int calcperiode = 500;
//---- buffers
double Buffer3[];
extern int CountBars = 3000;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
IndicatorBuffers(1);
SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);
SetIndexBuffer(0,Buffer3);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//---- TODO: add your code here
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{//---- TODO: add your code here
for(int i=calcperiode;i>=0;i--)
{
Buffer3[i]=iStdDev(NULL,0,LongPeriod,MODE_EMA,0,PRICE_CLOSE,0 )/iStdDev(NULL,0,ShortPeriod,MODE_EMA,0,PRICE_CLOSE, i);
} //iStdDev(NULL,0,ShortPeriod,MODE_EMA,0,PRICE_CLOSE, i)/iStdDev(NULL,0,LongPeriod,MODE_EMA,0,PRICE_CLOSE,0 );
}
//----
//}
//+------------------------------------------------------------------+
Try using this :
#property indicator_separate_window
#property indicator_color1 clrYellow
extern int ShortPeriod = 6;
extern int LongPeriod = 100;
extern int CountBars = 500;
double Buffer[];
int init() { SetIndexBuffer(0,Buffer); return(0); }
int deinit() { return(0); }
int start()
{
int counted_bars=IndicatorCounted();
if(counted_bars < 0) return(-1);
if(counted_bars > 0) counted_bars--;
int limit = (CountBars>0) ? MathMin(Bars-1,CountBars-1) : MathMin(Bars-counted_bars,Bars-1);
double dev0 = iStdDev(NULL,0,LongPeriod,MODE_EMA,0,PRICE_CLOSE,0);
for(int i=limit;i>=0;i--)
{
double dev = iStdDev(NULL,0,ShortPeriod,MODE_EMA,0,PRICE_CLOSE,i);
Buffer[i] = (dev!=0) ? dev0/dev : 0;
}
return(0);
}
Try using this :
#property indicator_separate_window
#property indicator_color1 clrYellow
extern int ShortPeriod = 6;
extern int LongPeriod = 100;
extern int CountBars = 500;
double Buffer[];
int init() { SetIndexBuffer(0,Buffer); return(0); }
int deinit() { return(0); }
int start()
{
int counted_bars=IndicatorCounted();
if(counted_bars < 0) return(-1);
if(counted_bars > 0) counted_bars--;
int limit = (CountBars>0) ? MathMin(Bars-1,CountBars-1) : MathMin(Bars-counted_bars,Bars-1);
double dev0 = iStdDev(NULL,0,LongPeriod,MODE_EMA,0,PRICE_CLOSE,0);
for(int i=limit;i>=0;i--)
{
double dev = iStdDev(NULL,0,ShortPeriod,MODE_EMA,0,PRICE_CLOSE,i);
Buffer[i] = (dev!=0) ? dev0/dev : 0;
}
return(0);
}
seems working, ty. What do you mean it will repaint?
seems working, ty. What do you mean it will repaint?
It is using standard deviation of the current bar for all the past values (the "iStdDev(NULL,0,LongPeriod,MODE_EMA,0,PRICE_CLOSE,0)" part from your code). That has two problems - issues :
- Past values are calculated using de facto future standard deviation that it could not "know" in the moment when that bar was closed
- As soon as a new bar is formed, all the past bars (because of the above) are rendered obsolete and must be recalculated : i.e. : all the past values are going to be repainted
In order to avoid that, you have to replace the "0" part of that standard deviation call with "i", and move it within the loop, and only then you shall have a non-repainting indicator (in that case the code would be like this - CountBars removed since there is no need to use it at all :
#property indicator_separate_window
#property indicator_color1 clrYellow
extern int ShortPeriod = 6;
extern int LongPeriod = 100;
double Buffer[];
int init() { SetIndexBuffer(0,Buffer); return(0); }
int deinit() { return(0); }
int start()
{
int counted_bars=IndicatorCounted();
if(counted_bars < 0) return(-1);
if(counted_bars > 0) counted_bars--;
int limit = MathMin(Bars-counted_bars,Bars-1);
for(int i=limit;i>=0;i--)
{
double dev = iStdDev(NULL,0,ShortPeriod,MODE_EMA,0,PRICE_CLOSE,i);
Buffer[i] = (dev!=0) ? iStdDev(NULL,0,LongPeriod,MODE_EMA,0,PRICE_CLOSE,i)/dev : 0;
}
return(0);
}
It is using standard deviation of the current bar for all the past values (the "iStdDev(NULL,0,LongPeriod,MODE_EMA,0,PRICE_CLOSE,0)" part from your code). That has two problems - issues :
- Past values are calculated using de facto future standard deviation that it could not "know" in the moment when that bar was closed
- As soon as a new bar is formed, all the past bars (because of the above) are rendered obsolete and must be recalculated : i.e. : all the past values are going to be repainted
In order to avoid that, you have to replace the "0" part of that standard deviation call with "i", and move it within the loop, and only then you shall have a non-repainting indicator (in that case the code would be like this - CountBars removed since there is no need to use it at all :
#property indicator_separate_window
#property indicator_color1 clrYellow
extern int ShortPeriod = 6;
extern int LongPeriod = 100;
double Buffer[];
int init() { SetIndexBuffer(0,Buffer); return(0); }
int deinit() { return(0); }
int start()
{
int counted_bars=IndicatorCounted();
if(counted_bars < 0) return(-1);
if(counted_bars > 0) counted_bars--;
int limit = MathMin(Bars-counted_bars,Bars-1);
for(int i=limit;i>=0;i--)
{
double dev = iStdDev(NULL,0,ShortPeriod,MODE_EMA,0,PRICE_CLOSE,i);
Buffer[i] = (dev!=0) ? iStdDev(NULL,0,LongPeriod,MODE_EMA,0,PRICE_CLOSE,i)/dev : 0;
}
return(0);
}

- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
You agree to website policy and terms of use