# RepaintsHurts MTF Indicator for ThinkorSwim

Repaints

#### germanburrito

##### Active member
I found that by using the hurts indicators on different time frames the 5, 10, 15, 30, and hour can create walls that are difficult to break when this walls converge than the stock may become exhausted. The bigger the time frame the more difficult for the wall to move, however if the trend is strong then all walls may move at the same time, when there is a divergence then that means that the bigger time frames do not "care" about the smaller time frames. When the different time frames diverge too much, meaning the different time frames are closer to the 0 line and are at different prices than you might be in a stable, accumulation, or choppy market.

Code:
``````# Hurst_Oscillator
#
# www.trendxplorer.info
# [email protected]
#
# Build: July 25, 2012
# Rev 2: July 29, 2012: FlowPrice value to better reflect extremes
#

#
# --- script begin ----
#

declare lower;
input agg = AggregationPeriod.FIVE_MIN;
input price = hl2;
input length = 10;
input InnerValue = 1.6;
input OuterValue = 2.6;
input ExtremeValue = 4.2;

def displacement = (-length / 2) + 1;
def dPrice = price[displacement];

rec CMA = if !IsNaN(dPrice) then Average(dPrice, AbsValue(length)) else CMA[1] + (CMA[1] - CMA[2]);

#Rev 2: July 29, 2012: improved FlowPrice for better extremes
#def OscValue = if close > close[1] then high else if close < close[1] then low else (high + low)/2;
def OscValue =
if high(period = agg) >= high(period = agg)[1] and low(period = agg) <= low(period = agg)[1]
then
if close(period = agg) >= close(period = agg)[1]    # high >= high[2]
then high(period = agg)
else low (period = agg)
else
if high(period = agg) > high(period = agg)[1]
then high (period = agg)
else
if low(period = agg) < low(period = agg)[1]
then low (period = agg)
else
if close (period = agg) > close(period = agg)[1]
then high (period = agg)
else
if close (period = agg) < close(period = agg)[1]
then low (period = agg)
else (high(period = agg) + low(period = agg)) / 2;

plot HurstOsc = (100 * OscValue / CMA) - 100;

HurstOsc.SetDefaultColor(GetColor(1));
HurstOsc.SetLineWeight(2);

input agg2 = AggregationPeriod.FIVE_MIN;
input price2 = hl2;

def displacement2 = (-length / 2) + 1;
def dPrice2 = price2[displacement2];

rec CMA2 = if !IsNaN(dPrice2) then Average(dPrice2, AbsValue(length)) else CMA2[1] + (CMA2[1] - CMA2[2]);

def OscValue2 =
if high(period = agg2) >= high(period = agg2)[1] and low(period = agg2) <= low(period = agg2)[1]
then
if close(period = agg2) >= close(period = agg2)[1]    # high >= high[2]
then high(period = agg2)
else low (period = agg2)
else
if high(period = agg2) > high(period = agg2)[1]
then high (period = agg2)
else
if low(period = agg2) < low(period = agg2)[1]
then low (period = agg2)
else
if close (period = agg2) > close(period = agg2)[1]
then high (period = agg2)
else
if close (period = agg2) < close(period = agg2)[1]
then low (period = agg2)
else (high(period = agg2) + low(period = agg2)) / 2;
plot HurstOsc2 = (100 * OscValue2 / CMA2) - 100;

input agg3 = AggregationPeriod.FIVE_MIN;
input price3 = hl2;

def displacement3 = (-length / 2) + 1;
def dPrice3 = price3[displacement3];

rec CMA3 = if !IsNaN(dPrice3) then Average(dPrice3, AbsValue(length)) else CMA3[1] + (CMA3[1] - CMA3[2]);

#Rev 2: July 29, 2012: improved FlowPrice for better extremes
#def OscValue = if close > close[1] then high else if close < close[1] then low else (high + low)/2;
def OscValue3 =
if high(period = agg3) >= high(period = agg3)[1] and low(period = agg3) <= low(period = agg3)[1]
then
if close(period = agg3) >= close(period = agg3)[1]    # high >= high[2]
then high(period = agg3)
else low (period = agg3)
else
if high(period = agg3) > high(period = agg3)[1]
then high (period = agg3)
else
if low(period = agg3) < low(period = agg3)[1]
then low (period = agg3)
else
if close (period = agg3) > close(period = agg3)[1]
then high (period = agg3)
else
if close (period = agg3) < close(period = agg3)[1]
then low (period = agg3)
else (high(period = agg3) + low(period = agg3)) / 2;
plot HurstOsc3 = (100 * OscValue3 / CMA3) - 100;

input agg4 = AggregationPeriod.FIVE_MIN;
input price4 = hl2;

def displacement4 = (-length / 2) + 1;
def dPrice4 = price4[displacement4];

rec CMA4 = if !IsNaN(dPrice4) then Average(dPrice4, AbsValue(length)) else CMA4[1] + (CMA4[1] - CMA4[2]);

def OscValue4 =
if high(period = agg4) >= high(period = agg4)[1] and low(period = agg4) <= low(period = agg4)[1]
then
if close(period = agg4) >= close(period = agg4)[1]    # high >= high[2]
then high(period = agg4)
else low (period = agg4)
else
if high(period = agg4) > high(period = agg4)[1]
then high (period = agg4)
else
if low(period = agg4) < low(period = agg4)[1]
then low (period = agg4)
else
if close (period = agg4) > close(period = agg4)[1]
then high (period = agg4)
else
if close (period = agg4) < close(period = agg4)[1]
then low (period = agg4)
else (high(period = agg4) + low(period = agg4)) / 2;
plot HurstOsc4 = (100 * OscValue4 / CMA4) - 100;

input agg5 = AggregationPeriod.FIVE_MIN;
input price5 = hl2;

def displacement5 = (-length / 2) + 1;
def dPrice5 = price5[displacement5];

rec CMA5 = if !IsNaN(dPrice5) then Average(dPrice5, AbsValue(length)) else CMA5[1] + (CMA5[1] - CMA5[2]);

def OscValue5 =
if high(period = agg5) >= high(period = agg5)[1] and low(period = agg5) <= low(period = agg5)[1]
then
if close(period = agg5) >= close(period = agg5)[1]    # high >= high[2]
then high(period = agg5)
else low (period = agg5)
else
if high(period = agg5) > high(period = agg5)[1]
then high (period = agg5)
else
if low(period = agg5) < low(period = agg5)[1]
then low (period = agg5)
else
if close (period = agg5) > close(period = agg5)[1]
then high (period = agg5)
else
if close (period = agg5) < close(period = agg5)[1]
then low (period = agg5)
else (high(period = agg5) + low(period = agg5)) / 2;
plot HurstOsc5 = (100 * OscValue5 / CMA5) - 100;
plot CenterLine       =   0;
plot UpperExtremeBand =   ExtremeValue;
plot LowerExtremeBand = - ExtremeValue;
plot UpperOuterBand   =   OuterValue;
plot LowerOuterBand   = - OuterValue;
plot UpperInnerBand   =   InnerValue;
plot LowerInnerBand   = - InnerValue;

CenterLine.SetDefaultColor(GetColor(7));
CenterLine.SetLineWeight(1);

UpperExtremeBand.SetDefaultColor(GetColor(4));
UpperExtremeBand.SetLineWeight(1);
LowerExtremeBand.SetDefaultColor(GetColor(4));
LowerExtremeBand.SetLineWeight(1);
UpperExtremeBand.Hide();
LowerExtremeBand.Hide();

UpperOuterBand.SetDefaultColor(GetColor(5));
UpperOuterBand.SetLineWeight(1);
LowerOuterBand.SetDefaultColor(GetColor(6));
LowerOuterBand.SetLineWeight(1);

UpperInnerBand.SetDefaultColor(GetColor(5));
UpperInnerBand.SetLineWeight(1);
UpperInnerBand.SetStyle(Curve.SHORT_DASH);
LowerInnerBand.SetDefaultColor(GetColor(6));
LowerInnerBand.SetLineWeight(1);
LowerInnerBand.SetStyle(Curve.SHORT_DASH);

# Turn AddClouds off by putting a #-sign at the first position of the lines

#
# --- script end ----
#``````

GermanBurrito, your Hurst Osc doesn't define the HL2 for each Agg Period, It uses the First Agg HL2 value for all of the time frames
here is the cleaned up version

Code:
``````###########
Declare lower;
input AGG1 = AggregationPeriod.FIVE_MIN;
input AGG2 = AggregationPeriod.FIFTEEN_MIN;
input AGG3 = AggregationPeriod.THIRTY_MIN;
input AGG4 = AggregationPeriod.HOUR;
input AGG5 = AggregationPeriod.Day;
input length = 10;
input InnerValue = 1.6;
input OuterValue = 2.6;
input ExtremeValue = 4.2;
Def PriceA = HL2(Period = AGG1);
Def PriceB = HL2(Period = AGG2);
Def PriceC = HL2(Period = AGG3);
Def PriceD = HL2(Period = AGG4);
Def PriceE = HL2(Period = AGG5);
Def HA = High(Period = AGG1);
Def HB = High(Period = AGG2);
Def HC = High(Period = AGG3);
Def HD = High(Period = AGG4);
Def HE = High(Period = AGG5);
Def LA = Low(Period = AGG1);
Def LB = Low(Period = AGG2);
Def LC = Low(Period = AGG3);
Def LD = Low(Period = AGG4);
Def LE = Low(Period = AGG5);
Def CA = Close(Period = AGG1);
Def CB = Close(Period = AGG2);
Def CC = Close(Period = AGG3);
Def CD = Close(Period = AGG4);
Def CE = Close(Period = AGG5);
Def Displacement = (-length/2)+1;
Def DPriceA = PriceA[Displacement];
Def DPriceB = PriceB[Displacement];
Def DPriceC = PriceC[Displacement];
Def DPriceD = PriceD[Displacement];
Def DPriceE = PriceE[Displacement];

Rec CMAA = if !IsNaN(DPriceA) then Average(DPriceA, AbsValue(length)) else CMAA[1] + (CMAA[1] - CMAA[2]);
Rec CMAB = if !IsNaN(DPriceB) then Average(DPriceB, AbsValue(length)) else CMAB[1] + (CMAB[1] - CMAB[2]);
Rec CMAC = if !IsNaN(DPriceC) then Average(DPriceC, AbsValue(length)) else CMAC[1] + (CMAC[1] - CMAC[2]);
Rec CMAE = if !IsNaN(DPriceE) then Average(DPriceE, AbsValue(length)) else CMAE[1] + (CMAE[1] - CMAE[2]);

def OscValueA =
if HA >= HA[1] and LA <= LA[1]
then
if CA >= CA[1]    # high >= high[2]
then HA
else LA
else
if HA > HA[1]
then HA
else
if LA < LA[1]
then LA
else
if CA > CA[1]
then HA
else
if CA < CA[1]
then LA
else (HA + LA) / 2;

plot HurstOscA = (100 * OscValueA / CMAA) - 100;

HurstOscA.SetDefaultColor(GetColor(1));
HurstOscA.SetLineWeight(2);

def OscValueB =
if HB >= HB[1] and LB <= LB[1]
then
if CB >= CB[1]    # high >= high[2]
then HB
else LB
else
if HB > HB[1]
then HB
else
if LB < LB[1]
then LB
else
if CB > CB[1]
then HB
else
if CB < CB[1]
then LB
else (HB + LB) / 2;

plot HurstOscB = (100 * OscValueB / CMAB) - 100;

def OscValueC =
if HC >= HC[1] and LC <= LC[1]
then
if CC >= CC[1]    # high >= high[2]
then HC
else LC
else
if HC > HC[1]
then HC
else
if LC < LC[1]
then LC
else
if CC > CC[1]
then HC
else
if CC < CC[1]
then LC
else (HC + LC) / 2;

plot HurstOscC = (100 * OscValueC / CMAC) - 100;

def OscValueD =
if HD >= HD[1] and LD <= LD[1]
then
if CD >= CD[1]    # high >= high[2]
then HD
else LD
else
if HD > HD[1]
then HD
else
if LD < LD[1]
then LD
else
if CD > CD[1]
then HD
else
if CD < CD[1]
then LD
else (HD + LD) / 2;

plot HurstOscD = (100 * OscValueD / CMAD) - 100;

def OscValueE =
if HE >= HE[1] and LE <= LE[1]
then
if CE >= CE[1]    # high >= high[2]
then HE
else LE
else
if HE > HE[1]
then HE
else
if LE < LE[1]
then LE
else
if CE > CE[1]
then HE
else
if CE < CE[1]
then LE
else (HE + LE) / 2;

plot HurstOscE = (100 * OscValueE / CMAE) - 100;

plot CenterLine       =   0;
plot UpperExtremeBand =   ExtremeValue;
plot LowerExtremeBand = - ExtremeValue;
plot UpperOuterBand   =   OuterValue;
plot LowerOuterBand   = - OuterValue;
plot UpperInnerBand   =   InnerValue;
plot LowerInnerBand   = - InnerValue;

CenterLine.SetDefaultColor(GetColor(7));
CenterLine.SetLineWeight(1);

UpperExtremeBand.SetDefaultColor(GetColor(4));
UpperExtremeBand.SetLineWeight(1);
LowerExtremeBand.SetDefaultColor(GetColor(4));
LowerExtremeBand.SetLineWeight(1);
UpperExtremeBand.Hide();
LowerExtremeBand.Hide();

UpperOuterBand.SetDefaultColor(GetColor(5));
UpperOuterBand.SetLineWeight(1);
LowerOuterBand.SetDefaultColor(GetColor(6));
LowerOuterBand.SetLineWeight(1);

UpperInnerBand.SetDefaultColor(GetColor(5));
UpperInnerBand.SetLineWeight(1);
UpperInnerBand.SetStyle(Curve.SHORT_DASH);
LowerInnerBand.SetDefaultColor(GetColor(6));
LowerInnerBand.SetLineWeight(1);
LowerInnerBand.SetStyle(Curve.SHORT_DASH);

# Turn AddClouds off by putting a #-sign at the first position of the lines

GermanBurrito here is my Binary version of the Hurst Osc
The lowest time frame is on the bottom and rises for each higher time frame
the highest line is squares and shows a consensus of the Osc

Here is the code This has been corrected and should now be used

Henry

Code:
``````#############
Declare lower;
DefineGlobalColor("TrendUp", Color.Cyan);
DefineGlobalColor("TrendDown", Color.Magenta);

input AGG1 = AggregationPeriod.FIVE_MIN;
input AGG2 = AggregationPeriod.FIFTEEN_MIN;
input AGG3 = AggregationPeriod.THIRTY_MIN;
input AGG4 = AggregationPeriod.HOUR;
input AGG5 = AggregationPeriod.Day;
input length = 10;

input DotSize = 4;
input n = 6;
def n1  = n + 1;

Def PriceA = HL2(Period = AGG1);
Def PriceB = HL2(Period = AGG2);
Def PriceC = HL2(Period = AGG3);
Def PriceD = HL2(Period = AGG4);
Def PriceE = HL2(Period = AGG5);
Def HA = High(Period = AGG1);
Def HB = High(Period = AGG2);
Def HC = High(Period = AGG3);
Def HD = High(Period = AGG4);
Def HE = High(Period = AGG5);
Def LA = Low(Period = AGG1);
Def LB = Low(Period = AGG2);
Def LC = Low(Period = AGG3);
Def LD = Low(Period = AGG4);
Def LE = Low(Period = AGG5);
Def CA = Close(Period = AGG1);
Def CB = Close(Period = AGG2);
Def CC = Close(Period = AGG3);
Def CD = Close(Period = AGG4);
Def CE = Close(Period = AGG5);
Def Displacement = (-length/2)+1;
Def DPriceA = PriceA[Displacement];
Def DPriceB = PriceB[Displacement];
Def DPriceC = PriceC[Displacement];
Def DPriceD = PriceD[Displacement];
Def DPriceE = PriceE[Displacement];

Rec CMAA = if !IsNaN(DPriceA) then Average(DPriceA, AbsValue(length)) else CMAA[1] + (CMAA[1] - CMAA[2]);
Rec CMAB = if !IsNaN(DPriceB) then Average(DPriceB, AbsValue(length)) else CMAB[1] + (CMAB[1] - CMAB[2]);
Rec CMAC = if !IsNaN(DPriceC) then Average(DPriceC, AbsValue(length)) else CMAC[1] + (CMAC[1] - CMAC[2]);
Rec CMAE = if !IsNaN(DPriceE) then Average(DPriceE, AbsValue(length)) else CMAE[1] + (CMAE[1] - CMAE[2]);

def OscValueA =
if HA >= HA[1] and LA <= LA[1]
then
if CA >= CA[1]    # high >= high[2]
then HA
else LA
else
if HA > HA[1]
then HA
else
if LA < LA[1]
then LA
else
if CA > CA[1]
then HA
else
if CA < CA[1]
then LA
else (HA + LA) / 2;

Def HurstOscA = (100 * OscValueA / CMAA) - 100;

def OscValueB =
if HB >= HB[1] and LB <= LB[1]
then
if CB >= CB[1]    # high >= high[2]
then HB
else LB
else
if HB > HB[1]
then HB
else
if LB < LB[1]
then LB
else
if CB > CB[1]
then HB
else
if CB < CB[1]
then LB
else (HB + LB) / 2;

Def HurstOscB = (100 * OscValueB / CMAB) - 100;

def OscValueC =
if HC >= HC[1] and LC <= LC[1]
then
if CC >= CC[1]    # high >= high[2]
then HC
else LC
else
if HC > HC[1]
then HC
else
if LC < LC[1]
then LC
else
if CC > CC[1]
then HC
else
if CC < CC[1]
then LC
else (HC + LC) / 2;

Def HurstOscC = (100 * OscValueC / CMAC) - 100;

def OscValueD =
if HD >= HD[1] and LD <= LD[1]
then
if CD >= CD[1]    # high >= high[2]
then HD
else LD
else
if HD > HD[1]
then HD
else
if LD < LD[1]
then LD
else
if CD > CD[1]
then HD
else
if CD < CD[1]
then LD
else (HD + LD) / 2;

Def HurstOscD = (100 * OscValueD / CMAD) - 100;

def OscValueE =
if HE >= HE[1] and LE <= LE[1]
then
if CE >= CE[1]    # high >= high[2]
then HE
else LE
else
if HE > HE[1]
then HE
else
if LE < LE[1]
then LE
else
if CE > CE[1]
then HE
else
if CE < CE[1]
then LE
else (HE + LE) / 2;

Def HurstOscE = (100 * OscValueE / CMAE) - 100;

plot HOA_Dot = if IsNaN(CA) then Double.NaN else 1;
HOA_Dot.SetPaintingStrategy(PaintingStrategy.TRIANGLES);
HOA_Dot.SetLineWeight(DotSize);
HOA_Dot.AssignValueColor(if HurstOscA < 0 then GlobalColor("TrendDown") else GlobalColor("TrendUp"));

plot HOB_Dot = if IsNaN(CB) then Double.NaN else 2;
HOB_Dot.SetPaintingStrategy(PaintingStrategy.TRIANGLES);
HOB_Dot.SetLineWeight(DotSize);
HOB_Dot.AssignValueColor(if HurstOscB < 0 then GlobalColor("TrendDown") else GlobalColor("TrendUp"));

plot HOC_Dot = if IsNaN(CC) then Double.NaN else 3;

HOC_Dot.SetPaintingStrategy(PaintingStrategy.TRIANGLES);
HOC_Dot.SetLineWeight(DotSize);
HOC_Dot.AssignValueColor(if HurstOscC < 0 then GlobalColor("TrendDown") else GlobalColor("TrendUp"));

plot HOD_Dot = if IsNaN(CD) then Double.NaN else 4;
HOD_Dot.SetPaintingStrategy(PaintingStrategy.TRIANGLES);
HOD_Dot.SetLineWeight(DotSize);
HOD_Dot.AssignValueColor(if HurstOscD < 0 then GlobalColor("TrendDown") else GlobalColor("TrendUp"));

plot HOE_Dot = if IsNaN(CE) then Double.NaN else 5;
HOE_Dot.SetPaintingStrategy(PaintingStrategy.TRIANGLES);
HOE_Dot.SetLineWeight(DotSize);
HOE_Dot.AssignValueColor(if HurstOscE < 0 then GlobalColor("TrendDown") else GlobalColor("TrendUp"));

Def B1 = If(HurstOscA>=0,1,0);
Def B2 = If(HurstOscB>=0,1,0);
Def B3 = If(HurstOscC>=0,1,0);
Def B4= If(HurstOscD>=0,1,0);
Def B5 = If(HurstOscE>=0,1,0);

plot MTF_BDot = 6;
MTF_BDot.SetPaintingStrategy(PaintingStrategy.SQUARES);
MTF_BDot.SetLineWeight(lineWeight = 4);
MTF_BDot.DefineColor("Sell", Color.Red);
MTF_BDot.AssignValueColor ( if (B1+B2+B3+B4+B5) >= 3 then MTF_BDot.Color("Buy") else MTF_BDot.Color("Sell"));``````

Last edited:
@henry1224 I think there was a small error in the code I might have fixed it, I don't know if I fixed it, but when I changed one of the plots and it seems to be working, this is a really amazing indicator from what I have seen so far.

Got a 3 line error on this:

plot HOA_Dot = if IsNaN(CC) then Double.NaN else 3;
HOC_Dot.SetPaintingStrategy(PaintingStrategy.TRIANGLES);
HOC_Dot.SetLineWeight(DotSize);
HOC_Dot.AssignValueColor(if HurstOscC < 0 then GlobalColor("TrendDown") else GlobalColor("TrendUp"));

Got a 3 line error on this:

plot HOA_Dot = if IsNaN(CC) then Double.NaN else 3;
HOC_Dot.SetPaintingStrategy(PaintingStrategy.TRIANGLES);
HOC_Dot.SetLineWeight(DotSize);
HOC_Dot.AssignValueColor(if HurstOscC < 0 then GlobalColor("TrendDown") else GlobalColor("TrendUp"));
I corrected the code , try to create it again

Henry

@Nomak pretty simple debug on first line, change to HOC

@Nomak pretty simple debug on first line, change to HOC
Actually, the corrected code in the original code, sets the consensus top line correctly.
Please use the corrected code that is now in the original post

@germanburrito @henry1224
While MTF indicators are NOT done 'painting' until the highest agg is completed; Hurst Bands have the added complication of repainting many candles back.
See URL in my above post or just google Hurst Bands repaint.

If they are working for you when you combine them into your strategy, you should keep using them.
My post was directed at future viewers of this thread.

GermanBurrito here is my Binary version of the Hurst Osc
The lowest time frame is on the bottom and rises for each higher time frame
the highest line is squares and shows a consensus of the Osc

Here is the code This has been corrected and should now be used

Henry

Code:
``````#############
Declare lower;
DefineGlobalColor("TrendUp", Color.Cyan);
DefineGlobalColor("TrendDown", Color.Magenta);

input AGG1 = AggregationPeriod.FIVE_MIN;
input AGG2 = AggregationPeriod.FIFTEEN_MIN;
input AGG3 = AggregationPeriod.THIRTY_MIN;
input AGG4 = AggregationPeriod.HOUR;
input AGG5 = AggregationPeriod.Day;
input length = 10;

input DotSize = 4;
input n = 6;
def n1  = n + 1;

Def PriceA = HL2(Period = AGG1);
Def PriceB = HL2(Period = AGG2);
Def PriceC = HL2(Period = AGG3);
Def PriceD = HL2(Period = AGG4);
Def PriceE = HL2(Period = AGG5);
Def HA = High(Period = AGG1);
Def HB = High(Period = AGG2);
Def HC = High(Period = AGG3);
Def HD = High(Period = AGG4);
Def HE = High(Period = AGG5);
Def LA = Low(Period = AGG1);
Def LB = Low(Period = AGG2);
Def LC = Low(Period = AGG3);
Def LD = Low(Period = AGG4);
Def LE = Low(Period = AGG5);
Def CA = Close(Period = AGG1);
Def CB = Close(Period = AGG2);
Def CC = Close(Period = AGG3);
Def CD = Close(Period = AGG4);
Def CE = Close(Period = AGG5);
Def Displacement = (-length/2)+1;
Def DPriceA = PriceA[Displacement];
Def DPriceB = PriceB[Displacement];
Def DPriceC = PriceC[Displacement];
Def DPriceD = PriceD[Displacement];
Def DPriceE = PriceE[Displacement];

Rec CMAA = if !IsNaN(DPriceA) then Average(DPriceA, AbsValue(length)) else CMAA[1] + (CMAA[1] - CMAA[2]);
Rec CMAB = if !IsNaN(DPriceB) then Average(DPriceB, AbsValue(length)) else CMAB[1] + (CMAB[1] - CMAB[2]);
Rec CMAC = if !IsNaN(DPriceC) then Average(DPriceC, AbsValue(length)) else CMAC[1] + (CMAC[1] - CMAC[2]);
Rec CMAE = if !IsNaN(DPriceE) then Average(DPriceE, AbsValue(length)) else CMAE[1] + (CMAE[1] - CMAE[2]);

def OscValueA =
if HA >= HA[1] and LA <= LA[1]
then
if CA >= CA[1]    # high >= high[2]
then HA
else LA
else
if HA > HA[1]
then HA
else
if LA < LA[1]
then LA
else
if CA > CA[1]
then HA
else
if CA < CA[1]
then LA
else (HA + LA) / 2;

Def HurstOscA = (100 * OscValueA / CMAA) - 100;

def OscValueB =
if HB >= HB[1] and LB <= LB[1]
then
if CB >= CB[1]    # high >= high[2]
then HB
else LB
else
if HB > HB[1]
then HB
else
if LB < LB[1]
then LB
else
if CB > CB[1]
then HB
else
if CB < CB[1]
then LB
else (HB + LB) / 2;

Def HurstOscB = (100 * OscValueB / CMAB) - 100;

def OscValueC =
if HC >= HC[1] and LC <= LC[1]
then
if CC >= CC[1]    # high >= high[2]
then HC
else LC
else
if HC > HC[1]
then HC
else
if LC < LC[1]
then LC
else
if CC > CC[1]
then HC
else
if CC < CC[1]
then LC
else (HC + LC) / 2;

Def HurstOscC = (100 * OscValueC / CMAC) - 100;

def OscValueD =
if HD >= HD[1] and LD <= LD[1]
then
if CD >= CD[1]    # high >= high[2]
then HD
else LD
else
if HD > HD[1]
then HD
else
if LD < LD[1]
then LD
else
if CD > CD[1]
then HD
else
if CD < CD[1]
then LD
else (HD + LD) / 2;

Def HurstOscD = (100 * OscValueD / CMAD) - 100;

def OscValueE =
if HE >= HE[1] and LE <= LE[1]
then
if CE >= CE[1]    # high >= high[2]
then HE
else LE
else
if HE > HE[1]
then HE
else
if LE < LE[1]
then LE
else
if CE > CE[1]
then HE
else
if CE < CE[1]
then LE
else (HE + LE) / 2;

Def HurstOscE = (100 * OscValueE / CMAE) - 100;

plot HOA_Dot = if IsNaN(CA) then Double.NaN else 1;
HOA_Dot.SetPaintingStrategy(PaintingStrategy.TRIANGLES);
HOA_Dot.SetLineWeight(DotSize);
HOA_Dot.AssignValueColor(if HurstOscA < 0 then GlobalColor("TrendDown") else GlobalColor("TrendUp"));

plot HOB_Dot = if IsNaN(CB) then Double.NaN else 2;
HOB_Dot.SetPaintingStrategy(PaintingStrategy.TRIANGLES);
HOB_Dot.SetLineWeight(DotSize);
HOB_Dot.AssignValueColor(if HurstOscB < 0 then GlobalColor("TrendDown") else GlobalColor("TrendUp"));

plot HOC_Dot = if IsNaN(CC) then Double.NaN else 3;

HOC_Dot.SetPaintingStrategy(PaintingStrategy.TRIANGLES);
HOC_Dot.SetLineWeight(DotSize);
HOC_Dot.AssignValueColor(if HurstOscC < 0 then GlobalColor("TrendDown") else GlobalColor("TrendUp"));

plot HOD_Dot = if IsNaN(CD) then Double.NaN else 4;
HOD_Dot.SetPaintingStrategy(PaintingStrategy.TRIANGLES);
HOD_Dot.SetLineWeight(DotSize);
HOD_Dot.AssignValueColor(if HurstOscD < 0 then GlobalColor("TrendDown") else GlobalColor("TrendUp"));

plot HOE_Dot = if IsNaN(CE) then Double.NaN else 5;
HOE_Dot.SetPaintingStrategy(PaintingStrategy.TRIANGLES);
HOE_Dot.SetLineWeight(DotSize);
HOE_Dot.AssignValueColor(if HurstOscE < 0 then GlobalColor("TrendDown") else GlobalColor("TrendUp"));

Def B1 = If(HurstOscA>=0,1,0);
Def B2 = If(HurstOscB>=0,1,0);
Def B3 = If(HurstOscC>=0,1,0);
Def B4= If(HurstOscD>=0,1,0);
Def B5 = If(HurstOscE>=0,1,0);

plot MTF_BDot = 6;
MTF_BDot.SetPaintingStrategy(PaintingStrategy.SQUARES);
MTF_BDot.SetLineWeight(lineWeight = 4);
MTF_BDot.DefineColor("Sell", Color.Red);
MTF_BDot.AssignValueColor ( if (B1+B2+B3+B4+B5) >= 3 then MTF_BDot.Color("Buy") else MTF_BDot.Color("Sell"));``````
The IDEA from the HURST OSC is if the current time frame' Hurst Osc is above or below 0,
you can see the Hurst OSC from 5 time frames and then see the consensus to make your decision
Remember that there is lag in all indicators , so look for improvement of the indicator or a worsening condition

The IDEA from the HURST OSC is if the current time frame' Hurst Osc is above or below 0,
you can see the Hurst OSC from 5 time frames and then see the consensus to make your decision
Remember that there is lag in all indicators , so look for improvement of the indicator or a worsening condition
@henry1224
You worded it much better than I! The BEST use of Hurst Bands is in the current time frame.
It has no historical veracity due to the constant repainting of past bars.

MerryDay, The top line"#6" which is the consensus vote line will repaint until the higher time frames complete! I can't comment about the HURST Osc. But as with all Higher time frames AGG formulas, the higher time frame has to finish making it's bar
the binary code looks to tell you the overall move, and the oscillator seems to predict the exhaustion when the points converge, as well as a representation of how ow they stock might fall, i will need to test it more, but so far it seems great i have other ideas we can work on.

87k+ Posts
332 Online

## The Market Trading Game Changer

Join 2,500+ subscribers inside the useThinkScript VIP Membership Club
• Exclusive indicators
• Proven strategies & setups
• Private Discord community
• Exclusive members-only content
• 1 full year of unlimited support

What is useThinkScript?

useThinkScript is the #1 community of stock market investors using indicators and other tools to power their trading strategies. Traders of all skill levels use our forums to learn about scripting and indicators, help each other, and discover new ways to gain an edge in the markets.

How do I get started?

We get it. Our forum can be intimidating, if not overwhelming. With thousands of topics, tens of thousands of posts, our community has created an incredibly deep knowledge base for stock traders. No one can ever exhaust every resource provided on our site.

If you are new, or just looking for guidance, here are some helpful links to get you started.

What are the benefits of VIP Membership?