Standard Deviation Channel Automated

 

Does anyone know of an indicator like this? Apparently used by hedge funds.

It is a standard deviation channel that automatically draws the channel in from the most recent extreme high/low to the most recent extreme low/high over the last (x) periods.

It is exactly like the indicator attached but instead of just a set bar period it replaces it with the extreme high and low.

If the following code is inserted into the indicator somewhere would that work?

Any help muchly appreciated. Thanks.

//+------------------------------------------------------------------+
//| Find local extrema |
//+------------------------------------------------------------------+
double LEPrice(int length, int iBeg, double d=EMPTY_VALUE, int ePrice=EMPTY){
double prcLE = FindMax(length, iBeg, d, ePrice, true); return(prcLE);
}
double FindMax (int length, int& iMax, double d, int ePrice, bool LE){
//double DIR // Import from SetDIR
//#define INF 0x6FFFFFFF // Not quite infinite, Jul 2029, or 1,879,048,191
if (d == EMPTY_VALUE) d = DIR;
if (ePrice == EMPTY) ePrice = IfI(PRICE_HIGH, PRICE_LOW, d);
double prcMax = -d * INF;
int nBars = GetBars(),
iLimit = MathMinI(nBars, iMax + length);
for (int iBar = iMax; iBar < iLimit; iBar++){
double value = GetPrice(iBar, ePrice);
if ((prcMax - value)*d < 0.){
prcMax = value; iMax = iBar;
if (LE) iLimit = MathMinI(nBars, iMax+length);
} }
return(prcMax);
}
Files:
salsdcuii.ex4  3 kb
 

  1. Play video
    Please edit your post.
    For large amounts of code, attach it.

  2. No one here can read your ex4. Post your code.
  3. #define INF 0x6FFFFFFF // Not quite infinite, Jul 2029, or 1,879,048,191
    is from my code but has nothing to do with your question.
 
Luke1975:

Does anyone know of an indicator like this? Apparently used by hedge funds.

It is a standard deviation channel that automatically draws the channel in from the most recent extreme high/low to the most recent extreme low/high over the last (x) periods.

It is exactly like the indicator attached but instead of just a set bar period it replaces it with the extreme high and low.

If the following code is inserted into the indicator somewhere would that work?

Any help muchly appreciated. Thanks.

//+------------------------------------------------------------------+
//| Find local extrema |
//+------------------------------------------------------------------+
double LEPrice(int length, int iBeg, double d=EMPTY_VALUE, int ePrice=EMPTY){
double prcLE = FindMax(length, iBeg, d, ePrice, true); return(prcLE);
}
double FindMax (int length, int& iMax, double d, int ePrice, bool LE){
//double DIR // Import from SetDIR
//#define INF 0x6FFFFFFF // Not quite infinite, Jul 2029, or 1,879,048,191
if (d == EMPTY_VALUE) d = DIR;
if (ePrice == EMPTY) ePrice = IfI(PRICE_HIGH, PRICE_LOW, d);
double prcMax = -d * INF;
int nBars = GetBars(),
iLimit = MathMinI(nBars, iMax + length);
for (int iBar = iMax; iBar < iLimit; iBar++){
double value = GetPrice(iBar, ePrice);
if ((prcMax - value)*d < 0.){
prcMax = value; iMax = iBar;
if (LE) iLimit = MathMinI(nBars, iMax+length);
} }
return(prcMax);
}


//+------------------------------------------------------------------+
//|                                                    SA SDC II.mq4 |
//|                                         Copyright © 2010, Oneday |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2010, Oneday"
#property link      ""

#property indicator_chart_window

extern int     Bar_Period     =  24;
extern double  Set_deviation  =  2.0;//added this user input
extern color   Colour         =  Red;
extern int     Line_weight    =  1;
extern bool    Show_Ray       =  true;
datetime       TimeCheck;
datetime       T_1;
datetime       T_2;

//==========================================================================================================================================
int init(){
   TimeCheck   =  Time[0];
   T_1         =  iTime(NULL,0,0);//the second zero refers to the currently open bar.
   T_2         =  iTime(NULL,0,Bar_Period);
   UDF_Draw_channel(T_1, T_2);
   return(0);
}
//==========================================================================================================================================
int deinit(){
   ObjectDelete("SA SDC");
   return(0);
}
//==========================================================================================================================================
int start(){
   if(TimeCheck != Time[0]){
      ObjectDelete("SA SDC");
      T_1   =  iTime(NULL,0,0);//the second zero refers to the currently open bar.
      T_2   =  iTime(NULL,0,Bar_Period);
      UDF_Draw_channel(T_1, T_2);
   }
   return(0);
}
//==========================================================================================================================================
//User defined function to draw the channel
void  UDF_Draw_channel(datetime TimeR, datetime TimeL){
   ObjectCreate("SA SDC",OBJ_STDDEVCHANNEL,0,T_2,0,T_1,0);
   ObjectSet   ("SA SDC",OBJPROP_COLOR,Colour);
   ObjectSet   ("SA SDC",OBJPROP_WIDTH,Line_weight);
   ObjectSet   ("SA SDC",OBJPROP_RAY,Show_Ray);
   ObjectSet   ("SA SDC",OBJPROP_DEVIATION,Set_deviation);//allow user to set the deviation via the user input
}
//==========================================================================================================================================
Files:
saxsdcuii.mq4  3 kb
 
WHRoeder:

  1. Play video
    Please edit your post.
    For large amounts of code, attach it.

  2. No one here can read your ex4. Post your code.
  3. #define INF 0x6FFFFFFF // Not quite infinite, Jul 2029, or 1,879,048,191
    is from my code but has nothing to do with your question.


Thanks WHRoeder,


I appreciate your comments and help.

Kind regards,

Luke