Can someone help me to convert this TV great indicator into TOS? TradingView Humble Bars Possible Correction Zones

Platform
  1. Thinkorswim
  2. NinjaTrader
https://www.tradingview.com/script/3jSQv8k5-Humble-Bars-Possible-Correction-Zones/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © ugurvu

//@version=4
study("Humble Bars Possible Correction Zones", overlay=true)
period = input(title="Period", type=input.integer, defval=17, maxval=60, minval=2)
modhl = input(title="Mode With Wicks", type=input.bool, defval=true)
use_rma = input(title="Use RMA", type=input.bool, defval=true)
barrange=abs(open-close)
lin_reg = input(title="Lin Reg", type=input.bool, defval=true)
signal_length = input(title="linreg Smoothing", type=input.integer, minval = 1, defval = 10)
smaperiod = input(title="SMA Period", type=input.integer, defval=10, minval=2)
smooth = input(1, minval=1, title="Smooth")


//////////////////////////////////////////////////////////////////////

len = input(10, minval=1, title="Length OL")
smooth_ol = input(10, minval=1, title="Smooth OL")
matype = input(title="MA Type", defval="SMA", options=["RMA", "SMA", "EMA", "WMA"])

//////////////////////////////////////////////////////////////////////

sma1 = 0.0
sma2 = 0.0

if matype == "RMA"
sma1 := rma(close, len)
sma2 := rma(hlc3, len)

if matype == "SMA"
sma1 := sma(close, len)
sma2 := sma(hlc3, len)

if matype == "EMA"
sma1 := ema(close, len)
sma2 := ema(hlc3, len)

if matype == "WMA"
sma1 := wma(close, len)
sma2 := wma(hlc3, len)

oneline = sma1 > sma2 ? sma1 : sma2
linecolor = color.white

if (sma1 > sma2 and oneline > oneline[smooth_ol])
linecolor := color.green

if (sma1 < sma2 and oneline < oneline[smooth_ol])
linecolor := color.red


//////////////////////////////////////////////////////////////////////

plot(oneline, color= linecolor, linewidth=3)
///////////////////

//////////////////////////////////////////////////////////////////////////////////////////////////////

if modhl==true
barrange :=high-low

isbarup=open > close
isbardown=open < close
isbardoji=open==close
bup = 0.0
bdown=0.0

if (isbarup)
bup := barrange
bdown :=0

if (isbardown)
bdown := barrange
bup:=0

if (isbardoji)
bdown := 0
bup:=0

sdown = use_rma ? rma(bdown, period) : sma(bdown, period)
sup = use_rma ? rma(bup, period) : sma(bup, period)

mavi = lin_reg ? linreg(sdown, signal_length,0) : sdown
kirmizi = lin_reg ? linreg(sup, signal_length,0) : sup
smamavi = sma(sdown, smaperiod)
smakirmizi = sma(sup, smaperiod)

macd = mavi-kirmizi
macd2 = kirmizi - mavi

// plot(mavi, title="fsdown", color=col_mavi, linewidth=1)
// plot(kirmizi, title="fsup", color=col_kirmizi, linewidth=1)

// plot(macd, title="macd", color=col_macd, linewidth=3)
// plot(macd2, title="macd2", color=col_macd2, linewidth=2)

// hline(0.0)

plotshape(crossunder(macd2, mavi), style=shape.triangleup, location= location.belowbar, size=size.small, color=color.blue)
plotshape(crossunder(macd, kirmizi), style=shape.triangledown, location= location.abovebar, size=size.small, color=color.red)

//plot(possibletop, color=color.red, linewidth=3)
//plot(possiblebottom, color=color.blue, linewidth=3)

plotchar(macd2 > mavi, char= '—', location= location.belowbar, size=size.small, color=color.blue, transp= 50)
plotchar(macd > kirmizi, char= '—', location= location.abovebar, size=size.small, color=color.red, transp= 50)
 

sam4cok

Member
find below at best effort :)

#// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
#// © ugurvu
#// https://www.tradingview.com/script/3jSQv8k5-Humble-Bars-Possible-Correction-Zones/
#//@version=4
#study("Humble Bars Possible Correction Zones", overlay=true)
# Converted by SAM4COK --- Not typical TV resutlts.

input period = 17; # maxval=60, minval=2)
input modHL = yes; # "Mode With Wicks"
input use_rma = yes;
input lin_reg = yes; # "Lin Reg"
input signal_length = 10; #"linreg Smoothing"
input smaPeriod = 10; #"SMA Period"
input smooth = 1;
###############
def barrange1 = AbsValue(open - close);
def barrange2 = (high - low);

DefineGlobalColor("Bull", CreateColor(100, 181, 246));
DefineGlobalColor("Bear", CreateColor(239, 83, 80));

#//////////////////////////////////////////////////////////////////////
input maType = {default SMA, RMA, EMA, WMA};
input lenOL = 10; # "Length OL"
input smooth_ol = 10; # "Smooth OL"


script RMA {
input src = close;
input length = 0;
def alpha = 1 / length;
def sum = if IsNaN(sum[1]) then SimpleMovingAvg(src, length) else alpha * src + (1 - alpha) * (sum[1]);
plot RMA = sum;
}

#//////////////////////////////////////////////////////////////////////

def sma1;
def sma2;

switch (matype) {
case SMA:
sma1 = SimpleMovingAvg(close, lenOL);
sma2 = SimpleMovingAvg(hlc3, lenOL);
case RMA:
sma1 = rma(close, lenOL);
sma2 = rma(hlc3, lenOL);
case EMA:
sma1 = ExpAverage(close, lenOL);
sma2 = ExpAverage(hlc3, lenOL);
case WMA:
sma1 = WMA(close, lenOL);
sma2 = WMA(hlc3, lenOL);
}

def oneline = if sma1 > sma2 then sma1 else sma2;

plot tline = oneline;
tline.AssignValueColor(if sma1 > sma2 and oneline > oneline[smooth_ol] then GlobalColor("Bull") else if sma1 < sma2 and oneline < oneline[smooth_ol] then GlobalColor("Bear") else Color.WHITE);
tline.SetLineWeight(2);
#///////////////////////////

def barrange = if modhl then barrange2 else barrange1;

def Bar = if open > close then 1 else
if open < close then -1 else
if open == close then 0 else Double.NaN;

def bup = if Bar == 1 then barrange else 0;
def bdown = if Bar == -1 then barrange else 0;


def sdown = if use_rma then rma(bdown, period) else SimpleMovingAvg(bdown, period);
def sup = if use_rma then rma(bup, period) else SimpleMovingAvg(bup, period);

def mavi = if lin_reg then Inertia(sdown, signal_length) else sdown;
def kirmizi = if lin_reg then Inertia(sup, signal_length) else sup;

def smamavi = SimpleMovingAvg(sdown, smaperiod);
def smakirmizi = SimpleMovingAvg(sup, smaperiod);

def macd = mavi - kirmizi;
def macd2 = kirmizi - mavi;

def cross1 = Crosses (macd2, mavi, CrossingDirection.BELOW);
def cross2 = Crosses (macd, kirmizi, CrossingDirection.BELOW);

def LineBelow = macd2 > mavi;
def LineAbove = macd > kirmizi;

#// hline

plot crossunder = if cross1 then low else Double.NaN;
plot crossunder1 = if cross2 then high else Double.NaN;

crossunder.SetPaintingStrategy(PaintingStrategy.ARROW_UP);
crossunder.SetLineWeight(3);
crossunder.AssignValueColor(GlobalColor("Bull"));
crossunder1.SetPaintingStrategy(PaintingStrategy.ARROW_DOWN);
crossunder1.SetLineWeight(3);
crossunder1.AssignValueColor(GlobalColor("Bear"));

plot Line = if LineBelow then low - ATR(1) else Double.NaN ;
plot Line1 = if LineAbove then high + ATR(1) else Double.NaN;

Line.SetPaintingStrategy(PaintingStrategy.POINTS);
Line.SetLineWeight(3);
Line.AssignValueColor(GlobalColor("Bull"));
Line1.SetPaintingStrategy(PaintingStrategy.POINTS);
Line1.SetLineWeight(3);
Line1.AssignValueColor(GlobalColor("Bear"));
 

barbaros

Administrator
Staff member
Looks good
UC1wEHx.png
 
Top