Kyle Algo v1 For ThinkOrSwim

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

Hello,

I'm new to the forum and just starting with TOS script. Today, looking for help to convert the "KyleAlgo" indicator in TradingView. Here is the original open source:

https://www.tradingview.com/script/nXCvvrvj-kyle-algo-v1/

Thank you.
check the below

CSS:
#// by kyle algo v1
#// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
#indicator("kyle algo v1", overlay=true, precision=0, explicit_plot_zorder=true, max_labels_count=500)
# Converted by Sam4Cok@Samer800    - 12/2023
#// Get user input
input colorBars = no;
input matype = {"SMA", default "EMA", "DEMA", "TEMA", "HMA", "RMA", "WMA", "VWMA", "LSMA"};
input steps = 3;
input sensitivity = 2.8;#, "??Sensitivity (0.5 - 10)", 0.5, 10, step=0.1)
input emaEnergy   = yes;#(true, "EMA Energy")
input keltner_length = 10;#, "Keltner Channel Length")
input atrPeriod = 10;#, "ATR Length")
input factor = 3.5;#, "Factor", step = 0.01)
input KaufmanFast = 0.666;#, "Kaufman Fast", group = "MA Settings")
input KaufmanSlow = 0.0645;#, "Kaufman Slow", group = "MA Settings")
input almaOffset = 0.85;#, "ALMA Offset", group = "MA Settings")
input almaSigma = 6;#, "ALMA Sigma", group = "MA Settings")

def na = Double.NaN;
def kamaf = KaufmanFast;
def kamas = KaufmanSlow;
def Offset = almaOffset;
def sigma = almaSigma;
DefineGlobalColor("up", CreateColor(25, 118, 248));
DefineGlobalColor("dn", CreateColor(116, 13, 111));
DefineGlobalColor("green", CreateColor(102, 255, 0));
DefineGlobalColor("red", Color.RED);
#// Modified Supertrend function using Keltner Channel
script supertrend {
    input _src = close;
    input factor = 3.5;
    input atrLen = 10;
    input kel_length = 10;
    def lowerBand;
    def upperBand;
    def ma = Average(_src, kel_length);
    def rangeK = high - low;
    def upperKeltner = ma + rangeK;
    def lowerKeltner = ma - rangeK;
    def rangec = upperKeltner - lowerKeltner;
    def upper = _src + factor * rangec;
    def lower = _src - factor * rangec;
    def prevLowerBand = if lowerBand[1] then lowerBand[1] else lower;
    def prevUpperBand = if upperBand[1] then upperBand[1] else upper;
    lowerBand = if lower > prevLowerBand or close[1] < prevLowerBand then lower else prevLowerBand;
    upperBand = if upper < prevUpperBand or close[1] > prevUpperBand then upper else prevUpperBand;
    def direction;
    def superTrend;# = na
    def prevSuperTrend = superTrend[1];
    if !rangec[1] {
        direction = 1;
    } else if prevSuperTrend == prevUpperBand {
        direction = if close > upperBand then -1 else 1;
    } else {
        direction = if close < lowerBand then 1 else -1;
    }
    superTrend = if direction == -1 then lowerBand else upperBand;
    plot ST = superTrend;
    plot trend = direction;
}

#vwma(source, length)
script VWMA {
    input src = close;
    input len = 14;
    input vol = volume;
    def nom = Average(src * vol, len);
    def den = Average(vol, len);
    def VWMA = nom / den;
    plot result = VWMA;
}
#f_ma(src, len, type, kamaf, kamas, offset, sigma) =>
script f_ma {
    input src = close;
    input len = 14;
    input type = "EMA";
    input kamaf = 0.666;
    input kamas = 0.0645;
    input offset = 0.85;
    input sigma = 6;
    def x =
        if type == "SMA" then Average(src, len) else
        if type == "EMA" then ExpAverage(src, len) else
        if type == "HMA" then HullMovingAvg(src, len) else
        if type == "RMA" then WildersAverage(src, len) else
        if type == "WMA" then WMA(src, len) else
        if type == "VWMA" then vwma(src, len) else
        if type == "DEMA" then DEMA(src, len) else
        if type == "TEMA" then TEMA(src, len) else
        if type == "LSMA" then Inertia(src, len) else ExpAverage(src, len);
    def f_ma = x;
    plot out = f_ma;
}
#// Get Components

def len1 = steps * (steps + 0);
def len2 = steps * (steps + 1);
def len3 = steps * (steps + 2);
def len4 = steps * (steps + 3);
def len5 = steps * (steps + 4);
def len6 = steps * (steps + 5);
def len7 = steps * (steps + 6);
def len8 = steps * (steps + 7);
def len9 = steps * (steps + 8);
def len10 = steps * (steps + 9);
def len11 = steps * (steps + 10);
def len12 = steps * (steps + 11);
def len13 = steps * (steps + 12);
def len14 = steps * (steps + 13);
def len15 = steps * (steps + 14);

def movAvgSrc = high;
def ema1 = f_ma(movAvgSrc, len1, matype, kamaf, kamas, offset, sigma);
def ema2 = f_ma(movAvgSrc, len2, matype, kamaf, kamas, offset, sigma);
def ema3 = f_ma(movAvgSrc, len3, matype, kamaf, kamas, offset, sigma);
def ema4 = f_ma(movAvgSrc, len4, matype, kamaf, kamas, offset, sigma);
def ema5 = f_ma(movAvgSrc, len5, matype, kamaf, kamas, offset, sigma);
def ema6 = f_ma(movAvgSrc, len6, matype, kamaf, kamas, offset, sigma);
def ema7 = f_ma(movAvgSrc, len7, matype, kamaf, kamas, offset, sigma);
def ema8 = f_ma(movAvgSrc, len8, matype, kamaf, kamas, offset, sigma);
def ema9 = f_ma(movAvgSrc, len9, matype, kamaf, kamas, offset, sigma);
def ema10 = f_ma(movAvgSrc, len10, matype, kamaf, kamas, offset, sigma);
def ema11 = f_ma(movAvgSrc, len11, matype, kamaf, kamas, offset, sigma);
def ema12 = f_ma(movAvgSrc, len12, matype, kamaf, kamas, offset, sigma);
def ema13 = f_ma(movAvgSrc, len13, matype, kamaf, kamas, offset, sigma);
def ema14 = f_ma(movAvgSrc, len14, matype, kamaf, kamas, offset, sigma);
def ema15 = f_ma(movAvgSrc, len15, matype, kamaf, kamas, offset, sigma);

#// Plots
plot mov1 = if emaEnergy then ema1 else na;
plot mov2 = if emaEnergy then ema2 else na;
plot mov3 = if emaEnergy then ema3 else na;
plot mov4 = if emaEnergy then ema4 else na;
plot mov5 = if emaEnergy then ema5 else na;
plot mov6 = if emaEnergy then ema6 else na;
plot mov7 = if emaEnergy then ema7 else na;
plot mov8 = if emaEnergy then ema8 else na;
plot mov9 = if emaEnergy then ema9 else na;
plot mov10 = if emaEnergy then ema10 else na;
plot mov11 = if emaEnergy then ema11 else na;
plot mov12 = if emaEnergy then ema12 else na;
plot mov13 = if emaEnergy then ema13 else na;
plot mov14 = if emaEnergy then ema14 else na;
plot mov15 = if emaEnergy then ema15 else na;
mov1.AssignValueColor(if close >= ema1 then GlobalColor("up") else GlobalColor("dn"));
mov2.AssignValueColor(if close >= ema2 then GlobalColor("up") else GlobalColor("dn"));
mov3.AssignValueColor(if close >= ema3 then GlobalColor("up") else GlobalColor("dn"));
mov4.AssignValueColor(if close >= ema4 then GlobalColor("up") else GlobalColor("dn"));
mov5.AssignValueColor(if close >= ema5 then GlobalColor("up") else GlobalColor("dn"));
mov6.AssignValueColor(if close >= ema6 then GlobalColor("up") else GlobalColor("dn"));
mov7.AssignValueColor(if close >= ema7 then GlobalColor("up") else GlobalColor("dn"));
mov8.AssignValueColor(if close >= ema8 then GlobalColor("up") else GlobalColor("dn"));
mov9.AssignValueColor(if close >= ema9 then GlobalColor("up") else GlobalColor("dn"));
mov10.AssignValueColor(if close >= ema10 then GlobalColor("up") else GlobalColor("dn"));
mov11.AssignValueColor(if close >= ema11 then GlobalColor("up") else GlobalColor("dn"));
mov12.AssignValueColor(if close >= ema12 then GlobalColor("up") else GlobalColor("dn"));
mov13.AssignValueColor(if close >= ema13 then GlobalColor("up") else GlobalColor("dn"));
mov14.AssignValueColor(if close >= ema14 then GlobalColor("up") else GlobalColor("dn"));
mov15.AssignValueColor(if close >= ema15 then GlobalColor("up") else GlobalColor("dn"));

def supertrend = supertrend(close, sensitivity, atrPeriod, keltner_length).st;
def trend = supertrend(close, sensitivity, atrPeriod, keltner_length).trend;
def bull = (close crosses above supertrend);
def bear = (close crosses below supertrend);

plot stUp = if trend > 0 then supertrend else na;
plot stDn = if trend < 0 then supertrend else na;

stUp.SetDefaultColor(GlobalColor("red"));
stDn.SetDefaultColor(GlobalColor("green"));

AddChartBubble(bull, supertrend, "BUY", Color.GREEN, no);
AddChartBubble(bear, supertrend, "SELL", Color.RED);

def supertrends = supertrend(hl2, factor, atrPeriod, atrPeriod);

#// Trend Catcher Indicator (Example)
def ema100 = f_ma(close, 20, matype, kamaf, kamas, offset, sigma);#ta.ema(close, 10)
def ema200 = f_ma(close, 50, matype, kamaf, kamas, offset, sigma);#ta.ema(close, 20)
def mov12Up = (ema100 Crosses Above ema200);
def mov12Dn = (ema100 Crosses Below ema200);
def trendCatcher = if mov12Up then 1 else if mov12Dn then -1 else 0;

plot trendStartUp = if trendCatcher>0 then low else na;
plot trendStartDn = if trendCatcher<0 then high else na;

trendStartUp.SetPaintingStrategy(PaintingStrategy.BOOLEAN_WEDGE_DOWN);
trendStartDn.SetPaintingStrategy(PaintingStrategy.BOOLEAN_WEDGE_UP);
trendStartUp.SetDefaultColor(Color.CYAN);
trendStartDn.SetDefaultColor(Color.MAGENTA);

AssignPriceColor(if !colorBars then Color.CURRENT else
                 if close > supertrends then GlobalColor("green") else
                 if close < supertrends then GlobalColor("red") else Color.GRAY);

#-- END of CODE
 
check the below

CSS:
#// by kyle algo v1
#// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
#indicator("kyle algo v1", overlay=true, precision=0, explicit_plot_zorder=true, max_labels_count=500)
# Converted by Sam4Cok@Samer800    - 12/2023
#// Get user input
input colorBars = no;
input matype = {"SMA", default "EMA", "DEMA", "TEMA", "HMA", "RMA", "WMA", "VWMA", "LSMA"};
input steps = 3;
input sensitivity = 2.8;#, "??Sensitivity (0.5 - 10)", 0.5, 10, step=0.1)
input emaEnergy   = yes;#(true, "EMA Energy")
input keltner_length = 10;#, "Keltner Channel Length")
input atrPeriod = 10;#, "ATR Length")
input factor = 3.5;#, "Factor", step = 0.01)
input KaufmanFast = 0.666;#, "Kaufman Fast", group = "MA Settings")
input KaufmanSlow = 0.0645;#, "Kaufman Slow", group = "MA Settings")
input almaOffset = 0.85;#, "ALMA Offset", group = "MA Settings")
input almaSigma = 6;#, "ALMA Sigma", group = "MA Settings")

def na = Double.NaN;
def kamaf = KaufmanFast;
def kamas = KaufmanSlow;
def Offset = almaOffset;
def sigma = almaSigma;
DefineGlobalColor("up", CreateColor(25, 118, 248));
DefineGlobalColor("dn", CreateColor(116, 13, 111));
DefineGlobalColor("green", CreateColor(102, 255, 0));
DefineGlobalColor("red", Color.RED);
#// Modified Supertrend function using Keltner Channel
script supertrend {
    input _src = close;
    input factor = 3.5;
    input atrLen = 10;
    input kel_length = 10;
    def lowerBand;
    def upperBand;
    def ma = Average(_src, kel_length);
    def rangeK = high - low;
    def upperKeltner = ma + rangeK;
    def lowerKeltner = ma - rangeK;
    def rangec = upperKeltner - lowerKeltner;
    def upper = _src + factor * rangec;
    def lower = _src - factor * rangec;
    def prevLowerBand = if lowerBand[1] then lowerBand[1] else lower;
    def prevUpperBand = if upperBand[1] then upperBand[1] else upper;
    lowerBand = if lower > prevLowerBand or close[1] < prevLowerBand then lower else prevLowerBand;
    upperBand = if upper < prevUpperBand or close[1] > prevUpperBand then upper else prevUpperBand;
    def direction;
    def superTrend;# = na
    def prevSuperTrend = superTrend[1];
    if !rangec[1] {
        direction = 1;
    } else if prevSuperTrend == prevUpperBand {
        direction = if close > upperBand then -1 else 1;
    } else {
        direction = if close < lowerBand then 1 else -1;
    }
    superTrend = if direction == -1 then lowerBand else upperBand;
    plot ST = superTrend;
    plot trend = direction;
}

#vwma(source, length)
script VWMA {
    input src = close;
    input len = 14;
    input vol = volume;
    def nom = Average(src * vol, len);
    def den = Average(vol, len);
    def VWMA = nom / den;
    plot result = VWMA;
}
#f_ma(src, len, type, kamaf, kamas, offset, sigma) =>
script f_ma {
    input src = close;
    input len = 14;
    input type = "EMA";
    input kamaf = 0.666;
    input kamas = 0.0645;
    input offset = 0.85;
    input sigma = 6;
    def x =
        if type == "SMA" then Average(src, len) else
        if type == "EMA" then ExpAverage(src, len) else
        if type == "HMA" then HullMovingAvg(src, len) else
        if type == "RMA" then WildersAverage(src, len) else
        if type == "WMA" then WMA(src, len) else
        if type == "VWMA" then vwma(src, len) else
        if type == "DEMA" then DEMA(src, len) else
        if type == "TEMA" then TEMA(src, len) else
        if type == "LSMA" then Inertia(src, len) else ExpAverage(src, len);
    def f_ma = x;
    plot out = f_ma;
}
#// Get Components

def len1 = steps * (steps + 0);
def len2 = steps * (steps + 1);
def len3 = steps * (steps + 2);
def len4 = steps * (steps + 3);
def len5 = steps * (steps + 4);
def len6 = steps * (steps + 5);
def len7 = steps * (steps + 6);
def len8 = steps * (steps + 7);
def len9 = steps * (steps + 8);
def len10 = steps * (steps + 9);
def len11 = steps * (steps + 10);
def len12 = steps * (steps + 11);
def len13 = steps * (steps + 12);
def len14 = steps * (steps + 13);
def len15 = steps * (steps + 14);

def movAvgSrc = high;
def ema1 = f_ma(movAvgSrc, len1, matype, kamaf, kamas, offset, sigma);
def ema2 = f_ma(movAvgSrc, len2, matype, kamaf, kamas, offset, sigma);
def ema3 = f_ma(movAvgSrc, len3, matype, kamaf, kamas, offset, sigma);
def ema4 = f_ma(movAvgSrc, len4, matype, kamaf, kamas, offset, sigma);
def ema5 = f_ma(movAvgSrc, len5, matype, kamaf, kamas, offset, sigma);
def ema6 = f_ma(movAvgSrc, len6, matype, kamaf, kamas, offset, sigma);
def ema7 = f_ma(movAvgSrc, len7, matype, kamaf, kamas, offset, sigma);
def ema8 = f_ma(movAvgSrc, len8, matype, kamaf, kamas, offset, sigma);
def ema9 = f_ma(movAvgSrc, len9, matype, kamaf, kamas, offset, sigma);
def ema10 = f_ma(movAvgSrc, len10, matype, kamaf, kamas, offset, sigma);
def ema11 = f_ma(movAvgSrc, len11, matype, kamaf, kamas, offset, sigma);
def ema12 = f_ma(movAvgSrc, len12, matype, kamaf, kamas, offset, sigma);
def ema13 = f_ma(movAvgSrc, len13, matype, kamaf, kamas, offset, sigma);
def ema14 = f_ma(movAvgSrc, len14, matype, kamaf, kamas, offset, sigma);
def ema15 = f_ma(movAvgSrc, len15, matype, kamaf, kamas, offset, sigma);

#// Plots
plot mov1 = if emaEnergy then ema1 else na;
plot mov2 = if emaEnergy then ema2 else na;
plot mov3 = if emaEnergy then ema3 else na;
plot mov4 = if emaEnergy then ema4 else na;
plot mov5 = if emaEnergy then ema5 else na;
plot mov6 = if emaEnergy then ema6 else na;
plot mov7 = if emaEnergy then ema7 else na;
plot mov8 = if emaEnergy then ema8 else na;
plot mov9 = if emaEnergy then ema9 else na;
plot mov10 = if emaEnergy then ema10 else na;
plot mov11 = if emaEnergy then ema11 else na;
plot mov12 = if emaEnergy then ema12 else na;
plot mov13 = if emaEnergy then ema13 else na;
plot mov14 = if emaEnergy then ema14 else na;
plot mov15 = if emaEnergy then ema15 else na;
mov1.AssignValueColor(if close >= ema1 then GlobalColor("up") else GlobalColor("dn"));
mov2.AssignValueColor(if close >= ema2 then GlobalColor("up") else GlobalColor("dn"));
mov3.AssignValueColor(if close >= ema3 then GlobalColor("up") else GlobalColor("dn"));
mov4.AssignValueColor(if close >= ema4 then GlobalColor("up") else GlobalColor("dn"));
mov5.AssignValueColor(if close >= ema5 then GlobalColor("up") else GlobalColor("dn"));
mov6.AssignValueColor(if close >= ema6 then GlobalColor("up") else GlobalColor("dn"));
mov7.AssignValueColor(if close >= ema7 then GlobalColor("up") else GlobalColor("dn"));
mov8.AssignValueColor(if close >= ema8 then GlobalColor("up") else GlobalColor("dn"));
mov9.AssignValueColor(if close >= ema9 then GlobalColor("up") else GlobalColor("dn"));
mov10.AssignValueColor(if close >= ema10 then GlobalColor("up") else GlobalColor("dn"));
mov11.AssignValueColor(if close >= ema11 then GlobalColor("up") else GlobalColor("dn"));
mov12.AssignValueColor(if close >= ema12 then GlobalColor("up") else GlobalColor("dn"));
mov13.AssignValueColor(if close >= ema13 then GlobalColor("up") else GlobalColor("dn"));
mov14.AssignValueColor(if close >= ema14 then GlobalColor("up") else GlobalColor("dn"));
mov15.AssignValueColor(if close >= ema15 then GlobalColor("up") else GlobalColor("dn"));

def supertrend = supertrend(close, sensitivity, atrPeriod, keltner_length).st;
def trend = supertrend(close, sensitivity, atrPeriod, keltner_length).trend;
def bull = (close crosses above supertrend);
def bear = (close crosses below supertrend);

plot stUp = if trend > 0 then supertrend else na;
plot stDn = if trend < 0 then supertrend else na;

stUp.SetDefaultColor(GlobalColor("red"));
stDn.SetDefaultColor(GlobalColor("green"));

AddChartBubble(bull, supertrend, "BUY", Color.GREEN, no);
AddChartBubble(bear, supertrend, "SELL", Color.RED);

def supertrends = supertrend(hl2, factor, atrPeriod, atrPeriod);

#// Trend Catcher Indicator (Example)
def ema100 = f_ma(close, 20, matype, kamaf, kamas, offset, sigma);#ta.ema(close, 10)
def ema200 = f_ma(close, 50, matype, kamaf, kamas, offset, sigma);#ta.ema(close, 20)
def mov12Up = (ema100 Crosses Above ema200);
def mov12Dn = (ema100 Crosses Below ema200);
def trendCatcher = if mov12Up then 1 else if mov12Dn then -1 else 0;

plot trendStartUp = if trendCatcher>0 then low else na;
plot trendStartDn = if trendCatcher<0 then high else na;

trendStartUp.SetPaintingStrategy(PaintingStrategy.BOOLEAN_WEDGE_DOWN);
trendStartDn.SetPaintingStrategy(PaintingStrategy.BOOLEAN_WEDGE_UP);
trendStartUp.SetDefaultColor(Color.CYAN);
trendStartDn.SetDefaultColor(Color.MAGENTA);

AssignPriceColor(if !colorBars then Color.CURRENT else
                 if close > supertrends then GlobalColor("green") else
                 if close < supertrends then GlobalColor("red") else Color.GRAY);

#-- END of CODE
Thank you so much!
 
check the below

CSS:
#// by kyle algo v1
#// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
#indicator("kyle algo v1", overlay=true, precision=0, explicit_plot_zorder=true, max_labels_count=500)
# Converted by Sam4Cok@Samer800    - 12/2023
#// Get user input
input colorBars = no;
input matype = {"SMA", default "EMA", "DEMA", "TEMA", "HMA", "RMA", "WMA", "VWMA", "LSMA"};
input steps = 3;
input sensitivity = 2.8;#, "??Sensitivity (0.5 - 10)", 0.5, 10, step=0.1)
input emaEnergy   = yes;#(true, "EMA Energy")
input keltner_length = 10;#, "Keltner Channel Length")
input atrPeriod = 10;#, "ATR Length")
input factor = 3.5;#, "Factor", step = 0.01)
input KaufmanFast = 0.666;#, "Kaufman Fast", group = "MA Settings")
input KaufmanSlow = 0.0645;#, "Kaufman Slow", group = "MA Settings")
input almaOffset = 0.85;#, "ALMA Offset", group = "MA Settings")
input almaSigma = 6;#, "ALMA Sigma", group = "MA Settings")

def na = Double.NaN;
def kamaf = KaufmanFast;
def kamas = KaufmanSlow;
def Offset = almaOffset;
def sigma = almaSigma;
DefineGlobalColor("up", CreateColor(25, 118, 248));
DefineGlobalColor("dn", CreateColor(116, 13, 111));
DefineGlobalColor("green", CreateColor(102, 255, 0));
DefineGlobalColor("red", Color.RED);
#// Modified Supertrend function using Keltner Channel
script supertrend {
    input _src = close;
    input factor = 3.5;
    input atrLen = 10;
    input kel_length = 10;
    def lowerBand;
    def upperBand;
    def ma = Average(_src, kel_length);
    def rangeK = high - low;
    def upperKeltner = ma + rangeK;
    def lowerKeltner = ma - rangeK;
    def rangec = upperKeltner - lowerKeltner;
    def upper = _src + factor * rangec;
    def lower = _src - factor * rangec;
    def prevLowerBand = if lowerBand[1] then lowerBand[1] else lower;
    def prevUpperBand = if upperBand[1] then upperBand[1] else upper;
    lowerBand = if lower > prevLowerBand or close[1] < prevLowerBand then lower else prevLowerBand;
    upperBand = if upper < prevUpperBand or close[1] > prevUpperBand then upper else prevUpperBand;
    def direction;
    def superTrend;# = na
    def prevSuperTrend = superTrend[1];
    if !rangec[1] {
        direction = 1;
    } else if prevSuperTrend == prevUpperBand {
        direction = if close > upperBand then -1 else 1;
    } else {
        direction = if close < lowerBand then 1 else -1;
    }
    superTrend = if direction == -1 then lowerBand else upperBand;
    plot ST = superTrend;
    plot trend = direction;
}

#vwma(source, length)
script VWMA {
    input src = close;
    input len = 14;
    input vol = volume;
    def nom = Average(src * vol, len);
    def den = Average(vol, len);
    def VWMA = nom / den;
    plot result = VWMA;
}
#f_ma(src, len, type, kamaf, kamas, offset, sigma) =>
script f_ma {
    input src = close;
    input len = 14;
    input type = "EMA";
    input kamaf = 0.666;
    input kamas = 0.0645;
    input offset = 0.85;
    input sigma = 6;
    def x =
        if type == "SMA" then Average(src, len) else
        if type == "EMA" then ExpAverage(src, len) else
        if type == "HMA" then HullMovingAvg(src, len) else
        if type == "RMA" then WildersAverage(src, len) else
        if type == "WMA" then WMA(src, len) else
        if type == "VWMA" then vwma(src, len) else
        if type == "DEMA" then DEMA(src, len) else
        if type == "TEMA" then TEMA(src, len) else
        if type == "LSMA" then Inertia(src, len) else ExpAverage(src, len);
    def f_ma = x;
    plot out = f_ma;
}
#// Get Components

def len1 = steps * (steps + 0);
def len2 = steps * (steps + 1);
def len3 = steps * (steps + 2);
def len4 = steps * (steps + 3);
def len5 = steps * (steps + 4);
def len6 = steps * (steps + 5);
def len7 = steps * (steps + 6);
def len8 = steps * (steps + 7);
def len9 = steps * (steps + 8);
def len10 = steps * (steps + 9);
def len11 = steps * (steps + 10);
def len12 = steps * (steps + 11);
def len13 = steps * (steps + 12);
def len14 = steps * (steps + 13);
def len15 = steps * (steps + 14);

def movAvgSrc = high;
def ema1 = f_ma(movAvgSrc, len1, matype, kamaf, kamas, offset, sigma);
def ema2 = f_ma(movAvgSrc, len2, matype, kamaf, kamas, offset, sigma);
def ema3 = f_ma(movAvgSrc, len3, matype, kamaf, kamas, offset, sigma);
def ema4 = f_ma(movAvgSrc, len4, matype, kamaf, kamas, offset, sigma);
def ema5 = f_ma(movAvgSrc, len5, matype, kamaf, kamas, offset, sigma);
def ema6 = f_ma(movAvgSrc, len6, matype, kamaf, kamas, offset, sigma);
def ema7 = f_ma(movAvgSrc, len7, matype, kamaf, kamas, offset, sigma);
def ema8 = f_ma(movAvgSrc, len8, matype, kamaf, kamas, offset, sigma);
def ema9 = f_ma(movAvgSrc, len9, matype, kamaf, kamas, offset, sigma);
def ema10 = f_ma(movAvgSrc, len10, matype, kamaf, kamas, offset, sigma);
def ema11 = f_ma(movAvgSrc, len11, matype, kamaf, kamas, offset, sigma);
def ema12 = f_ma(movAvgSrc, len12, matype, kamaf, kamas, offset, sigma);
def ema13 = f_ma(movAvgSrc, len13, matype, kamaf, kamas, offset, sigma);
def ema14 = f_ma(movAvgSrc, len14, matype, kamaf, kamas, offset, sigma);
def ema15 = f_ma(movAvgSrc, len15, matype, kamaf, kamas, offset, sigma);

#// Plots
plot mov1 = if emaEnergy then ema1 else na;
plot mov2 = if emaEnergy then ema2 else na;
plot mov3 = if emaEnergy then ema3 else na;
plot mov4 = if emaEnergy then ema4 else na;
plot mov5 = if emaEnergy then ema5 else na;
plot mov6 = if emaEnergy then ema6 else na;
plot mov7 = if emaEnergy then ema7 else na;
plot mov8 = if emaEnergy then ema8 else na;
plot mov9 = if emaEnergy then ema9 else na;
plot mov10 = if emaEnergy then ema10 else na;
plot mov11 = if emaEnergy then ema11 else na;
plot mov12 = if emaEnergy then ema12 else na;
plot mov13 = if emaEnergy then ema13 else na;
plot mov14 = if emaEnergy then ema14 else na;
plot mov15 = if emaEnergy then ema15 else na;
mov1.AssignValueColor(if close >= ema1 then GlobalColor("up") else GlobalColor("dn"));
mov2.AssignValueColor(if close >= ema2 then GlobalColor("up") else GlobalColor("dn"));
mov3.AssignValueColor(if close >= ema3 then GlobalColor("up") else GlobalColor("dn"));
mov4.AssignValueColor(if close >= ema4 then GlobalColor("up") else GlobalColor("dn"));
mov5.AssignValueColor(if close >= ema5 then GlobalColor("up") else GlobalColor("dn"));
mov6.AssignValueColor(if close >= ema6 then GlobalColor("up") else GlobalColor("dn"));
mov7.AssignValueColor(if close >= ema7 then GlobalColor("up") else GlobalColor("dn"));
mov8.AssignValueColor(if close >= ema8 then GlobalColor("up") else GlobalColor("dn"));
mov9.AssignValueColor(if close >= ema9 then GlobalColor("up") else GlobalColor("dn"));
mov10.AssignValueColor(if close >= ema10 then GlobalColor("up") else GlobalColor("dn"));
mov11.AssignValueColor(if close >= ema11 then GlobalColor("up") else GlobalColor("dn"));
mov12.AssignValueColor(if close >= ema12 then GlobalColor("up") else GlobalColor("dn"));
mov13.AssignValueColor(if close >= ema13 then GlobalColor("up") else GlobalColor("dn"));
mov14.AssignValueColor(if close >= ema14 then GlobalColor("up") else GlobalColor("dn"));
mov15.AssignValueColor(if close >= ema15 then GlobalColor("up") else GlobalColor("dn"));

def supertrend = supertrend(close, sensitivity, atrPeriod, keltner_length).st;
def trend = supertrend(close, sensitivity, atrPeriod, keltner_length).trend;
def bull = (close crosses above supertrend);
def bear = (close crosses below supertrend);

plot stUp = if trend > 0 then supertrend else na;
plot stDn = if trend < 0 then supertrend else na;

stUp.SetDefaultColor(GlobalColor("red"));
stDn.SetDefaultColor(GlobalColor("green"));

AddChartBubble(bull, supertrend, "BUY", Color.GREEN, no);
AddChartBubble(bear, supertrend, "SELL", Color.RED);

def supertrends = supertrend(hl2, factor, atrPeriod, atrPeriod);

#// Trend Catcher Indicator (Example)
def ema100 = f_ma(close, 20, matype, kamaf, kamas, offset, sigma);#ta.ema(close, 10)
def ema200 = f_ma(close, 50, matype, kamaf, kamas, offset, sigma);#ta.ema(close, 20)
def mov12Up = (ema100 Crosses Above ema200);
def mov12Dn = (ema100 Crosses Below ema200);
def trendCatcher = if mov12Up then 1 else if mov12Dn then -1 else 0;

plot trendStartUp = if trendCatcher>0 then low else na;
plot trendStartDn = if trendCatcher<0 then high else na;

trendStartUp.SetPaintingStrategy(PaintingStrategy.BOOLEAN_WEDGE_DOWN);
trendStartDn.SetPaintingStrategy(PaintingStrategy.BOOLEAN_WEDGE_UP);
trendStartUp.SetDefaultColor(Color.CYAN);
trendStartDn.SetDefaultColor(Color.MAGENTA);

AssignPriceColor(if !colorBars then Color.CURRENT else
                 if close > supertrends then GlobalColor("green") else
                 if close < supertrends then GlobalColor("red") else Color.GRAY);

#-- END of CODE
Hi Samer,
Can you please share the scan for the above code . Thanks in advance.
 
Does this work for ES? Doesn't seem to, but would be nice. Thanks!!
eskyleCHARTS.png


it works fine.
 

Similar threads

Not the exact question you're looking for?

Start a new thread and receive assistance from our community.

87k+ Posts
322 Online
Create Post

Similar threads

Similar threads

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