@mashume This looks very interesting...Do you happen to have /GC? Only thing I didn't see you posted.
#########################################################
#
# Next Hour GC Trading Range
# Algorithmic Prediction
#
# Values Derived on Data from
# 2021-09-24 to
# 2021-12-02
#
# @mashume at usethinkscript.com
#
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
#
# This Version /GC only
# Functional on 1, 3, 5, 10, 15, 20, 30, 60 minute charts
#
#########################################################
declare upper;
def Y = 31556926;
def M = 2629743;
def D = 86400;
def H = 3600;
def HalfHour = 1800;
def epoch = (getTime() / 1000);
def YMD = (epoch % Y) - (epoch / Y);
def month = (Floor(YMD / M) + 1);
def GMT = Floor((epoch % D) / H);
def HOUR = if GMT > 4 then GMT - 4 else if GMT < 4 then (GMT + 24) - 4 else 0;
def tf = getAggregationPeriod();
def barsPerHour = if tf == AggregationPeriod.HOUR then 1
else if tf == AggregationPeriod.THIRTY_MIN then 2
else if tf == AggregationPeriod.TWENTY_MIN then 3
else if tf == AggregationPeriod.FIFTEEN_MIN then 4
else if tf == AggregationPeriod.TEN_MIN then 6
else if tf == AggregationPeriod.FIVE_MIN then 12
else if tf == AggregationPeriod.THREE_MIN then 20
else if tf == AggregationPeriod.MIN then 60
else double.nan;
def q1 =
if HOUR == 0 then -1.1
else if HOUR == 1 then -1.7
else if HOUR == 2 then -2.3
else if HOUR == 3 then -1.7
else if HOUR == 4 then -1.8
else if HOUR == 5 then -1.6
else if HOUR == 6 then -1.5
else if HOUR == 7 then -2.6
else if HOUR == 8 then -3.55
else if HOUR == 9 then -3.325
else if HOUR == 10 then -2.3
else if HOUR == 11 then -1.8
else if HOUR == 12 then -1.7
else if HOUR == 13 then -1.1
else if HOUR == 14 then -1.2
else if HOUR == 15 then -0.8
else if HOUR == 16 then -0.8
else if HOUR == 17 then -1.45
else if HOUR == 18 then -0.8
else if HOUR == 19 then -1.2
else if HOUR == 20 then -1.2
else if HOUR == 21 then -1.325
else if HOUR == 22 then -1.3
else -1.0;
def q3 =
if HOUR == 0 then 1.4
else if HOUR == 1 then 1.5
else if HOUR == 2 then 1.925
else if HOUR == 3 then 2.0
else if HOUR == 4 then 1.9
else if HOUR == 5 then 1.425
else if HOUR == 6 then 2.0
else if HOUR == 7 then 3.1
else if HOUR == 8 then 2.9
else if HOUR == 9 then 3.5
else if HOUR == 10 then 2.5
else if HOUR == 11 then 1.6
else if HOUR == 12 then 1.0
else if HOUR == 13 then 1.3
else if HOUR == 14 then 1.1
else if HOUR == 15 then 1.0
else if HOUR == 16 then 0.8
else if HOUR == 17 then -1.15
else if HOUR == 18 then 0.9
else if HOUR == 19 then 1.1
else if HOUR == 20 then 1.9
else if HOUR == 21 then 1.5
else if HOUR == 22 then 0.925
else 1.0;
def m2 =
if HOUR == 0 then 0.1
else if HOUR == 1 then -0.1
else if HOUR == 2 then 0.2
else if HOUR == 3 then 0.1
else if HOUR == 4 then 0.1
else if HOUR == 5 then 0.1
else if HOUR == 6 then 0.5
else if HOUR == 7 then 0.7
else if HOUR == 8 then 0.3
else if HOUR == 9 then 0.15
else if HOUR == 10 then -0.1
else if HOUR == 11 then 0.0
else if HOUR == 12 then -0.4
else if HOUR == 13 then 0.1
else if HOUR == 14 then -0.25
else if HOUR == 15 then 0.1
else if HOUR == 16 then -0.1
else if HOUR == 17 then -1.3
else if HOUR == 18 then -0.2
else if HOUR == 19 then -0.1
else if HOUR == 20 then 0.4
else if HOUR == 21 then 0.0
else if HOUR == 22 then -0.2
else -0.1;
def midline = hl2(period = AggregationPeriod.HOUR)[1];
def median = hl2(period = AggregationPeriod.HOUR)[1] + m2;
def upper = median + (q3);
def lower = median + (q1);
plot c = midline;
c.setStyle(CURve.SHORT_DASH);
c.setDefaultColor(getColor(7));
plot median_line = median[barsPerHour];
median_line.SetPaintingStrategy(PaintingStrategy.DASHES);
median_line.SetDefaultColor(getColor(3));
plot expected_upper = upper[barsPerHour];
expected_upper.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
expected_upper.SetDefaultColor(getColor(1));
plot expected_lower = lower[barsPerHour];
expected_lower.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
expected_lower.SetDefaultColor(getColor(5));
addcloud(expected_upper, expected_lower, color.white, color.white);
def upside = (expected_upper[(-1 * barsPerHour)] - close);
def downside = (close - expected_lower[(-1 * barsPerHour)]);
addLabel(yes, "current upside: " + upside + " current downside: " + downside, if upside > downside then color.dark_green else if downside > upside then color.dark_red else color.dark_gray);
def dist_to_median = (median_line[(-1 * barsPerHour)] - close);
addLabel(yes, "Distance to Median: " + dist_to_median,
if dist_to_median > 5 then color.green
else if dist_to_median > 1 then color.dark_green
else if dist_to_median < -5 then color.red
else if dist_to_median < -1 then color.dark_red
else color.gray);
Just came across this thread... though it has not been updated in a while I am assuming the coefficients are still accurate. Accurate as in do not need an update.Updated Values:
/ES
Code:######################################################### # # Next Hour ES Trading Range # Algorithmic Prediction # # Values Derived on Data from # 2021-09-13 to # 2021-11-19 # # @mashume at usethinkscript.com # #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # # This Version /ES only # Functional on 1, 3, 5, 10, 15, 20, 30, 60 minute charts # ######################################################### declare upper; def Y = 31556926; def M = 2629743; def D = 86400; def H = 3600; def HalfHour = 1800; def epoch = (getTime() / 1000); def YMD = (epoch % Y) - (epoch / Y); def month = (Floor(YMD / M) + 1); def GMT = Floor((epoch % D) / H); def HOUR = if GMT > 4 then GMT - 4 else if GMT < 4 then (GMT + 24) - 4 else 0; def tf = getAggregationPeriod(); def barsPerHour = if tf == AggregationPeriod.HOUR then 1 else if tf == AggregationPeriod.THIRTY_MIN then 2 else if tf == AggregationPeriod.TWENTY_MIN then 3 else if tf == AggregationPeriod.FIFTEEN_MIN then 4 else if tf == AggregationPeriod.TEN_MIN then 6 else if tf == AggregationPeriod.FIVE_MIN then 12 else if tf == AggregationPeriod.THREE_MIN then 20 else if tf == AggregationPeriod.MIN then 60 else double.nan; def q1 = if HOUR == 0 then -1.5 else if HOUR == 1 then -2.5 else if HOUR == 2 then -2.75 else if HOUR == 3 then -2.25 else if HOUR == 4 then -2.75 else if HOUR == 5 then -2.5 else if HOUR == 6 then -2.25 else if HOUR == 7 then -2.812 else if HOUR == 8 then -4.5 else if HOUR == 9 then -9.5 else if HOUR == 10 then -4.5 else if HOUR == 11 then -4.25 else if HOUR == 12 then -5.0 else if HOUR == 13 then -2.75 else if HOUR == 14 then -4.25 else if HOUR == 15 then -6.5 else if HOUR == 16 then -1.0 else if HOUR == 17 then -3.375 else if HOUR == 18 then -1.75 else if HOUR == 19 then -2.562 else if HOUR == 20 then -3.25 else if HOUR == 21 then -3.0 else if HOUR == 22 then -1.5 else -1.25; def q3 = if HOUR == 0 then 2.75 else if HOUR == 1 then 2.5 else if HOUR == 2 then 3.75 else if HOUR == 3 then 4.5 else if HOUR == 4 then 2.75 else if HOUR == 5 then 2.5 else if HOUR == 6 then 3.0 else if HOUR == 7 then 3.312 else if HOUR == 8 then 5.5 else if HOUR == 9 then 10.5 else if HOUR == 10 then 5.812 else if HOUR == 11 then 4.812 else if HOUR == 12 then 3.625 else if HOUR == 13 then 6.062 else if HOUR == 14 then 5.0 else if HOUR == 15 then 4.625 else if HOUR == 16 then 3.438 else if HOUR == 17 then -0.75 else if HOUR == 18 then 2.5 else if HOUR == 19 then 3.75 else if HOUR == 20 then 2.75 else if HOUR == 21 then 2.25 else if HOUR == 22 then 2.0 else 2.0; def m2 = if HOUR == 0 then 0.25 else if HOUR == 1 then 0.25 else if HOUR == 2 then 1.0 else if HOUR == 3 then 1.375 else if HOUR == 4 then 0.0 else if HOUR == 5 then 0.0 else if HOUR == 6 then 0.25 else if HOUR == 7 then 0.0 else if HOUR == 8 then 0.75 else if HOUR == 9 then 1.5 else if HOUR == 10 then 0.75 else if HOUR == 11 then 0.5 else if HOUR == 12 then -0.25 else if HOUR == 13 then 1.5 else if HOUR == 14 then 0.0 else if HOUR == 15 then -0.5 else if HOUR == 16 then 1.25 else if HOUR == 17 then -2.25 else if HOUR == 18 then 0.25 else if HOUR == 19 then -0.375 else if HOUR == 20 then -0.5 else if HOUR == 21 then -0.5 else if HOUR == 22 then 0.25 else 0.25; def midline = hl2(period = AggregationPeriod.HOUR)[1]; def median = hl2(period = AggregationPeriod.HOUR)[1] + m2; def upper = median + (q3); def lower = median + (q1); plot c = midline; c.setStyle(CURve.SHORT_DASH); c.setDefaultColor(getColor(7)); plot median_line = median[barsPerHour]; median_line.SetPaintingStrategy(PaintingStrategy.DASHES); median_line.SetDefaultColor(getColor(3)); plot expected_upper = upper[barsPerHour]; expected_upper.SetPaintingStrategy(PaintingStrategy.HORIZONTAL); expected_upper.SetDefaultColor(getColor(1)); plot expected_lower = lower[barsPerHour]; expected_lower.SetPaintingStrategy(PaintingStrategy.HORIZONTAL); expected_lower.SetDefaultColor(getColor(5)); addcloud(expected_upper, expected_lower, color.white, color.white); def upside = (expected_upper[(-1 * barsPerHour)] - close); def downside = (close - expected_lower[(-1 * barsPerHour)]); addLabel(yes, "current upside: " + upside + " current downside: " + downside, if upside > downside then color.dark_green else if downside > upside then color.dark_red else color.dark_gray); def dist_to_median = (median_line[(-1 * barsPerHour)] - close); addLabel(yes, "Distance to Median: " + dist_to_median, if dist_to_median > 5 then color.green else if dist_to_median > 1 then color.dark_green else if dist_to_median < -5 then color.red else if dist_to_median < -1 then color.dark_red else color.gray);
YM
Code:######################################################### # # Next Hour YM Trading Range # Algorithmic Prediction # # Values Derived on Data from # 2021-09-13 to # 2021-11-19 # # @mashume at usethinkscript.com # #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # # This Version /YM only # Functional on 1, 3, 5, 10, 15, 20, 30, 60 minute charts # ######################################################### declare upper; def Y = 31556926; def M = 2629743; def D = 86400; def H = 3600; def HalfHour = 1800; def epoch = (getTime() / 1000); def YMD = (epoch % Y) - (epoch / Y); def month = (Floor(YMD / M) + 1); def GMT = Floor((epoch % D) / H); def HOUR = if GMT > 4 then GMT - 4 else if GMT < 4 then (GMT + 24) - 4 else 0; def tf = getAggregationPeriod(); def barsPerHour = if tf == AggregationPeriod.HOUR then 1 else if tf == AggregationPeriod.THIRTY_MIN then 2 else if tf == AggregationPeriod.TWENTY_MIN then 3 else if tf == AggregationPeriod.FIFTEEN_MIN then 4 else if tf == AggregationPeriod.TEN_MIN then 6 else if tf == AggregationPeriod.FIVE_MIN then 12 else if tf == AggregationPeriod.THREE_MIN then 20 else if tf == AggregationPeriod.MIN then 60 else double.nan; def q1 = if HOUR == 0 then -13.0 else if HOUR == 1 then -20.0 else if HOUR == 2 then -19.0 else if HOUR == 3 then -21.0 else if HOUR == 4 then -20.0 else if HOUR == 5 then -17.0 else if HOUR == 6 then -17.75 else if HOUR == 7 then -24.75 else if HOUR == 8 then -28.0 else if HOUR == 9 then -76.0 else if HOUR == 10 then -47.0 else if HOUR == 11 then -33.25 else if HOUR == 12 then -41.0 else if HOUR == 13 then -32.0 else if HOUR == 14 then -30.0 else if HOUR == 15 then -44.0 else if HOUR == 16 then -8.0 else if HOUR == 17 then 0.0 else if HOUR == 18 then -14.0 else if HOUR == 19 then -18.0 else if HOUR == 20 then -23.0 else if HOUR == 21 then -20.0 else if HOUR == 22 then -12.25 else -10.0; def q3 = if HOUR == 0 then 19.0 else if HOUR == 1 then 18.0 else if HOUR == 2 then 25.0 else if HOUR == 3 then 34.75 else if HOUR == 4 then 20.0 else if HOUR == 5 then 21.0 else if HOUR == 6 then 26.0 else if HOUR == 7 then 25.75 else if HOUR == 8 then 48.0 else if HOUR == 9 then 72.0 else if HOUR == 10 then 42.25 else if HOUR == 11 then 33.0 else if HOUR == 12 then 24.0 else if HOUR == 13 then 42.0 else if HOUR == 14 then 38.0 else if HOUR == 15 then 32.0 else if HOUR == 16 then 21.75 else if HOUR == 17 then 0.0 else if HOUR == 18 then 20.0 else if HOUR == 19 then 27.0 else if HOUR == 20 then 20.75 else if HOUR == 21 then 17.5 else if HOUR == 22 then 17.0 else 14.0; def m2 = if HOUR == 0 then 1.0 else if HOUR == 1 then 2.0 else if HOUR == 2 then 6.0 else if HOUR == 3 then 8.0 else if HOUR == 4 then 0.0 else if HOUR == 5 then 2.0 else if HOUR == 6 then 3.0 else if HOUR == 7 then 0.0 else if HOUR == 8 then 5.0 else if HOUR == 9 then -3.0 else if HOUR == 10 then 5.0 else if HOUR == 11 then 3.0 else if HOUR == 12 then -7.0 else if HOUR == 13 then 4.0 else if HOUR == 14 then 0.5 else if HOUR == 15 then -4.0 else if HOUR == 16 then 6.0 else if HOUR == 17 then 0.0 else if HOUR == 18 then 2.0 else if HOUR == 19 then -2.0 else if HOUR == 20 then -3.0 else if HOUR == 21 then -4.0 else if HOUR == 22 then 2.0 else 2.0; def midline = hl2(period = AggregationPeriod.HOUR)[1]; def median = hl2(period = AggregationPeriod.HOUR)[1] + m2; def upper = median + (q3); def lower = median + (q1); plot c = midline; c.setStyle(CURve.SHORT_DASH); c.setDefaultColor(getColor(7)); plot median_line = median[barsPerHour]; median_line.SetPaintingStrategy(PaintingStrategy.DASHES); median_line.SetDefaultColor(getColor(3)); plot expected_upper = upper[barsPerHour]; expected_upper.SetPaintingStrategy(PaintingStrategy.HORIZONTAL); expected_upper.SetDefaultColor(getColor(1)); plot expected_lower = lower[barsPerHour]; expected_lower.SetPaintingStrategy(PaintingStrategy.HORIZONTAL); expected_lower.SetDefaultColor(getColor(5)); addcloud(expected_upper, expected_lower, color.white, color.white); def upside = (expected_upper[(-1 * barsPerHour)] - close); def downside = (close - expected_lower[(-1 * barsPerHour)]); addLabel(yes, "current upside: " + upside + " current downside: " + downside, if upside > downside then color.dark_green else if downside > upside then color.dark_red else color.dark_gray); def dist_to_median = (median_line[(-1 * barsPerHour)] - close); addLabel(yes, "Distance to Median: " + dist_to_median, if dist_to_median > 5 then color.green else if dist_to_median > 1 then color.dark_green else if dist_to_median < -5 then color.red else if dist_to_median < -1 then color.dark_red else color.gray);
NQ
Code:######################################################### # # Next Hour NQ Trading Range # Algorithmic Prediction # # Values Derived on Data from # 2021-09-13 to # 2021-11-19 # # @mashume at usethinkscript.com # #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # # This Version /NQ only # Functional on 1, 3, 5, 10, 15, 20, 30, 60 minute charts # ######################################################### declare upper; def Y = 31556926; def M = 2629743; def D = 86400; def H = 3600; def HalfHour = 1800; def epoch = (getTime() / 1000); def YMD = (epoch % Y) - (epoch / Y); def month = (Floor(YMD / M) + 1); def GMT = Floor((epoch % D) / H); def HOUR = if GMT > 4 then GMT - 4 else if GMT < 4 then (GMT + 24) - 4 else 0; def tf = getAggregationPeriod(); def barsPerHour = if tf == AggregationPeriod.HOUR then 1 else if tf == AggregationPeriod.THIRTY_MIN then 2 else if tf == AggregationPeriod.TWENTY_MIN then 3 else if tf == AggregationPeriod.FIFTEEN_MIN then 4 else if tf == AggregationPeriod.TEN_MIN then 6 else if tf == AggregationPeriod.FIVE_MIN then 12 else if tf == AggregationPeriod.THREE_MIN then 20 else if tf == AggregationPeriod.MIN then 60 else double.nan; def q1 = if HOUR == 0 then -5.0 else if HOUR == 1 then -11.688 else if HOUR == 2 then -12.5 else if HOUR == 3 then -9.0 else if HOUR == 4 then -11.438 else if HOUR == 5 then -11.188 else if HOUR == 6 then -10.562 else if HOUR == 7 then -13.0 else if HOUR == 8 then -23.938 else if HOUR == 9 then -39.812 else if HOUR == 10 then -23.062 else if HOUR == 11 then -23.5 else if HOUR == 12 then -23.75 else if HOUR == 13 then -8.812 else if HOUR == 14 then -18.0 else if HOUR == 15 then -25.25 else if HOUR == 16 then -6.75 else if HOUR == 17 then 11.0 else if HOUR == 18 then -5.5 else if HOUR == 19 then -9.75 else if HOUR == 20 then -14.0 else if HOUR == 21 then -11.0 else if HOUR == 22 then -7.5 else -5.75; def q3 = if HOUR == 0 then 10.562 else if HOUR == 1 then 11.0 else if HOUR == 2 then 16.75 else if HOUR == 3 then 19.25 else if HOUR == 4 then 10.688 else if HOUR == 5 then 9.688 else if HOUR == 6 then 11.5 else if HOUR == 7 then 15.0 else if HOUR == 8 then 22.25 else if HOUR == 9 then 49.5 else if HOUR == 10 then 34.5 else if HOUR == 11 then 26.312 else if HOUR == 12 then 18.5 else if HOUR == 13 then 28.062 else if HOUR == 14 then 23.938 else if HOUR == 15 then 20.812 else if HOUR == 16 then 14.25 else if HOUR == 17 then 11.0 else if HOUR == 18 then 9.688 else if HOUR == 19 then 12.75 else if HOUR == 20 then 10.75 else if HOUR == 21 then 9.5 else if HOUR == 22 then 7.5 else 8.938; def m2 = if HOUR == 0 then 2.25 else if HOUR == 1 then 0.75 else if HOUR == 2 then 4.25 else if HOUR == 3 then 6.5 else if HOUR == 4 then 0.0 else if HOUR == 5 then 0.375 else if HOUR == 6 then 0.25 else if HOUR == 7 then 0.125 else if HOUR == 8 then 0.0 else if HOUR == 9 then 3.625 else if HOUR == 10 then 4.5 else if HOUR == 11 then 3.125 else if HOUR == 12 then -0.5 else if HOUR == 13 then 10.625 else if HOUR == 14 then -0.125 else if HOUR == 15 then -0.25 else if HOUR == 16 then 2.625 else if HOUR == 17 then 11.0 else if HOUR == 18 then 2.0 else if HOUR == 19 then 1.0 else if HOUR == 20 then -1.75 else if HOUR == 21 then -2.0 else if HOUR == 22 then 1.0 else 1.5; def midline = hl2(period = AggregationPeriod.HOUR)[1]; def median = hl2(period = AggregationPeriod.HOUR)[1] + m2; def upper = median + (q3); def lower = median + (q1); plot c = midline; c.setStyle(CURve.SHORT_DASH); c.setDefaultColor(getColor(7)); plot median_line = median[barsPerHour]; median_line.SetPaintingStrategy(PaintingStrategy.DASHES); median_line.SetDefaultColor(getColor(3)); plot expected_upper = upper[barsPerHour]; expected_upper.SetPaintingStrategy(PaintingStrategy.HORIZONTAL); expected_upper.SetDefaultColor(getColor(1)); plot expected_lower = lower[barsPerHour]; expected_lower.SetPaintingStrategy(PaintingStrategy.HORIZONTAL); expected_lower.SetDefaultColor(getColor(5)); addcloud(expected_upper, expected_lower, color.white, color.white); def upside = (expected_upper[(-1 * barsPerHour)] - close); def downside = (close - expected_lower[(-1 * barsPerHour)]); addLabel(yes, "current upside: " + upside + " current downside: " + downside, if upside > downside then color.dark_green else if downside > upside then color.dark_red else color.dark_gray); def dist_to_median = (median_line[(-1 * barsPerHour)] - close); addLabel(yes, "Distance to Median: " + dist_to_median, if dist_to_median > 5 then color.green else if dist_to_median > 1 then color.dark_green else if dist_to_median < -5 then color.red else if dist_to_median < -1 then color.dark_red else color.gray);
CL
Code:######################################################### # # Next Hour CL Trading Range # Algorithmic Prediction # # Values Derived on Data from # 2021-09-13 to # 2021-11-19 # # @mashume at usethinkscript.com # #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # # This Version /CL only # Functional on 1, 3, 5, 10, 15, 20, 30, 60 minute charts # ######################################################### declare upper; def Y = 31556926; def M = 2629743; def D = 86400; def H = 3600; def HalfHour = 1800; def epoch = (getTime() / 1000); def YMD = (epoch % Y) - (epoch / Y); def month = (Floor(YMD / M) + 1); def GMT = Floor((epoch % D) / H); def HOUR = if GMT > 4 then GMT - 4 else if GMT < 4 then (GMT + 24) - 4 else 0; def tf = getAggregationPeriod(); def barsPerHour = if tf == AggregationPeriod.HOUR then 1 else if tf == AggregationPeriod.THIRTY_MIN then 2 else if tf == AggregationPeriod.TWENTY_MIN then 3 else if tf == AggregationPeriod.FIFTEEN_MIN then 4 else if tf == AggregationPeriod.TEN_MIN then 6 else if tf == AggregationPeriod.FIVE_MIN then 12 else if tf == AggregationPeriod.THREE_MIN then 20 else if tf == AggregationPeriod.MIN then 60 else double.nan; def q1 = if HOUR == 0 then -0.07 else if HOUR == 1 then -0.14 else if HOUR == 2 then -0.16 else if HOUR == 3 then -0.17 else if HOUR == 4 then -0.19 else if HOUR == 5 then -0.14 else if HOUR == 6 then -0.14 else if HOUR == 7 then -0.21 else if HOUR == 8 then -0.235 else if HOUR == 9 then -0.35 else if HOUR == 10 then -0.34 else if HOUR == 11 then -0.22 else if HOUR == 12 then -0.15 else if HOUR == 13 then -0.17 else if HOUR == 14 then -0.11 else if HOUR == 15 then -0.08 else if HOUR == 16 then -0.09 else if HOUR == 17 then 0.47 else if HOUR == 18 then -0.1 else if HOUR == 19 then -0.11 else if HOUR == 20 then -0.16 else if HOUR == 21 then -0.17 else if HOUR == 22 then -0.07 else -0.05; def q3 = if HOUR == 0 then 0.12 else if HOUR == 1 then 0.1 else if HOUR == 2 then 0.14 else if HOUR == 3 then 0.25 else if HOUR == 4 then 0.12 else if HOUR == 5 then 0.145 else if HOUR == 6 then 0.15 else if HOUR == 7 then 0.23 else if HOUR == 8 then 0.4 else if HOUR == 9 then 0.33 else if HOUR == 10 then 0.29 else if HOUR == 11 then 0.28 else if HOUR == 12 then 0.25 else if HOUR == 13 then 0.22 else if HOUR == 14 then 0.12 else if HOUR == 15 then 0.08 else if HOUR == 16 then 0.18 else if HOUR == 17 then 0.47 else if HOUR == 18 then 0.07 else if HOUR == 19 then 0.15 else if HOUR == 20 then 0.15 else if HOUR == 21 then 0.12 else if HOUR == 22 then 0.11 else 0.1; def m2 = if HOUR == 0 then 0.03 else if HOUR == 1 then -0.02 else if HOUR == 2 then -0.02 else if HOUR == 3 then 0.05 else if HOUR == 4 then -0.02 else if HOUR == 5 then 0.01 else if HOUR == 6 then -0.02 else if HOUR == 7 then 0.0 else if HOUR == 8 then 0.06 else if HOUR == 9 then -0.02 else if HOUR == 10 then -0.02 else if HOUR == 11 then 0.04 else if HOUR == 12 then 0.05 else if HOUR == 13 then 0.01 else if HOUR == 14 then 0.0 else if HOUR == 15 then 0.0 else if HOUR == 16 then 0.03 else if HOUR == 17 then 0.47 else if HOUR == 18 then -0.02 else if HOUR == 19 then 0.01 else if HOUR == 20 then -0.01 else if HOUR == 21 then -0.035 else if HOUR == 22 then 0.01 else 0.03; def midline = hl2(period = AggregationPeriod.HOUR)[1]; def median = hl2(period = AggregationPeriod.HOUR)[1] + m2; def upper = median + (q3); def lower = median + (q1); plot c = midline; c.setStyle(CURve.SHORT_DASH); c.setDefaultColor(getColor(7)); plot median_line = median[barsPerHour]; median_line.SetPaintingStrategy(PaintingStrategy.DASHES); median_line.SetDefaultColor(getColor(3)); plot expected_upper = upper[barsPerHour]; expected_upper.SetPaintingStrategy(PaintingStrategy.HORIZONTAL); expected_upper.SetDefaultColor(getColor(1)); plot expected_lower = lower[barsPerHour]; expected_lower.SetPaintingStrategy(PaintingStrategy.HORIZONTAL); expected_lower.SetDefaultColor(getColor(5)); addcloud(expected_upper, expected_lower, color.white, color.white); def upside = (expected_upper[(-1 * barsPerHour)] - close); def downside = (close - expected_lower[(-1 * barsPerHour)]); addLabel(yes, "current upside: " + upside + " current downside: " + downside, if upside > downside then color.dark_green else if downside > upside then color.dark_red else color.dark_gray); def dist_to_median = (median_line[(-1 * barsPerHour)] - close); addLabel(yes, "Distance to Median: " + dist_to_median, if dist_to_median > 5 then color.green else if dist_to_median > 1 then color.dark_green else if dist_to_median < -5 then color.red else if dist_to_median < -1 then color.dark_red else color.gray);
I'll be happy to run you new versions of ES and NQ later today. I honestly have no idea how the coefficients have changed over time. I just do updates as people request them.Just came across this thread... though it has not been updated in a while I am assuming the coefficients are still accurate. Accurate as in do not need an update.
I am going to pick up the ES and NQ studies. I primarily use ES and NQ to trade SPY and QQQ. My current set up uses the Consensus Confirmation Candles and the Hull turning points upper and lower study (Awesome work by the way) . I am using these on the 10m as well as a 4181t chart. Between the 2 of these setups, they give a reasonably good guidance.
Definitely adding this to my watch board. Will update with what I see.... My analysis is not very scientific as some others on this thread and this forum but I will provide what every inputs I can.
Thanks once again for your hard work and contributions
/Baba
That would be nice. Thank youI'll be happy to run you new versions of ES and NQ later today. I honestly have no idea how the coefficients have changed over time. I just do updates as people request them.
Thanks for your kind words, and look forward to your updates with use.
mashume
#########################################################
#
# Next Hour ES Trading Range
# Algorithmic Prediction
#
# Values Derived on Data from
# 2021-12-10 to
# 2022-02-20
#
# @mashume at usethinkscript.com
#
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
#
# This Version /ES only
# Functional on 1, 2, 3, 5, 10, 15, 20, 30, 60 minute charts
#
#########################################################
declare upper;
def Y = 31556926;
def M = 2629743;
def D = 86400;
def H = 3600;
def HalfHour = 1800;
def epoch = (getTime() / 1000);
def YMD = (epoch % Y) - (epoch / Y);
def month = (Floor(YMD / M) + 1);
def GMT = Floor((epoch % D) / H);
def HOUR = if GMT > 4 then GMT - 4 else if GMT < 4 then (GMT + 24) - 4 else 0;
def tf = getAggregationPeriod();
def barsPerHour = if tf == AggregationPeriod.HOUR then 1
else if tf == AggregationPeriod.THIRTY_MIN then 2
else if tf == AggregationPeriod.TWENTY_MIN then 3
else if tf == AggregationPeriod.FIFTEEN_MIN then 4
else if tf == AggregationPeriod.TEN_MIN then 6
else if tf == AggregationPeriod.FIVE_MIN then 12
else if tf == AggregationPeriod.THREE_MIN then 20
else if tf == AggregationPeriod.TWO_MIN then 30
else if tf == AggregationPeriod.MIN then 60
else double.nan;
def q1 =
if HOUR == 0 then -1.750000
else if HOUR == 1 then -3.750000
else if HOUR == 2 then -5.500000
else if HOUR == 3 then -4.750000
else if HOUR == 4 then -3.500000
else if HOUR == 5 then -4.250000
else if HOUR == 6 then -4.750000
else if HOUR == 7 then -6.500000
else if HOUR == 8 then -10.062500
else if HOUR == 9 then -14.500000
else if HOUR == 10 then -10.500000
else if HOUR == 11 then -7.312500
else if HOUR == 12 then -7.250000
else if HOUR == 13 then -8.250000
else if HOUR == 14 then -11.500000
else if HOUR == 15 then -9.875000
else if HOUR == 16 then -3.250000
else if HOUR == 17 then -0.875000
else if HOUR == 18 then -5.250000
else if HOUR == 19 then -4.250000
else if HOUR == 20 then -4.500000
else if HOUR == 21 then -2.250000
else if HOUR == 22 then -1.250000
else -2.312500;
def q3 =
if HOUR == 0 then 3.750000
else if HOUR == 1 then 4.500000
else if HOUR == 2 then 5.562500
else if HOUR == 3 then 6.312500
else if HOUR == 4 then 5.250000
else if HOUR == 5 then 3.750000
else if HOUR == 6 then 4.250000
else if HOUR == 7 then 4.250000
else if HOUR == 8 then 5.250000
else if HOUR == 9 then 7.250000
else if HOUR == 10 then 9.500000
else if HOUR == 11 then 7.500000
else if HOUR == 12 then 6.750000
else if HOUR == 13 then 8.500000
else if HOUR == 14 then 9.875000
else if HOUR == 15 then 10.750000
else if HOUR == 16 then 5.500000
else if HOUR == 17 then 3.875000
else if HOUR == 18 then 3.250000
else if HOUR == 19 then 3.000000
else if HOUR == 20 then 2.812500
else if HOUR == 21 then 3.000000
else if HOUR == 22 then 3.125000
else 2.750000;
def m2 =
if HOUR == 0 then 0.750000
else if HOUR == 1 then 0.000000
else if HOUR == 2 then 0.500000
else if HOUR == 3 then 0.875000
else if HOUR == 4 then 1.250000
else if HOUR == 5 then -0.250000
else if HOUR == 6 then 0.125000
else if HOUR == 7 then -1.250000
else if HOUR == 8 then -1.125000
else if HOUR == 9 then -3.250000
else if HOUR == 10 then -1.125000
else if HOUR == 11 then 0.500000
else if HOUR == 12 then 1.000000
else if HOUR == 13 then 2.125000
else if HOUR == 14 then 2.000000
else if HOUR == 15 then 1.000000
else if HOUR == 16 then 1.000000
else if HOUR == 17 then 1.500000
else if HOUR == 18 then -1.375000
else if HOUR == 19 then -0.500000
else if HOUR == 20 then -0.750000
else if HOUR == 21 then 0.500000
else if HOUR == 22 then 0.750000
else 0.250000;
def midline = hl2(period = AggregationPeriod.HOUR)[1];
def median = hl2(period = AggregationPeriod.HOUR)[1] + m2;
def upper = median + (q3);
def lower = median + (q1);
plot c = midline;
c.setStyle(CURve.SHORT_DASH);
c.setDefaultColor(getColor(7));
plot median_line = median[barsPerHour];
median_line.SetPaintingStrategy(PaintingStrategy.DASHES);
median_line.SetDefaultColor(getColor(3));
plot expected_upper = upper[barsPerHour];
expected_upper.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
expected_upper.SetDefaultColor(getColor(1));
plot expected_lower = lower[barsPerHour];
expected_lower.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
expected_lower.SetDefaultColor(getColor(5));
addcloud(expected_upper, expected_lower, color.white, color.white);
def upside = (expected_upper[(-1 * barsPerHour)] - close);
def downside = (close - expected_lower[(-1 * barsPerHour)]);
addLabel(yes, "current upside: " + upside + " current downside: " + downside, if upside > downside then color.dark_green else if downside > upside then color.dark_red else color.dark_gray);
def dist_to_median = (median_line[(-1 * barsPerHour)] - close);
addLabel(yes, "Distance to Median: " + dist_to_median,
if dist_to_median > 5 then color.green
else if dist_to_median > 1 then color.dark_green
else if dist_to_median < -5 then color.red
else if dist_to_median < -1 then color.dark_red
else color.gray);
#########################################################
#
# Next Hour NQ Trading Range
# Algorithmic Prediction
#
# Values Derived on Data from
# 2021-12-10 to
# 2022-02-20
#
# @mashume at usethinkscript.com
#
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
#
# This Version /NQ only
# Functional on 1, 2, 3, 5, 10, 15, 20, 30, 60 minute charts
#
#########################################################
declare upper;
def Y = 31556926;
def M = 2629743;
def D = 86400;
def H = 3600;
def HalfHour = 1800;
def epoch = (getTime() / 1000);
def YMD = (epoch % Y) - (epoch / Y);
def month = (Floor(YMD / M) + 1);
def GMT = Floor((epoch % D) / H);
def HOUR = if GMT > 4 then GMT - 4 else if GMT < 4 then (GMT + 24) - 4 else 0;
def tf = getAggregationPeriod();
def barsPerHour = if tf == AggregationPeriod.HOUR then 1
else if tf == AggregationPeriod.THIRTY_MIN then 2
else if tf == AggregationPeriod.TWENTY_MIN then 3
else if tf == AggregationPeriod.FIFTEEN_MIN then 4
else if tf == AggregationPeriod.TEN_MIN then 6
else if tf == AggregationPeriod.FIVE_MIN then 12
else if tf == AggregationPeriod.THREE_MIN then 20
else if tf == AggregationPeriod.TWO_MIN then 30
else if tf == AggregationPeriod.MIN then 60
else double.nan;
def q1 =
if HOUR == 0 then -7.062500
else if HOUR == 1 then -14.000000
else if HOUR == 2 then -28.000000
else if HOUR == 3 then -21.500000
else if HOUR == 4 then -14.125000
else if HOUR == 5 then -19.250000
else if HOUR == 6 then -22.500000
else if HOUR == 7 then -33.500000
else if HOUR == 8 then -52.062500
else if HOUR == 9 then -77.687500
else if HOUR == 10 then -66.812500
else if HOUR == 11 then -39.812500
else if HOUR == 12 then -34.562500
else if HOUR == 13 then -33.937500
else if HOUR == 14 then -47.750000
else if HOUR == 15 then -42.000000
else if HOUR == 16 then -15.750000
else if HOUR == 17 then -21.625000
else if HOUR == 18 then -23.000000
else if HOUR == 19 then -16.750000
else if HOUR == 20 then -19.937500
else if HOUR == 21 then -10.312500
else if HOUR == 22 then -7.875000
else -9.562500;
def q3 =
if HOUR == 0 then 18.500000
else if HOUR == 1 then 20.062500
else if HOUR == 2 then 24.812500
else if HOUR == 3 then 29.125000
else if HOUR == 4 then 23.062500
else if HOUR == 5 then 16.000000
else if HOUR == 6 then 21.312500
else if HOUR == 7 then 19.000000
else if HOUR == 8 then 28.312500
else if HOUR == 9 then 38.937500
else if HOUR == 10 then 50.000000
else if HOUR == 11 then 31.375000
else if HOUR == 12 then 27.562500
else if HOUR == 13 then 37.250000
else if HOUR == 14 then 48.250000
else if HOUR == 15 then 40.250000
else if HOUR == 16 then 26.000000
else if HOUR == 17 then 40.625000
else if HOUR == 18 then 14.375000
else if HOUR == 19 then 13.250000
else if HOUR == 20 then 12.562500
else if HOUR == 21 then 11.312500
else if HOUR == 22 then 13.250000
else 11.312500;
def m2 =
if HOUR == 0 then 3.500000
else if HOUR == 1 then 0.875000
else if HOUR == 2 then -1.625000
else if HOUR == 3 then 4.625000
else if HOUR == 4 then 7.250000
else if HOUR == 5 then -3.250000
else if HOUR == 6 then -0.250000
else if HOUR == 7 then -4.750000
else if HOUR == 8 then -9.500000
else if HOUR == 9 then -16.375000
else if HOUR == 10 then -7.875000
else if HOUR == 11 then -2.000000
else if HOUR == 12 then 2.750000
else if HOUR == 13 then 4.625000
else if HOUR == 14 then 7.500000
else if HOUR == 15 then 3.500000
else if HOUR == 16 then 3.000000
else if HOUR == 17 then 27.625000
else if HOUR == 18 then -7.250000
else if HOUR == 19 then -1.000000
else if HOUR == 20 then -2.250000
else if HOUR == 21 then 1.250000
else if HOUR == 22 then 1.750000
else 1.500000;
def midline = hl2(period = AggregationPeriod.HOUR)[1];
def median = hl2(period = AggregationPeriod.HOUR)[1] + m2;
def upper = median + (q3);
def lower = median + (q1);
plot c = midline;
c.setStyle(CURve.SHORT_DASH);
c.setDefaultColor(getColor(7));
plot median_line = median[barsPerHour];
median_line.SetPaintingStrategy(PaintingStrategy.DASHES);
median_line.SetDefaultColor(getColor(3));
plot expected_upper = upper[barsPerHour];
expected_upper.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
expected_upper.SetDefaultColor(getColor(1));
plot expected_lower = lower[barsPerHour];
expected_lower.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
expected_lower.SetDefaultColor(getColor(5));
addcloud(expected_upper, expected_lower, color.white, color.white);
def upside = (expected_upper[(-1 * barsPerHour)] - close);
def downside = (close - expected_lower[(-1 * barsPerHour)]);
addLabel(yes, "current upside: " + upside + " current downside: " + downside, if upside > downside then color.dark_green else if downside > upside then color.dark_red else color.dark_gray);
def dist_to_median = (median_line[(-1 * barsPerHour)] - close);
addLabel(yes, "Distance to Median: " + dist_to_median,
if dist_to_median > 5 then color.green
else if dist_to_median > 1 then color.dark_green
else if dist_to_median < -5 then color.red
else if dist_to_median < -1 then color.dark_red
else color.gray);
I tried loading this into Think or Swim but it gives the error Addlabel is not allowed in this context. I have no idea why that error is occurring so I thought I would ask.new indicator coefficients by request. 2022-02-20 ES and NQ
ES
Code:######################################################### # # Next Hour ES Trading Range # Algorithmic Prediction # # Values Derived on Data from # 2021-12-10 to # 2022-02-20 # # @mashume at usethinkscript.com # #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # # This Version /ES only # Functional on 1, 2, 3, 5, 10, 15, 20, 30, 60 minute charts # ######################################################### declare upper; def Y = 31556926; def M = 2629743; def D = 86400; def H = 3600; def HalfHour = 1800; def epoch = (getTime() / 1000); def YMD = (epoch % Y) - (epoch / Y); def month = (Floor(YMD / M) + 1); def GMT = Floor((epoch % D) / H); def HOUR = if GMT > 4 then GMT - 4 else if GMT < 4 then (GMT + 24) - 4 else 0; def tf = getAggregationPeriod(); def barsPerHour = if tf == AggregationPeriod.HOUR then 1 else if tf == AggregationPeriod.THIRTY_MIN then 2 else if tf == AggregationPeriod.TWENTY_MIN then 3 else if tf == AggregationPeriod.FIFTEEN_MIN then 4 else if tf == AggregationPeriod.TEN_MIN then 6 else if tf == AggregationPeriod.FIVE_MIN then 12 else if tf == AggregationPeriod.THREE_MIN then 20 else if tf == AggregationPeriod.TWO_MIN then 30 else if tf == AggregationPeriod.MIN then 60 else double.nan; def q1 = if HOUR == 0 then -1.750000 else if HOUR == 1 then -3.750000 else if HOUR == 2 then -5.500000 else if HOUR == 3 then -4.750000 else if HOUR == 4 then -3.500000 else if HOUR == 5 then -4.250000 else if HOUR == 6 then -4.750000 else if HOUR == 7 then -6.500000 else if HOUR == 8 then -10.062500 else if HOUR == 9 then -14.500000 else if HOUR == 10 then -10.500000 else if HOUR == 11 then -7.312500 else if HOUR == 12 then -7.250000 else if HOUR == 13 then -8.250000 else if HOUR == 14 then -11.500000 else if HOUR == 15 then -9.875000 else if HOUR == 16 then -3.250000 else if HOUR == 17 then -0.875000 else if HOUR == 18 then -5.250000 else if HOUR == 19 then -4.250000 else if HOUR == 20 then -4.500000 else if HOUR == 21 then -2.250000 else if HOUR == 22 then -1.250000 else -2.312500; def q3 = if HOUR == 0 then 3.750000 else if HOUR == 1 then 4.500000 else if HOUR == 2 then 5.562500 else if HOUR == 3 then 6.312500 else if HOUR == 4 then 5.250000 else if HOUR == 5 then 3.750000 else if HOUR == 6 then 4.250000 else if HOUR == 7 then 4.250000 else if HOUR == 8 then 5.250000 else if HOUR == 9 then 7.250000 else if HOUR == 10 then 9.500000 else if HOUR == 11 then 7.500000 else if HOUR == 12 then 6.750000 else if HOUR == 13 then 8.500000 else if HOUR == 14 then 9.875000 else if HOUR == 15 then 10.750000 else if HOUR == 16 then 5.500000 else if HOUR == 17 then 3.875000 else if HOUR == 18 then 3.250000 else if HOUR == 19 then 3.000000 else if HOUR == 20 then 2.812500 else if HOUR == 21 then 3.000000 else if HOUR == 22 then 3.125000 else 2.750000; def m2 = if HOUR == 0 then 0.750000 else if HOUR == 1 then 0.000000 else if HOUR == 2 then 0.500000 else if HOUR == 3 then 0.875000 else if HOUR == 4 then 1.250000 else if HOUR == 5 then -0.250000 else if HOUR == 6 then 0.125000 else if HOUR == 7 then -1.250000 else if HOUR == 8 then -1.125000 else if HOUR == 9 then -3.250000 else if HOUR == 10 then -1.125000 else if HOUR == 11 then 0.500000 else if HOUR == 12 then 1.000000 else if HOUR == 13 then 2.125000 else if HOUR == 14 then 2.000000 else if HOUR == 15 then 1.000000 else if HOUR == 16 then 1.000000 else if HOUR == 17 then 1.500000 else if HOUR == 18 then -1.375000 else if HOUR == 19 then -0.500000 else if HOUR == 20 then -0.750000 else if HOUR == 21 then 0.500000 else if HOUR == 22 then 0.750000 else 0.250000; def midline = hl2(period = AggregationPeriod.HOUR)[1]; def median = hl2(period = AggregationPeriod.HOUR)[1] + m2; def upper = median + (q3); def lower = median + (q1); plot c = midline; c.setStyle(CURve.SHORT_DASH); c.setDefaultColor(getColor(7)); plot median_line = median[barsPerHour]; median_line.SetPaintingStrategy(PaintingStrategy.DASHES); median_line.SetDefaultColor(getColor(3)); plot expected_upper = upper[barsPerHour]; expected_upper.SetPaintingStrategy(PaintingStrategy.HORIZONTAL); expected_upper.SetDefaultColor(getColor(1)); plot expected_lower = lower[barsPerHour]; expected_lower.SetPaintingStrategy(PaintingStrategy.HORIZONTAL); expected_lower.SetDefaultColor(getColor(5)); addcloud(expected_upper, expected_lower, color.white, color.white); def upside = (expected_upper[(-1 * barsPerHour)] - close); def downside = (close - expected_lower[(-1 * barsPerHour)]); addLabel(yes, "current upside: " + upside + " current downside: " + downside, if upside > downside then color.dark_green else if downside > upside then color.dark_red else color.dark_gray); def dist_to_median = (median_line[(-1 * barsPerHour)] - close); addLabel(yes, "Distance to Median: " + dist_to_median, if dist_to_median > 5 then color.green else if dist_to_median > 1 then color.dark_green else if dist_to_median < -5 then color.red else if dist_to_median < -1 then color.dark_red else color.gray);
NQ
Code:######################################################### # # Next Hour NQ Trading Range # Algorithmic Prediction # # Values Derived on Data from # 2021-12-10 to # 2022-02-20 # # @mashume at usethinkscript.com # #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # # This Version /NQ only # Functional on 1, 2, 3, 5, 10, 15, 20, 30, 60 minute charts # ######################################################### declare upper; def Y = 31556926; def M = 2629743; def D = 86400; def H = 3600; def HalfHour = 1800; def epoch = (getTime() / 1000); def YMD = (epoch % Y) - (epoch / Y); def month = (Floor(YMD / M) + 1); def GMT = Floor((epoch % D) / H); def HOUR = if GMT > 4 then GMT - 4 else if GMT < 4 then (GMT + 24) - 4 else 0; def tf = getAggregationPeriod(); def barsPerHour = if tf == AggregationPeriod.HOUR then 1 else if tf == AggregationPeriod.THIRTY_MIN then 2 else if tf == AggregationPeriod.TWENTY_MIN then 3 else if tf == AggregationPeriod.FIFTEEN_MIN then 4 else if tf == AggregationPeriod.TEN_MIN then 6 else if tf == AggregationPeriod.FIVE_MIN then 12 else if tf == AggregationPeriod.THREE_MIN then 20 else if tf == AggregationPeriod.TWO_MIN then 30 else if tf == AggregationPeriod.MIN then 60 else double.nan; def q1 = if HOUR == 0 then -7.062500 else if HOUR == 1 then -14.000000 else if HOUR == 2 then -28.000000 else if HOUR == 3 then -21.500000 else if HOUR == 4 then -14.125000 else if HOUR == 5 then -19.250000 else if HOUR == 6 then -22.500000 else if HOUR == 7 then -33.500000 else if HOUR == 8 then -52.062500 else if HOUR == 9 then -77.687500 else if HOUR == 10 then -66.812500 else if HOUR == 11 then -39.812500 else if HOUR == 12 then -34.562500 else if HOUR == 13 then -33.937500 else if HOUR == 14 then -47.750000 else if HOUR == 15 then -42.000000 else if HOUR == 16 then -15.750000 else if HOUR == 17 then -21.625000 else if HOUR == 18 then -23.000000 else if HOUR == 19 then -16.750000 else if HOUR == 20 then -19.937500 else if HOUR == 21 then -10.312500 else if HOUR == 22 then -7.875000 else -9.562500; def q3 = if HOUR == 0 then 18.500000 else if HOUR == 1 then 20.062500 else if HOUR == 2 then 24.812500 else if HOUR == 3 then 29.125000 else if HOUR == 4 then 23.062500 else if HOUR == 5 then 16.000000 else if HOUR == 6 then 21.312500 else if HOUR == 7 then 19.000000 else if HOUR == 8 then 28.312500 else if HOUR == 9 then 38.937500 else if HOUR == 10 then 50.000000 else if HOUR == 11 then 31.375000 else if HOUR == 12 then 27.562500 else if HOUR == 13 then 37.250000 else if HOUR == 14 then 48.250000 else if HOUR == 15 then 40.250000 else if HOUR == 16 then 26.000000 else if HOUR == 17 then 40.625000 else if HOUR == 18 then 14.375000 else if HOUR == 19 then 13.250000 else if HOUR == 20 then 12.562500 else if HOUR == 21 then 11.312500 else if HOUR == 22 then 13.250000 else 11.312500; def m2 = if HOUR == 0 then 3.500000 else if HOUR == 1 then 0.875000 else if HOUR == 2 then -1.625000 else if HOUR == 3 then 4.625000 else if HOUR == 4 then 7.250000 else if HOUR == 5 then -3.250000 else if HOUR == 6 then -0.250000 else if HOUR == 7 then -4.750000 else if HOUR == 8 then -9.500000 else if HOUR == 9 then -16.375000 else if HOUR == 10 then -7.875000 else if HOUR == 11 then -2.000000 else if HOUR == 12 then 2.750000 else if HOUR == 13 then 4.625000 else if HOUR == 14 then 7.500000 else if HOUR == 15 then 3.500000 else if HOUR == 16 then 3.000000 else if HOUR == 17 then 27.625000 else if HOUR == 18 then -7.250000 else if HOUR == 19 then -1.000000 else if HOUR == 20 then -2.250000 else if HOUR == 21 then 1.250000 else if HOUR == 22 then 1.750000 else 1.500000; def midline = hl2(period = AggregationPeriod.HOUR)[1]; def median = hl2(period = AggregationPeriod.HOUR)[1] + m2; def upper = median + (q3); def lower = median + (q1); plot c = midline; c.setStyle(CURve.SHORT_DASH); c.setDefaultColor(getColor(7)); plot median_line = median[barsPerHour]; median_line.SetPaintingStrategy(PaintingStrategy.DASHES); median_line.SetDefaultColor(getColor(3)); plot expected_upper = upper[barsPerHour]; expected_upper.SetPaintingStrategy(PaintingStrategy.HORIZONTAL); expected_upper.SetDefaultColor(getColor(1)); plot expected_lower = lower[barsPerHour]; expected_lower.SetPaintingStrategy(PaintingStrategy.HORIZONTAL); expected_lower.SetDefaultColor(getColor(5)); addcloud(expected_upper, expected_lower, color.white, color.white); def upside = (expected_upper[(-1 * barsPerHour)] - close); def downside = (close - expected_lower[(-1 * barsPerHour)]); addLabel(yes, "current upside: " + upside + " current downside: " + downside, if upside > downside then color.dark_green else if downside > upside then color.dark_red else color.dark_gray); def dist_to_median = (median_line[(-1 * barsPerHour)] - close); addLabel(yes, "Distance to Median: " + dist_to_median, if dist_to_median > 5 then color.green else if dist_to_median > 1 then color.dark_green else if dist_to_median < -5 then color.red else if dist_to_median < -1 then color.dark_red else color.gray);
Did you add it as a study? If you added it as a strategy or as a scan, it may throw errors. It's not intended as either of those things.I tried loading this into Think or Swim but it gives the error Addlabel is not allowed in this context. I have no idea why that error is occurring so I thought I would ask.
Thank you
Sincerely,
HP
I'm not sure what indicator or study you're referring to... This one has no arrows and no zero line. Please check that you're post of in the correct thread.Couldn't get it to work after all. I was able to add the script alright but it was confusing as all thunder. The white arrows showed at the bottom of the trench where I guess it indicated you should take a profit but, it didn't coorelate with the bar chart. In fact it was opposite the bar chart all together. (everyone says...it was opposite the bar chart all together)
Then the red arrows didn't show. I even adjusted the zero line to 10 from .01 like someone did earlier and still no red arrows and the white arrows still indicated selling at the bottom of the price. (regardless of the time setting).
Finally, the Doctor had put some grey labels in his script and when I added that instead of the TP script, I got a grey label with a week and day number but nothing else. No lines, arrows or bars. So, I ended up taking that out and trying to add it to the original script and that didn't run either. :-(
@mashume can you please post /RTY
#########################################################
#
# Next Hour RTY Trading Range
# Algorithmic Prediction
#
# Values Derived on Data from
# 2021-12-30 to
# 2022-03-11
#
# @mashume at usethinkscript.com
#
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
#
# This Version /RTY only
# Functional on 1, 2, 3, 5, 10, 15, 20, 30, 60 minute charts
#
#########################################################
declare upper;
def Y = 31556926;
def M = 2629743;
def D = 86400;
def H = 3600;
def HalfHour = 1800;
def epoch = (getTime() / 1000);
def YMD = (epoch % Y) - (epoch / Y);
def month = (Floor(YMD / M) + 1);
def GMT = Floor((epoch % D) / H);
def HOUR = if GMT > 4 then GMT - 4 else if GMT < 4 then (GMT + 24) - 4 else 0;
def tf = getAggregationPeriod();
def barsPerHour = if tf == AggregationPeriod.HOUR then 1
else if tf == AggregationPeriod.THIRTY_MIN then 2
else if tf == AggregationPeriod.TWENTY_MIN then 3
else if tf == AggregationPeriod.FIFTEEN_MIN then 4
else if tf == AggregationPeriod.TEN_MIN then 6
else if tf == AggregationPeriod.FIVE_MIN then 12
else if tf == AggregationPeriod.THREE_MIN then 20
else if tf == AggregationPeriod.TWO_MIN then 30
else if tf == AggregationPeriod.MIN then 60
else double.nan;
def q1 =
if HOUR == 0 then -1.300049
else if HOUR == 1 then -2.600098
else if HOUR == 2 then -4.825043
else if HOUR == 3 then -3.000000
else if HOUR == 4 then -3.200195
else if HOUR == 5 then -3.699951
else if HOUR == 6 then -2.500000
else if HOUR == 7 then -4.400024
else if HOUR == 8 then -4.925018
else if HOUR == 9 then -12.000000
else if HOUR == 10 then -9.400146
else if HOUR == 11 then -6.200073
else if HOUR == 12 then -6.624878
else if HOUR == 13 then -7.099854
else if HOUR == 14 then -8.799805
else if HOUR == 15 then -7.700104
else if HOUR == 16 then -2.799927
else if HOUR == 17 then 0.000000
else if HOUR == 18 then -4.099976
else if HOUR == 19 then -3.800049
else if HOUR == 20 then -3.300049
else if HOUR == 21 then -2.000000
else if HOUR == 22 then -1.400024
else -1.599976;
def q3 =
if HOUR == 0 then 2.600098
else if HOUR == 1 then 3.400024
else if HOUR == 2 then 5.500000
else if HOUR == 3 then 5.174988
else if HOUR == 4 then 4.199951
else if HOUR == 5 then 2.200073
else if HOUR == 6 then 3.900024
else if HOUR == 7 then 4.099976
else if HOUR == 8 then 6.724976
else if HOUR == 9 then 10.425110
else if HOUR == 10 then 8.199982
else if HOUR == 11 then 6.625061
else if HOUR == 12 then 5.300049
else if HOUR == 13 then 6.000000
else if HOUR == 14 then 6.299866
else if HOUR == 15 then 5.049988
else if HOUR == 16 then 3.500000
else if HOUR == 17 then 0.000000
else if HOUR == 18 then 2.125061
else if HOUR == 19 then 2.049927
else if HOUR == 20 then 2.199951
else if HOUR == 21 then 1.925110
else if HOUR == 22 then 2.500000
else 2.200073;
def m2 =
if HOUR == 0 then 0.500000
else if HOUR == 1 then -0.300049
else if HOUR == 2 then 0.450073
else if HOUR == 3 then 1.100098
else if HOUR == 4 then 0.350037
else if HOUR == 5 then -0.800049
else if HOUR == 6 then 0.450073
else if HOUR == 7 then 0.100098
else if HOUR == 8 then 0.749939
else if HOUR == 9 then -1.549988
else if HOUR == 10 then -0.799988
else if HOUR == 11 then 0.500000
else if HOUR == 12 then -0.549927
else if HOUR == 13 then -0.349976
else if HOUR == 14 then -1.500000
else if HOUR == 15 then -1.199951
else if HOUR == 16 then 0.100098
else if HOUR == 17 then 0.000000
else if HOUR == 18 then -1.199951
else if HOUR == 19 then -0.900146
else if HOUR == 20 then -0.500000
else if HOUR == 21 then 0.199951
else if HOUR == 22 then 0.900024
else 0.300049;
def midline = hl2(period = AggregationPeriod.HOUR)[1];
def median = hl2(period = AggregationPeriod.HOUR)[1] + m2;
def upper = median + (q3);
def lower = median + (q1);
plot c = midline;
c.setStyle(CURve.SHORT_DASH);
c.setDefaultColor(getColor(7));
plot median_line = median[barsPerHour];
median_line.SetPaintingStrategy(PaintingStrategy.DASHES);
median_line.SetDefaultColor(getColor(3));
plot expected_upper = upper[barsPerHour];
expected_upper.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
expected_upper.SetDefaultColor(getColor(1));
plot expected_lower = lower[barsPerHour];
expected_lower.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
expected_lower.SetDefaultColor(getColor(5));
addcloud(expected_upper, expected_lower, color.white, color.white);
def upside = (expected_upper[(-1 * barsPerHour)] - close);
def downside = (close - expected_lower[(-1 * barsPerHour)]);
addLabel(yes, "current upside: " + upside + " current downside: " + downside, if upside > downside then color.dark_green else if downside > upside then color.dark_red else color.dark_gray);
def dist_to_median = (median_line[(-1 * barsPerHour)] - close);
addLabel(yes, "Distance to Median: " + dist_to_median,
if dist_to_median > 5 then color.green
else if dist_to_median > 1 then color.dark_green
else if dist_to_median < -5 then color.red
else if dist_to_median < -1 then color.dark_red
else color.gray);
So on the notion of some visualization of the change in volatility, I present the following. They are normalized against the mean price for recent data ranges, and the central price (datewise middle of the range) for the older set.I think the unprecedented events in eastern Europe have certainly introduced additional volatility to the markets. It might actually be interesting to run a copy of the study with data from only the last 20 ish days and see how different the coefficients are... hmmm...
-mashume
I believe that was to be expected but thanks for taking the time to run these simulations.So on the notion of some visualization of the change in volatility, I present the following. They are normalized against the mean price for recent data ranges, and the central price (datewise middle of the range) for the older set.
es range:
es median change:
cl range:
cl median change:
There is a very clear change in the ranges and expected movements for both of these. It is interesting, but I'm a bit pressed for time.
-mashume
Thank you @mashume for your hard work and sharing your study. I am wondering if such code can be applicable to specific tickers such as AFRM, RBLX or SNAP? Thanks again for your contribution.So on the notion of some visualization of the change in volatility, I present the following. They are normalized against the mean price for recent data ranges, and the central price (datewise middle of the range) for the older set.
es range:
es median change:
cl range:
cl median change:
There is a very clear change in the ranges and expected movements for both of these. It is interesting, but I'm a bit pressed for time.
-mashume
I can throw them together for you, assuming my API calls are still working (they fail from time to time until the upstream package manager fixes whatever got changed).Thank you @mashume for your hard work and sharing your study. I am wondering if such code can be applicable to specific tickers such as AFRM, RBLX or SNAP? Thanks again for your contribution.
#########################################################
#
# Next Hour AFRM Trading Range
# Algorithmic Prediction
#
# Values Derived on Data from
# 2022-03-24 to
# 2022-06-17
#
# @mashume at usethinkscript.com
#
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
#
# This Version /AFRM only
# Functional on 1, 2, 3, 5, 10, 15, 20, 30, 60 minute charts
#
#########################################################
declare upper;
def Y = 31556926;
def M = 2629743;
def D = 86400;
def H = 3600;
def HalfHour = 1800;
def epoch = (getTime() / 1000);
def YMD = (epoch % Y) - (epoch / Y);
def month = (Floor(YMD / M) + 1);
def GMT = Floor((epoch % D) / H);
def HOUR = if GMT > 4 then GMT - 4 else if GMT < 4 then (GMT + 24) - 4 else 0;
def tf = getAggregationPeriod();
def barsPerHour = if tf == AggregationPeriod.HOUR then 1
else if tf == AggregationPeriod.THIRTY_MIN then 2
else if tf == AggregationPeriod.TWENTY_MIN then 3
else if tf == AggregationPeriod.FIFTEEN_MIN then 4
else if tf == AggregationPeriod.TEN_MIN then 6
else if tf == AggregationPeriod.FIVE_MIN then 12
else if tf == AggregationPeriod.THREE_MIN then 20
else if tf == AggregationPeriod.TWO_MIN then 30
else if tf == AggregationPeriod.MIN then 60
else double.nan;
def q1 =
if HOUR == 0 then 0.000000
else if HOUR == 1 then 0.000000
else if HOUR == 2 then 0.000000
else if HOUR == 3 then 0.000000
else if HOUR == 4 then -0.220000
else if HOUR == 5 then -0.240000
else if HOUR == 6 then -0.290000
else if HOUR == 7 then -0.210000
else if HOUR == 8 then -0.650000
else if HOUR == 9 then -1.016000
else if HOUR == 10 then -0.624000
else if HOUR == 11 then -0.460000
else if HOUR == 12 then -0.360000
else if HOUR == 13 then -0.310000
else if HOUR == 14 then -0.286000
else if HOUR == 15 then -0.186000
else if HOUR == 16 then -0.070000
else if HOUR == 17 then -0.070000
else if HOUR == 18 then -0.060000
else if HOUR == 19 then -0.355000
else if HOUR == 20 then 0.000000
else if HOUR == 21 then 0.000000
else if HOUR == 22 then 0.000000
else 0.000000;
def q3 =
if HOUR == 0 then 0.000000
else if HOUR == 1 then 0.000000
else if HOUR == 2 then 0.000000
else if HOUR == 3 then 0.000000
else if HOUR == 4 then 0.120000
else if HOUR == 5 then 0.120000
else if HOUR == 6 then 0.077500
else if HOUR == 7 then 0.110000
else if HOUR == 8 then 0.456250
else if HOUR == 9 then 0.630650
else if HOUR == 10 then 0.299999
else if HOUR == 11 then 0.289999
else if HOUR == 12 then 0.302000
else if HOUR == 13 then 0.356228
else if HOUR == 14 then 0.357752
else if HOUR == 15 then 0.260000
else if HOUR == 16 then 0.108500
else if HOUR == 17 then 0.100000
else if HOUR == 18 then 0.120000
else if HOUR == 19 then 0.320000
else if HOUR == 20 then 0.000000
else if HOUR == 21 then 0.000000
else if HOUR == 22 then 0.000000
else 0.000000;
def m2 =
if HOUR == 0 then 0.000000
else if HOUR == 1 then 0.000000
else if HOUR == 2 then 0.000000
else if HOUR == 3 then 0.000000
else if HOUR == 4 then -0.040000
else if HOUR == 5 then -0.040000
else if HOUR == 6 then -0.105000
else if HOUR == 7 then -0.028000
else if HOUR == 8 then -0.050000
else if HOUR == 9 then -0.263000
else if HOUR == 10 then -0.172000
else if HOUR == 11 then -0.050000
else if HOUR == 12 then -0.029000
else if HOUR == 13 then -0.015000
else if HOUR == 14 then -0.009000
else if HOUR == 15 then 0.040000
else if HOUR == 16 then 0.020000
else if HOUR == 17 then 0.010000
else if HOUR == 18 then 0.030000
else if HOUR == 19 then -0.010000
else if HOUR == 20 then 0.000000
else if HOUR == 21 then 0.000000
else if HOUR == 22 then 0.000000
else 0.000000;
def midline = hl2(period = AggregationPeriod.HOUR)[1];
def median = hl2(period = AggregationPeriod.HOUR)[1] + m2;
def upper = median + (q3);
def lower = median + (q1);
plot c = midline;
c.setStyle(CURve.SHORT_DASH);
c.setDefaultColor(getColor(7));
plot median_line = median[barsPerHour];
median_line.SetPaintingStrategy(PaintingStrategy.DASHES);
median_line.SetDefaultColor(getColor(3));
plot expected_upper = upper[barsPerHour];
expected_upper.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
expected_upper.SetDefaultColor(getColor(1));
plot expected_lower = lower[barsPerHour];
expected_lower.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
expected_lower.SetDefaultColor(getColor(5));
addcloud(expected_upper, expected_lower, color.white, color.white);
def upside = (expected_upper[(-1 * barsPerHour)] - close);
def downside = (close - expected_lower[(-1 * barsPerHour)]);
addLabel(yes, "current upside: " + upside + " current downside: " + downside, if upside > downside then color.dark_green else if downside > upside then color.dark_red else color.dark_gray);
def dist_to_median = (median_line[(-1 * barsPerHour)] - close);
addLabel(yes, "Distance to Median: " + dist_to_median,
if dist_to_median > 5 then color.green
else if dist_to_median > 1 then color.dark_green
else if dist_to_median < -5 then color.red
else if dist_to_median < -1 then color.dark_red
else color.gray);
#########################################################
#
# Next Hour RBLX Trading Range
# Algorithmic Prediction
#
# Values Derived on Data from
# 2022-03-24 to
# 2022-06-17
#
# @mashume at usethinkscript.com
#
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
#
# This Version /RBLX only
# Functional on 1, 2, 3, 5, 10, 15, 20, 30, 60 minute charts
#
#########################################################
declare upper;
def Y = 31556926;
def M = 2629743;
def D = 86400;
def H = 3600;
def HalfHour = 1800;
def epoch = (getTime() / 1000);
def YMD = (epoch % Y) - (epoch / Y);
def month = (Floor(YMD / M) + 1);
def GMT = Floor((epoch % D) / H);
def HOUR = if GMT > 4 then GMT - 4 else if GMT < 4 then (GMT + 24) - 4 else 0;
def tf = getAggregationPeriod();
def barsPerHour = if tf == AggregationPeriod.HOUR then 1
else if tf == AggregationPeriod.THIRTY_MIN then 2
else if tf == AggregationPeriod.TWENTY_MIN then 3
else if tf == AggregationPeriod.FIFTEEN_MIN then 4
else if tf == AggregationPeriod.TEN_MIN then 6
else if tf == AggregationPeriod.FIVE_MIN then 12
else if tf == AggregationPeriod.THREE_MIN then 20
else if tf == AggregationPeriod.TWO_MIN then 30
else if tf == AggregationPeriod.MIN then 60
else double.nan;
def q1 =
if HOUR == 0 then 0.000000
else if HOUR == 1 then 0.000000
else if HOUR == 2 then 0.000000
else if HOUR == 3 then 0.000000
else if HOUR == 4 then -0.150000
else if HOUR == 5 then -0.120000
else if HOUR == 6 then -0.180000
else if HOUR == 7 then -0.190000
else if HOUR == 8 then -0.880000
else if HOUR == 9 then -0.900000
else if HOUR == 10 then -0.608000
else if HOUR == 11 then -0.440000
else if HOUR == 12 then -0.301000
else if HOUR == 13 then -0.269000
else if HOUR == 14 then -0.260000
else if HOUR == 15 then -0.201000
else if HOUR == 16 then -0.043000
else if HOUR == 17 then -0.050000
else if HOUR == 18 then -0.060000
else if HOUR == 19 then -0.330000
else if HOUR == 20 then 0.000000
else if HOUR == 21 then 0.000000
else if HOUR == 22 then 0.000000
else 0.000000;
def q3 =
if HOUR == 0 then 0.000000
else if HOUR == 1 then 0.000000
else if HOUR == 2 then 0.000000
else if HOUR == 3 then 0.000000
else if HOUR == 4 then 0.110000
else if HOUR == 5 then 0.080000
else if HOUR == 6 then 0.125000
else if HOUR == 7 then 0.130000
else if HOUR == 8 then 0.440300
else if HOUR == 9 then 0.732500
else if HOUR == 10 then 0.392451
else if HOUR == 11 then 0.310301
else if HOUR == 12 then 0.289999
else if HOUR == 13 then 0.315474
else if HOUR == 14 then 0.255049
else if HOUR == 15 then 0.190401
else if HOUR == 16 then 0.070000
else if HOUR == 17 then 0.070000
else if HOUR == 18 then 0.070000
else if HOUR == 19 then 0.450000
else if HOUR == 20 then 0.000000
else if HOUR == 21 then 0.000000
else if HOUR == 22 then 0.000000
else 0.000000;
def m2 =
if HOUR == 0 then 0.000000
else if HOUR == 1 then 0.000000
else if HOUR == 2 then 0.000000
else if HOUR == 3 then 0.000000
else if HOUR == 4 then -0.040000
else if HOUR == 5 then -0.010000
else if HOUR == 6 then -0.030000
else if HOUR == 7 then -0.030000
else if HOUR == 8 then -0.160000
else if HOUR == 9 then -0.179000
else if HOUR == 10 then -0.129000
else if HOUR == 11 then -0.040000
else if HOUR == 12 then -0.030000
else if HOUR == 13 then 0.029000
else if HOUR == 14 then -0.037000
else if HOUR == 15 then 0.000000
else if HOUR == 16 then 0.010000
else if HOUR == 17 then 0.010000
else if HOUR == 18 then 0.000000
else if HOUR == 19 then 0.095000
else if HOUR == 20 then 0.000000
else if HOUR == 21 then 0.000000
else if HOUR == 22 then 0.000000
else 0.000000;
def midline = hl2(period = AggregationPeriod.HOUR)[1];
def median = hl2(period = AggregationPeriod.HOUR)[1] + m2;
def upper = median + (q3);
def lower = median + (q1);
plot c = midline;
c.setStyle(CURve.SHORT_DASH);
c.setDefaultColor(getColor(7));
plot median_line = median[barsPerHour];
median_line.SetPaintingStrategy(PaintingStrategy.DASHES);
median_line.SetDefaultColor(getColor(3));
plot expected_upper = upper[barsPerHour];
expected_upper.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
expected_upper.SetDefaultColor(getColor(1));
plot expected_lower = lower[barsPerHour];
expected_lower.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
expected_lower.SetDefaultColor(getColor(5));
addcloud(expected_upper, expected_lower, color.white, color.white);
def upside = (expected_upper[(-1 * barsPerHour)] - close);
def downside = (close - expected_lower[(-1 * barsPerHour)]);
addLabel(yes, "current upside: " + upside + " current downside: " + downside, if upside > downside then color.dark_green else if downside > upside then color.dark_red else color.dark_gray);
def dist_to_median = (median_line[(-1 * barsPerHour)] - close);
addLabel(yes, "Distance to Median: " + dist_to_median,
if dist_to_median > 5 then color.green
else if dist_to_median > 1 then color.dark_green
else if dist_to_median < -5 then color.red
else if dist_to_median < -1 then color.dark_red
else color.gray);
#########################################################
#
# Next Hour SNAP Trading Range
# Algorithmic Prediction
#
# Values Derived on Data from
# 2022-03-24 to
# 2022-06-17
#
# @mashume at usethinkscript.com
#
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
#
# This Version /SNAP only
# Functional on 1, 2, 3, 5, 10, 15, 20, 30, 60 minute charts
#
#########################################################
declare upper;
def Y = 31556926;
def M = 2629743;
def D = 86400;
def H = 3600;
def HalfHour = 1800;
def epoch = (getTime() / 1000);
def YMD = (epoch % Y) - (epoch / Y);
def month = (Floor(YMD / M) + 1);
def GMT = Floor((epoch % D) / H);
def HOUR = if GMT > 4 then GMT - 4 else if GMT < 4 then (GMT + 24) - 4 else 0;
def tf = getAggregationPeriod();
def barsPerHour = if tf == AggregationPeriod.HOUR then 1
else if tf == AggregationPeriod.THIRTY_MIN then 2
else if tf == AggregationPeriod.TWENTY_MIN then 3
else if tf == AggregationPeriod.FIFTEEN_MIN then 4
else if tf == AggregationPeriod.TEN_MIN then 6
else if tf == AggregationPeriod.FIVE_MIN then 12
else if tf == AggregationPeriod.THREE_MIN then 20
else if tf == AggregationPeriod.TWO_MIN then 30
else if tf == AggregationPeriod.MIN then 60
else double.nan;
def q1 =
if HOUR == 0 then 0.000000
else if HOUR == 1 then 0.000000
else if HOUR == 2 then 0.000000
else if HOUR == 3 then 0.000000
else if HOUR == 4 then -0.150000
else if HOUR == 5 then -0.120000
else if HOUR == 6 then -0.120000
else if HOUR == 7 then -0.140000
else if HOUR == 8 then -0.410000
else if HOUR == 9 then -0.526000
else if HOUR == 10 then -0.335000
else if HOUR == 11 then -0.245000
else if HOUR == 12 then -0.205000
else if HOUR == 13 then -0.180000
else if HOUR == 14 then -0.195000
else if HOUR == 15 then -0.120000
else if HOUR == 16 then -0.040000
else if HOUR == 17 then -0.040000
else if HOUR == 18 then -0.040000
else if HOUR == 19 then -0.150000
else if HOUR == 20 then 0.000000
else if HOUR == 21 then 0.000000
else if HOUR == 22 then 0.000000
else 0.000000;
def q3 =
if HOUR == 0 then 0.000000
else if HOUR == 1 then 0.000000
else if HOUR == 2 then 0.000000
else if HOUR == 3 then 0.000000
else if HOUR == 4 then 0.060000
else if HOUR == 5 then 0.080000
else if HOUR == 6 then 0.090000
else if HOUR == 7 then 0.080000
else if HOUR == 8 then 0.235000
else if HOUR == 9 then 0.320050
else if HOUR == 10 then 0.205001
else if HOUR == 11 then 0.192200
else if HOUR == 12 then 0.154850
else if HOUR == 13 then 0.155000
else if HOUR == 14 then 0.145000
else if HOUR == 15 then 0.135000
else if HOUR == 16 then 0.050000
else if HOUR == 17 then 0.041700
else if HOUR == 18 then 0.040000
else if HOUR == 19 then 0.260000
else if HOUR == 20 then 0.000000
else if HOUR == 21 then 0.000000
else if HOUR == 22 then 0.000000
else 0.000000;
def m2 =
if HOUR == 0 then 0.000000
else if HOUR == 1 then 0.000000
else if HOUR == 2 then 0.000000
else if HOUR == 3 then 0.000000
else if HOUR == 4 then -0.030000
else if HOUR == 5 then -0.020000
else if HOUR == 6 then -0.010000
else if HOUR == 7 then -0.010000
else if HOUR == 8 then -0.050000
else if HOUR == 9 then -0.133000
else if HOUR == 10 then -0.050000
else if HOUR == 11 then -0.020000
else if HOUR == 12 then -0.030000
else if HOUR == 13 then -0.011000
else if HOUR == 14 then -0.040000
else if HOUR == 15 then 0.006000
else if HOUR == 16 then 0.000000
else if HOUR == 17 then 0.000000
else if HOUR == 18 then 0.000000
else if HOUR == 19 then 0.060000
else if HOUR == 20 then 0.000000
else if HOUR == 21 then 0.000000
else if HOUR == 22 then 0.000000
else 0.000000;
def midline = hl2(period = AggregationPeriod.HOUR)[1];
def median = hl2(period = AggregationPeriod.HOUR)[1] + m2;
def upper = median + (q3);
def lower = median + (q1);
plot c = midline;
c.setStyle(CURve.SHORT_DASH);
c.setDefaultColor(getColor(7));
plot median_line = median[barsPerHour];
median_line.SetPaintingStrategy(PaintingStrategy.DASHES);
median_line.SetDefaultColor(getColor(3));
plot expected_upper = upper[barsPerHour];
expected_upper.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
expected_upper.SetDefaultColor(getColor(1));
plot expected_lower = lower[barsPerHour];
expected_lower.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
expected_lower.SetDefaultColor(getColor(5));
addcloud(expected_upper, expected_lower, color.white, color.white);
def upside = (expected_upper[(-1 * barsPerHour)] - close);
def downside = (close - expected_lower[(-1 * barsPerHour)]);
addLabel(yes, "current upside: " + upside + " current downside: " + downside, if upside > downside then color.dark_green else if downside > upside then color.dark_red else color.dark_gray);
def dist_to_median = (median_line[(-1 * barsPerHour)] - close);
addLabel(yes, "Distance to Median: " + dist_to_median,
if dist_to_median > 5 then color.green
else if dist_to_median > 1 then color.dark_green
else if dist_to_median < -5 then color.red
else if dist_to_median < -1 then color.dark_red
else color.gray);
Join useThinkScript to post your question to a community of 21,000+ developers and traders.
Start a new thread and receive assistance from our community.
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.
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.