IDX:PTBA   BUKIT ASAM TBK
// Keterangan Gambar
// B (Hijau) - Indikator Buy dari GC MA5 & MA20
// B (Kuning) - Indikator Buy dari Bollinger Band
// Logo ✪ - Volume Spike (Buy/Sell)


//@version=4
study("Cross SMA (5,20) - BB", "", true, overlay=true)

// Tentuin SMA

SMA20 = sma(close, 20)
SMA5 = sma(close, 5)

// Setup

xUp = crossover(SMA20, SMA5)
xDw = crossover(SMA5, SMA20)

// Alert

if xUp
// Trigger the alert the first time a cross occurs during the real-time bar.
alert("SMA20 (" + tostring(close) + ") cruzou SMA5 (" + tostring(SMA20) + ").", alert.freq_once_per_bar)

if xDw
alert("SMA20 (" + tostring(close) + ") cruzou SMA5 (" + tostring(SMA20) + ").", alert.freq_once_per_bar)

// Visual
plot(SMA20, color=color.red, transp=100)
plot(SMA5, color=color.blue, transp=100)

plotshape(xUp, location=location.abovebar, style=shape.labeldown, color=color.red, size=size.small, text="S", textcolor=color.white, transp=50, offset=0)
plotshape(xDw, location=location.belowbar, style=shape.labelup, color=color.green, size=size.small, text="B", textcolor=color.white, transp=50, offset=0)

// BB
sigma = input(1.8, maxval=2.0, title="Standard Deviation")
ma_period = input(30, minval=1, title="Simple MA period")
rsi_period = input(14, minval=5, title="RSI Period")
rsi_ob = input(65, maxval=100, title="RSI Overbought threshold")

src = close
basis = sma(src, ma_period)
std_dev = sigma * stdev(src, ma_period)
upper = basis + std_dev
lower = basis - std_dev
below = src < lower
reset = low < basis
above = src > upper
buy_signal = crossunder(barssince(above), barssince(reset)) and rsi(close, rsi_period) < rsi_ob

plotshape(buy_signal, color=color.yellow, style=shape.labelup, size=size.small, location=location.belowbar, text="B", textcolor=color.white, transp=50, offset=0)
upper_plot = plot(upper, color=color.gray, color=bar_index % 2 == 0 ? color.gray : #00000000, linewidth=1, transp=20, title = "Upper Band")
lower_plot = plot(lower, color=color.gray, color=bar_index % 2 == 0 ? color.gray : #00000000, linewidth=1, transp=20, title = "Lower Band")
fill(lower_plot, upper_plot, color=color.gray, transp=95)

// Volume Spike
EMovingAvg = ema(volume,input(10))
Multiplier=(volume >= (EMovingAvg * input(1.5)))
//plotshape(Multiplier, size=size.tiny, style=shape.xcross, location=location.belowbar, color=color.fuchsia)
plotchar (Multiplier, size=size.tiny, location=location.belowbar, color=color.fuchsia, char="✪")

// 5 MA
sma1 = sma(close, 10)
sma2 = sma(close, 20)
plot(sma1, title="SMA10", color = color.yellow, linewidth = 1, transp=50)
plot(sma2, title="SMA20", color = color.orange, linewidth = 1, transp=50)
sma3 = sma(close, 50)
sma4 = sma(close, 100)
sma5 = sma(close, 200)
plot(sma3, title="SMA50", color = color.white, linewidth = 1, transp=50)
plot(sma4, title="SMA100", color = color.blue, linewidth = 1, transp=50)
plot(sma5, title="SMA200", color = color.red, linewidth = 1, transp=50)
//plot(cross(sma1, sma3) ? sma1 : na, style = plot.style_cross, color = color.red, linewidth = 4)



// Fibo
Fibs = input("Plot Fibs based on Lookback", options = , title = "Fibonacci Plot Type")

FIBS = Fibs == "Plot Fibs based on Lookback"?1:Fibs == "Plot Fibs based on Price Input"?2:na

Foption = input(defval = "1. Candles" , title = "Fibonacci Plot Lookback Type", options=)
FP = input(defval = 100 , title = "Days/Candles to Lookback")
Reverse = input(defval = false , title = "Reverse Fibonacci Levels?")
ExtraFibs = input(false, "Show 0.886 and 1.113 Fibs")


Note = input(true, "════ 𝗙𝗶𝗯𝘀 𝗯𝗮𝘀𝗲𝗱 𝗼𝗻 𝗣𝗿𝗶𝗰𝗲 𝗜𝗻𝗽𝘂𝘁 ════")
High = input(0., minval = 0, title = "High - Enter Value")
Low = input(-1., minval = -1, title = "Low - Enter Value")


Note2 = input(true, "══════ 𝗙𝗶𝗯 𝗟𝗶𝗻𝗲/𝗟𝗮𝗯𝗲𝗹 𝗦𝘁𝘆𝗹𝗲 ══════")
Bull_Color = input(#008000, type=input.color, title = "Support Fibs Color")
Bear_Color = input(#ff0000, type=input.color, title = "Resistance Fibs Color")
CurrentFib = input(false, "Show Fib Level of Current Price")
Current_Color = input(color.orange, type=input.color, title = "Current Fib Label Color")
LineStyle = input("Dotted", options = , title = "Fib Line Style")
LineWidth = input(1, minval=1, maxval=3,title = "Fib Line Width")
Ext = input(false, "Extend Lines Left")


// Transparency = input("Low", options = , title="Fib Line Transparency")



BullColor = Bull_Color//Transparency == "High"?color.new(#008000,75):Transparency == "Medium"?color.new(#008000,50):Bull_Color
BearColor = Bear_Color//Transparency == "High"?color.new(#ff0000,75):Transparency == "Medium"?color.new(#ff0000,50):Bear_Color


FPeriod = timeframe.isintraday and Foption=="2. Days"? (1440/timeframe.multiplier)*FP:
timeframe.isdaily and Foption=="2. Days"? FP/timeframe.multiplier:
timeframe.isweekly and Foption=="2. Days"? FP/(7*timeframe.multiplier):
timeframe.ismonthly and Foption=="2. Days"? FP/(28*timeframe.multiplier):
Foption=="1. Candles"? FP:100


Fhigh = FIBS==1? highest(FPeriod) : FIBS == 2 and High == 0? highest(high,100): FIBS == 2 and High!=0? High:na
Flow = FIBS==1? lowest(FPeriod) : FIBS == 2 and Low == -1? lowest(low,100): FIBS == 2 and High!=-1? Low:na
FH = FIBS == 1?highestbars(high,FPeriod): 1
FL = FIBS == 1?lowestbars(low,FPeriod): 2
revfibs = not Reverse? FL>FH : FL<FH



Fib_x(n) =>
revfibs ? (Fhigh-Flow)*n+Flow : Fhigh-(Fhigh-Flow)*n

Current = revfibs?(close-Flow)/(Fhigh-Flow):(Fhigh-close)/(Fhigh-Flow)

var label Current_Fib_Label = na
label.delete(Current_Fib_Label)

if(CurrentFib and barstate.islast)
Current_Fib_Label := label.new(bar_index, close, tostring(Current, "##.##"), textcolor = Current_Color, color = color.new(#000000,100), style=label.style_label_left, yloc=yloc.price)




EXTEND = Ext?extend.left:extend.none
STYLE = LineStyle=="Dotted"?line.style_dotted:line.style_solid
WIDTH = LineWidth

BB = FIBS==1?(FL<FH?bar_index:bar_index):FIBS==2?bar_index:bar_index

Fib_line(x) =>
var line ln = na
line.delete(ln)
ln:=line.new(BB, x, bar_index, x, color = close>x? BullColor:BearColor, extend=EXTEND ,style=STYLE, width = WIDTH)



Fib_label(x,_txt) =>
var label lbl = na
label.delete(lbl)
lbl:=label.new(bar_index, x, _txt + tostring(x, "##.########") + " )", textcolor = close>x?BullColor:BearColor, color = color.new(#000000,100), style=label.style_label_left, yloc=yloc.price)



Fib0 = Fib_line(Fib_x(0))
Fib236 = Fib_line(Fib_x(0.236))
Fib382 = Fib_line(Fib_x(0.382))
Fib500 = Fib_line(Fib_x(0.500))
Fib618 = Fib_line(Fib_x(0.618))
Fib786 = Fib_line(Fib_x(0.786))
Fib1000 = Fib_line(Fib_x(1.000))

Fib886 = ExtraFibs?Fib_line(Fib_x(0.886)):na

if(FIBS==2)

Fib1113 = ExtraFibs?Fib_line(Fib_x(1.113)):na

Fib1272 = Fib_line(Fib_x(1.272))
Fib1618 = Fib_line(Fib_x(1.618))
Fib2000 = Fib_line(Fib_x(2.000))
Fib2236 = Fib_line(Fib_x(2.236))
Fib2618 = Fib_line(Fib_x(2.618))
Fib3236 = Fib_line(Fib_x(3.236))
Fib3618 = Fib_line(Fib_x(3.618))
Fib4236 = Fib_line(Fib_x(4.236))
Fib4618 = Fib_line(Fib_x(4.618))


LFib0 = Fib_label(Fib_x(0), "0 ( ")
LFib236 = Fib_label(Fib_x(0.236), "0.236 ( ")
LFib382 = Fib_label(Fib_x(0.382), "0.382 ( ")
LFib500 = Fib_label(Fib_x(0.500), "0.500 ( ")
LFib618 = Fib_label(Fib_x(0.618), "0.618 ( ")
LFib786 = Fib_label(Fib_x(0.786), "0.786 ( ")
LFib1000 = Fib_label(Fib_x(1.000), "1.000 ( ")

LFib886 = ExtraFibs?Fib_label(Fib_x(0.886), "0.886 ( "):na


if(FIBS==2)

LFib1113 = ExtraFibs?Fib_label(Fib_x(1.113), "1.113 ( "):na

LFib1272 = Fib_label(Fib_x(1.272), "1.272 ( ")
LFib1618 = Fib_label(Fib_x(1.618), "1.618 ( ")
LFib2000 = Fib_label(Fib_x(2.000), "2.000 ( ")
LFib2236 = Fib_label(Fib_x(2.236), "2.236 ( ")
LFib2618 = Fib_label(Fib_x(2.618), "2.618 ( ")
LFib3236 = Fib_label(Fib_x(3.236), "3.236 ( ")
LFib3618 = Fib_label(Fib_x(3.618), "3.618 ( ")
LFib4236 = Fib_label(Fib_x(4.236), "4.236 ( ")
LFib4618 = Fib_label(Fib_x(4.618), "4.618 ( ")

إخلاء المسؤولية

لا يُقصد بالمعلومات والمنشورات أن تكون، أو تشكل، أي نصيحة مالية أو استثمارية أو تجارية أو أنواع أخرى من النصائح أو التوصيات المقدمة أو المعتمدة من TradingView. اقرأ المزيد في شروط الاستخدام.