Local Hurst Exponent for ThinkorSwim

Hi @sniktau I found Mobius version of Hurst Exponent.

# Hurst Exponent
# Mobius
# V03.10.2015

# To estimate the Hurst exponent a Root time series is rescaled into shorter ranges. The ranges are mean centered and the Hurst exponent is derived from the exponent of this power law.

# The commented out plots are to check the Average rescaled segments for continuity.

#hint: Hurst Exponent responds best to large data fields.

declare lower;

input n = 252; #hint n: Length for the Hurst Exponent calculations.

def bar = barNumber();
def Lbar = HighestAll(if !isNaN(close[-1]) then bar else double.nan);
def coef1 = Floor(n / 2);
def coef2 = Floor(n / 4);
def coef3 = Floor(n / 8);
def coef4 = Floor(n / 16);

addLabel(1, "Bars On Chart = " + bar + " coef n = " + n + " coef 1 = " + coef1 + " coef2 = " + coef2 + " coef3 = " + coef3 + " coef4 = " + coef4, color.white);

def c = close;
def LD = LinDev(c, n);
def Root = (highest(LD, n) - lowest(LD, n)) / StDev(LD, n);

# =====================================================

def baseSet = if bar >= Lbar - n
then (fold a = 0 to n
with r
while bar < Lbar
do r + Root) / n
else baseSet[1];

#plot data = if baseSet then baseSet else double.nan;

# =====================================================

def Set1 = if bar >= Lbar - n
then (fold i = 0 to coef1
with s
while bar < Lbar - n + coef1
do s + Root) / coef1
else Set1[1];

#plot data1 = if Set1 then Set1 else double.nan;

def Set2 = if bar >= Lbar - n + coef1
then (fold i2 = 0 to coef1
with s2
while bar <= Lbar
do s2 + Root) / coef1
else Set2[1];

#plot data2 = if Set2 then Set2 else double.nan;

# ============================================================

def Set3 = if bar >= Lbar - n
then (fold i3 = 0 to coef2
with s3
while bar < Lbar - n + coef2
do s3 + Root) / coef2
else Set3[1];

#plot data3 = if Set3 then Set3 else double.nan;

def Set4 = if bar >= Lbar - n + coef2
then (fold i4 = 0 to coef2
with s4
while bar < Lbar - n + (coef2 * 2)
do s4 + Root) / coef2
else Set4[1];

#plot data4 = if Set4 then Set4 else double.nan;

def Set5 = if bar >= Lbar - n + (coef2 * 2)
then (fold i5 = 0 to coef2
with s5
while bar < Lbar - n + (coef2 * 3)
do s5 + Root) / coef2
else Set5[1];

#plot data5 = if Set5 then Set5 else double.nan;

def Set6 = if bar >= Lbar - n + (coef2 * 3)
then (fold i6 = 0 to coef2
with s6
while bar < Lbar
do s6 + Root) / coef2
else Set6[1];

#plot Data6 = if Set6 then Set6 else double.nan;

#===========================================================

def Set7 = if bar >= Lbar - n
then (fold i7 = 0 to coef3
with s7
while barNumber() < Lbar - n + coef3
do s7 + Root) / coef3
else Set7[1];

#plot Data7 = if Set7 then Set7 else double.nan;

def Set8 = if bar >= Lbar - n + coef3
then (fold i8 = 0 to coef3
with s8
while bar < Lbar - n + (coef3 * 2)
do s8 + Root) / coef3
else Set8[1];

#plot Data8 = if Set8 then Set8 else double.nan;

def Set9 =if bar >= Lbar - n + (coef3 * 2)
then (fold i9 = 0 to coef3
with s9
while bar < Lbar - n + (coef3 * 3)
do s9 + Root) / coef3
else Set9[1];

#plot Data9 = if Set9 then Set9 else double.nan;

def Set10 = if bar >= Lbar - n + (coef3 * 3)
then (fold i10 = 0 to coef3
with s10
while bar < Lbar - n + (coef3 * 4)
do s10 + Root) / coef3
else Set10[1];

#plot Data10 = if Set10 then Set10 else double.nan;

def Set11 = if bar >= Lbar - n + (coef3 * 4)
then (fold i11 = 0 to coef3
with s11
while bar < Lbar - n + (coef3 * 5)
do s11 + Root) / coef3
else Set11[1];

#plot Data11 = if Set11 then Set11 else double.nan;

def Set12 = if bar >= Lbar - n + (coef3 * 5)
then (fold i12 = 0 to coef3
with s12
while bar < Lbar - n + (coef3 * 6)
do s12 + Root) / coef3
else Set12[1];

#plot Data12 = if Set12 then Set12 else double.nan;

def Set13 = if bar >= Lbar - n + (coef3 * 6)
then (fold i13 = 0 to coef3
with s13
while bar < Lbar - n + (coef3 * 7)
do s13 + Root) / coef3
else Set13[1];

#plot Data13 = if Set13 then Set13 else double.nan;

def Set14 = if bar >= Lbar - n + (coef3 * 7)
then (fold i14 = 0 to coef3
with s14
while bar < Lbar
do s14 + Root) / coef3
else Set14[1];

#plot Data14 = if Set14 then Set14 else double.nan;

#================================================================

def Set15 = if bar >= Lbar - n
then (fold i15 = 0 to coef4
with s15
while bar < Lbar - n + coef4
do s15 + Root) / coef4
else Set15[1];

#plot Data15 = if Set15 then Set15 else double.nan;

def Set16 = if bar >= Lbar - n + coef4
then (fold i16 = 0 to coef4
with s16
while bar < Lbar - n + (coef4 * 2)
do s16 + Root) / coef4
else Set16[1];

#plot Data16 = if Set16 then Set16 else double.nan;

def Set17 = if bar >= Lbar - n + (coef4 * 2)
then (fold i17 = 0 to coef4
with s17
while bar < Lbar - n + (coef4 * 3)
do s17 + Root) / coef4
else Set17[1];

#plot Data17 = if Set17 then Set17 else double.nan;

def Set18 = if bar >= Lbar - n + (coef4 * 3)
then (fold i18 = 0 to coef4
with s18
while bar < Lbar - n + (coef4 * 4)
do s18 + Root) / coef4
else Set18[1];

#plot Data18 = if Set18 then Set18 else double.nan;

def Set19 = if bar >= Lbar - n + (coef4 * 4)
then (fold i19 = 0 to coef4
with s19
while bar < Lbar - n + (coef4 * 5)
do s19 + Root) / coef4
else Set19[1];

#plot Data19 = if Set19 then Set19 else double.nan;

def Set20 = if bar >= Lbar - n + (coef4 * 5)
then (fold i20 = 0 to coef4
with s20
while bar < Lbar - n + (coef4 * 6)
do s20 + Root) / coef4
else Set20[1];

#plot Data20 = if Set20 then Set20 else double.nan;

def Set21 = if bar >= Lbar - n + (coef4 * 6)
then (fold i21 = 0 to coef4
with s21
while bar < Lbar - n + (coef4 * 7)
do s21 + Root) / coef4
else Set21[1];

#plot Data21 = if Set21 then Set21 else double.nan;

def Set22 = if bar >= Lbar - n + (coef4 * 7)
then (fold i22 = 0 to coef4
with s22
while bar < Lbar - n + (coef4 * 8)
do s22 + Root) / coef4
else Set22[1];

#plot Data22 = if Set22 then Set22 else double.nan;

def Set23 = if bar >= Lbar - n + (coef4 * 8)
then (fold i23 = 0 to coef4
with s23
while bar < Lbar - n + (coef4 * 9)
do s23 + Root) / coef4
else Set23[1];

#plot Data23 = if Set23 then Set23 else double.nan;

def Set24 = if bar >= Lbar - n + (coef4 * 9)
then (fold i24 = 0 to coef4
with s24
while bar < Lbar - n + (coef4 * 10)
do s24 + Root) / coef4
else Set24[1];

#plot Data24 = if Set24 then Set24 else double.nan;

def Set25 = if bar >= Lbar - n + (coef4 * 10)
then (fold i25 = 0 to coef4
with s25
while bar < Lbar - n + (coef4 * 11)
do s25 + Root) / coef4
else Set25[1];

#plot Data25 = if Set25 then Set25 else double.nan;

def Set26 = if bar >= Lbar - n + (coef4 * 11)
then (fold i26 = 0 to coef4
with s26
while bar < Lbar - n + (coef4 * 12)
do s26 + Root) / coef4
else Set26[1];

#plot Data26 = if Set26 then Set26 else double.nan;

def Set27 = if bar >= Lbar - n + (coef4 * 12)
then (fold i27 = 0 to coef4
with s27
while bar < Lbar - n + (coef4 * 13)
do s27 + Root) / coef4
else Set27[1];

#plot Data27 = if Set27 then Set27 else double.nan;

def Set28 = if bar >= Lbar - n + (coef4 * 13)
then (fold i28 = 0 to coef4
with s28
while bar < Lbar - n + (coef4 * 14)
do s28 + Root) / coef4
else Set28[1];

#plot Data28 = if Set28 then Set28 else double.nan;

def Set29 = if bar >= Lbar - n + (coef4 * 14)
then (fold i29 = 0 to coef4
with s29
while bar < Lbar - n + (coef4 * 15)
do s29 + Root) / coef4
else Set29[1];

#plot Data29 = if Set29 then Set29 else double.nan;

def Set30 = if bar >= Lbar - n + (coef4 * 15)
then (fold i30 = 0 to coef4
with s30
while bar < Lbar
do s30 + Root) / coef4
else Set30[1];

#plot Data30 = if Set30 then Set30 else double.nan;

def M = (BaseSet + Set1 + Set2 + Set3 + Set4 + Set5 + Set6 + Set7 + Set8 + Set9 + Set10 + Set11 + Set12 + Set13 + Set14 + Set15 + Set16 + Set17 + Set18 + Set19 + Set20 + Set21 + Set22 + Set23 + Set24 + Set25 + Set26 + Set27 + Set28 + Set29 + Set30) / 31;

def Hurst = if bar >= Lbar - n
then (fold b = 0 to n
with z
while bar < Lbar
do z + M) / n
else double.nan;

Plot HurstE = If Hurst == 0 then double.nan else Hurst;

#HurstE.SetDefaultColor(Color.Cyan);

plot zero = if isNaN(c) then double.nan else 0;
zero.SetDefaultColor(Color.Yellow);

plot one = if isNaN(c) then double.nan else 1;
one.SetDefaultColor(Color.Yellow);

plot LM = if isNaN(c) then double.nan else .45;
LM.SetDefaultColor(Color.Gray);

plot HM = if isNaN(c) then double.nan else .55;
HM.SetDefaultColor(Color.Gray);

AddCloud(LM , HM, color.white, color.white);

AddCloud(HM, one, Color.Light_Green, Color.Light_Green);

AddCloud(zero, LM, Color.Light_Red, Color.Light_Red);

# End Code Hurst Exponent

AddChartBubble(!isNaN(c[1]) and isNaN(c), .5, "Brownian", color.white, yes);

AddChartBubble(!isNaN(c[1]) and isNaN(c), 0, "Mean Reverting", color.white, yes);

AddChartBubble(!isNaN(c[1]) and isNaN(c), 1, "Trending", color.white, no);

# End Code Hurst Exponent
 

Join useThinkScript to post your question to a community of 21,000+ developers and traders.

@sniktau You're going to be hard pressed to find somebody at TD or the TOS office who will really know thermo mode. Ehlers was the head of the trading division when i was there and they had just released it (he was the inventor), long story short...nobody likes or cares bout thermo. The active traders already had systems they liked and didn't want to bother learning to read a new system and newbie traders thought it looked cool but didn't know wtf to do with it. In the several years I worked with TD, I had a total of 2 callers ask about thermo mode... Anyways, they left it in because Ehlers was still there and it basically just doesn't get much use (that's why it's just an appendix footnote most likely) So unless things have MASSIVELY changed in the last 4-5 years, don't expect anybody to know anything beyond what you can find on the net.

Thermo was slapped on with the introduction of the "Swami" indicators. You can read more about how all this crap was developed here.
 
Last edited by a moderator:
I'm trying to make the value of the Hurst exponent an upper label, but for SOME stupid reason all I get is an N/A or a 0 instead of the plot value? Ideas?
 
I found a code for hurts channel

Code:
# Hurst_Channels
#
# www.trendxplorer.info
# [email protected]
#
# Build: July 25, 2012
# Rev 1: July 27, 2012: ExtrapolatedMA based on Kirills code
# Rev 2: July 29, 2012: FlowPrice value for better extremes
# Rev 3: Sept  9, 2012: Coloring for ExtrapolatedCMA added
#

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

declare upper;

input price = hl2;
input length = 10;
input InnerValue = 1.6;
input OuterValue = 2.6;
input ExtremeValue = 4.2;
input showFlowPrice = NO;
input showPriceBar = YES;
input smooth = 1;

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]);

plot CenteredMA = if !IsNaN(dPrice) then CMA else Double.NaN;
CenteredMA.SetDefaultColor(GetColor(1));
CenteredMA.SetLineWeight(2);

plot ExtrapolatedMA = if !IsNaN(price) and IsNaN(dprice[-1]) then CMA else
Double.NaN;
ExtrapolatedMA.SetDefaultColor(GetColor(0));
ExtrapolatedMA.SetLineWeight(2);
ExtrapolatedMA.SetStyle(Curve.SHORT_DASH);
ExtrapolatedMA.DefineColor("Up", Color.Magenta);
ExtrapolatedMA.DefineColor("Down", Color.Yellow);
ExtrapolatedMA.AssignValueColor(if ExtrapolatedMA >= ExtrapolatedMA[1] then ExtrapolatedMA.color("Up") else ExtrapolatedMA.color("Down"));

def ExtremeBand = CMA * ExtremeValue / 100;;
def OuterBand   = CMA * OuterValue / 100;
def InnerBand   = CMA * InnerValue / 100;

plot UpperExtremeBand = if !IsNaN(price) then CMA + ExtremeBand else Double.Nan;
plot LowerExtremeBand = if !IsNaN(price) then CMA - ExtremeBand else Double.Nan;
plot UpperOuterBand   = if !IsNaN(price) then CMA + OuterBand else Double.Nan;
plot LowerOuterBand   = if !IsNaN(price) then CMA - OuterBand else Double.Nan;
plot UpperInnerBand   = if !IsNaN(price) then CMA + InnerBand else Double.Nan;
plot LowerInnerBand   = if !IsNaN(price) then CMA - InnerBand else Double.Nan;

UpperExtremeBand.SetDefaultColor(GetColor(4));
UpperExtremeBand.SetLineWeight(2);
LowerExtremeBand.SetDefaultColor(GetColor(4));
LowerExtremeBand.SetLineWeight(2);
UpperExtremeBand.hide();
LowerExtremeBand.hide();

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

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
AddCloud(UpperOuterBand, UpperInnerBand, color.red);
AddCloud(LowerInnerBand, LowerOuterBand, color.green);

#Rev 2:
#def FlowValue = if close > close[1] then high else if close < close[1] then low else (high + low)/2;
def FlowValue =
    if high >= high[1] and low <= low[1]
    then
        if close >= close[1] #or high >= high[2]
        then high
        else low
    else
        if high > high[1]
        then high
        else
            if low < low[1]
            then low
            else
                if close > close[1]
                then high
                else
                    if close < close[1]
                    then low
                    else (high + low) / 2;

plot FlowPrice = if showFlowPrice then Average(FlowValue, smooth) else double.nan;
FlowPrice.SetDefaultColor(GetColor(9));
FlowPrice.SetLineWeight(2);

hidePricePlot(!showPriceBar);

#
# --- script end ----
#
 
@sniktau if you ever come back to the site I'd like to chat. I've used your code as the core of an algorithm I've mad and was able to work with the issue of it calculating for only one length. I have some more ideas but I don't have the math mind to implement them, so I came back to this post hoping I could talk.
 
@sniktau if you ever come back to the site I'd like to chat. I've used your code as the core of an algorithm I've mad and was able to work with the issue of it calculating for only one length. I have some more ideas but I don't have the math mind to implement them, so I came back to this post hoping I could talk.
@sniktau you write so elegantly it was very nice to meet you. I won't spam your post with artwork but you open excellent thoughts of what is within an order or what is separated into isolated chaotic events...
My human eyes are limited in understanding order or chaos, but I may try for an understanding with enthalpy, entropy, dynamics etc...

Thank you for sharing.
 
Hahah! I stopped trading for a long bit to focus on work. Sorry for going dark, but I'm not dead (yet).

I've been interested in just implementing some of the ideas discussed in Mandelbrot's book. Hurst Exponent tells you the kind of memory that might be at work, but like all TA, I think choice of scale is critical and I'm not sure how to tune it. If tuned right, Hurst exponent could tell you the type of feedback that's going on (positive or negative). It's been a while since I've read it.... and I've also bought a few other books that might help me more dangerous to my own portfolio.

I have been trying to make sense of the Hurst exponent, but I think it needs to be paired with a notion of "trading time". I've been using thinkorswim's candle mode that stretches the candles when volume is big and compresses them when volume is small (equivolume), where volume is an (inverted) proxy for time compression. I wonder if this is backwards for the purposes of Hurst, but I would like to feed that "trading time" to the Hurst calculation.

I'm interested how Yung Trader Montana has been incpororating the result since I've last been active, and if there's any better ways to get a hint when there's a hustle on (fear or greed) in the market apart from Volume, and if I can make my own candle style where large volume/volatility/etc. squeezes time and boring periods are stretched, or at least favor exponents calculated at different scales as appropriate.

TLDR: Anyway, thermo+equivolume is close to what I wanted and I wanted to trade with it on my own for a while, and also work. Sorry for being quiet!

Here's my messy setup right now:
http://tos.mx/lW1aewK
 
I agree that Volume can be a natural accompaniment to Hurst.

In thermodynamics you take an energy balance or entropy balance 0 = 0 and so I would propose taking a disorder balance across competing events rather than favoring Hurst=1.

We should have some phone conference later... I offered @YungTraderFromMontana an NDA after he requested some very minor coding requests but he skipped town lol... I think he will turn up later as well.
https://usethinkscript.com/threads/yungtraders-relative-volume.5243/#post-50262
 
I agree that Volume can be a natural accompaniment to Hurst.

In thermodynamics you take an energy balance or entropy balance 0 = 0 and so I would propose taking a disorder balance across competing events rather than favoring Hurst=1.

We should have some phone conference later... I offered @YungTraderFromMontana an NDA after he requested some very minor coding requests but he skipped town lol... I think he will turn up later as well.
https://usethinkscript.com/threads/yungtraders-relative-volume.5243/#post-50262
I'm not sure I could give you much to work with, as I'm still a budding thinkscripter, and often frustrated by the limitations of my ignorance and the quirks of the tooling. I have some forum reading to catch up on still, I hope you've had a good month :)
 
I'm not sure I could give you much to work with
You have no obligation to spend hours as my librarian. It's nice to find others to discuss these sort of goals

I was happy to make the last breakout detectors for @YungTraderFromMontana. Penny stock breakouts are mostly useless now but he will probably be able use those when the FED settles it's 10 year Treasury Debts (TNX) and the next Bull market begins.
He is either busy or intent on keeping those to himself 🤫 but wherever he is I hope he is well.


Currently I wish to focus directly on Order Flow not when a security passes AllTimeHighs because I am not as knowledgeable as Yung on breakout behaviors...

I imagine almost anything will increase in value if the FED jumps in to manage their debts.
 
I found a code for hurts channel

Code:
# Hurst_Channels
#
# www.trendxplorer.info
# [email protected]
#
# Build: July 25, 2012
# Rev 1: July 27, 2012: ExtrapolatedMA based on Kirills code
# Rev 2: July 29, 2012: FlowPrice value for better extremes
# Rev 3: Sept  9, 2012: Coloring for ExtrapolatedCMA added
#

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

declare upper;

input price = hl2;
input length = 10;
input InnerValue = 1.6;
input OuterValue = 2.6;
input ExtremeValue = 4.2;
input showFlowPrice = NO;
input showPriceBar = YES;
input smooth = 1;

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]);

plot CenteredMA = if !IsNaN(dPrice) then CMA else Double.NaN;
CenteredMA.SetDefaultColor(GetColor(1));
CenteredMA.SetLineWeight(2);

plot ExtrapolatedMA = if !IsNaN(price) and IsNaN(dprice[-1]) then CMA else
Double.NaN;
ExtrapolatedMA.SetDefaultColor(GetColor(0));
ExtrapolatedMA.SetLineWeight(2);
ExtrapolatedMA.SetStyle(Curve.SHORT_DASH);
ExtrapolatedMA.DefineColor("Up", Color.Magenta);
ExtrapolatedMA.DefineColor("Down", Color.Yellow);
ExtrapolatedMA.AssignValueColor(if ExtrapolatedMA >= ExtrapolatedMA[1] then ExtrapolatedMA.color("Up") else ExtrapolatedMA.color("Down"));

def ExtremeBand = CMA * ExtremeValue / 100;;
def OuterBand   = CMA * OuterValue / 100;
def InnerBand   = CMA * InnerValue / 100;

plot UpperExtremeBand = if !IsNaN(price) then CMA + ExtremeBand else Double.Nan;
plot LowerExtremeBand = if !IsNaN(price) then CMA - ExtremeBand else Double.Nan;
plot UpperOuterBand   = if !IsNaN(price) then CMA + OuterBand else Double.Nan;
plot LowerOuterBand   = if !IsNaN(price) then CMA - OuterBand else Double.Nan;
plot UpperInnerBand   = if !IsNaN(price) then CMA + InnerBand else Double.Nan;
plot LowerInnerBand   = if !IsNaN(price) then CMA - InnerBand else Double.Nan;

UpperExtremeBand.SetDefaultColor(GetColor(4));
UpperExtremeBand.SetLineWeight(2);
LowerExtremeBand.SetDefaultColor(GetColor(4));
LowerExtremeBand.SetLineWeight(2);
UpperExtremeBand.hide();
LowerExtremeBand.hide();

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

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
AddCloud(UpperOuterBand, UpperInnerBand, color.red);
AddCloud(LowerInnerBand, LowerOuterBand, color.green);

#Rev 2:
#def FlowValue = if close > close[1] then high else if close < close[1] then low else (high + low)/2;
def FlowValue =
    if high >= high[1] and low <= low[1]
    then
        if close >= close[1] #or high >= high[2]
        then high
        else low
    else
        if high > high[1]
        then high
        else
            if low < low[1]
            then low
            else
                if close > close[1]
                then high
                else
                    if close < close[1]
                    then low
                    else (high + low) / 2;

plot FlowPrice = if showFlowPrice then Average(FlowValue, smooth) else double.nan;
FlowPrice.SetDefaultColor(GetColor(9));
FlowPrice.SetLineWeight(2);

hidePricePlot(!showPriceBar);

#
# --- script end ----
#
GERMANB1990. I really like the plot except the repainting. Looks like it would work great for long-term investing. I've been observing its behavior over the last few crashes. I would really like to have the CenteredMA plot all the way to last data point and ExtrapolatedMA to extend to user specified number of periods. Is that possible? That kind of coding is beyond my capability. Can someone help and modify it it is possible?
 
GERMANB1990. I really like the plot except the repainting. Looks like it would work great for long-term investing. I've been observing its behavior over the last few crashes. I would really like to have the CenteredMA plot all the way to last data point and ExtrapolatedMA to extend to user specified number of periods. Is that possible? That kind of coding is beyond my capability. Can someone help and modify it it is possible?
It looks like centeredMA is just a SMA with displacement = half the selected length. If that's the case, it would have to repaint the second half of the displacement length which has to be extrapolated to reach last data point. Is that correct? .
 
It looks like centeredMA is just a SMA with displacement = half the selected length. If that's the case, it would have to repaint the second half of the displacement length which has to be extrapolated to reach last data point. Is that correct? .
im not sure what youre asking? can you simplify?
 
im not sure what youre asking? can you simplify?
Is it a simple moving average with displaced back by about half the length? IF yes, repainting the extrapolatedMA is required as new data comes in. I'm looking for a dx/dy^a type regression equation with a best fit for the value of a.
 

Not the exact question you're looking for?

Start a new thread and receive assistance from our community.

87k+ Posts
492 Online
Create Post

The Market Trading Game Changer

Join 2,500+ subscribers inside the useThinkScript VIP Membership Club
  • Exclusive indicators
  • Proven strategies & setups
  • Private Discord community
  • ‘Buy The Dip’ signal alerts
  • Exclusive members-only content
  • Add-ons and resources
  • 1 full year of unlimited support

Frequently Asked Questions

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?
VIP members get exclusive access to these proven and tested premium indicators: Buy the Dip, Advanced Market Moves 2.0, Take Profit, and Volatility Trading Range. In addition, VIP members get access to over 50 VIP-only custom indicators, add-ons, and strategies, private VIP-only forums, private Discord channel to discuss trades and strategies in real-time, customer support, trade alerts, and much more. Learn all about VIP membership here.
How can I access the premium indicators?
To access the premium indicators, which are plug and play ready, sign up for VIP membership here.
Back
Top