OBV Divergence Indicator [TradingFinder] On Balance Vol Reversal//@version=6
indicator('OBV Divergence Indicator On Balance Vol Reversal', shorttitle = 'TFlab OBV Divergence', overlay = true, max_bars_back = 5000, max_labels_count = 500, max_lines_count = 500)
// User Inputs
n = input.int(title = 'Fractal Periods', defval = 4, minval = 2, group = 'Logic Setting')
emaLength = input.int(50, title = 'EMA Length', minval = 1, group = 'Trend Settings')
Show_Table = input.string('Yes', 'Show Table', options = , group = 'Display Setting')
Show_Label = input.string('Yes', 'Show Label', options = , group = 'Display Setting')
// Indicators
ATR = ta.atr(55)
Hist = ta.obv
EMA = ta.ema(close, emaLength)
// Trend Identification
up_trend = close > EMA
down_trend = close < EMA
// Fractal Detection (Fix: Use `not na` to check valid pivots)
UpPivot = ta.pivothigh(n, n)
DownPivot = ta.pivotlow(n, n)
upFractal = not na(UpPivot)
downFractal = not na(DownPivot)
// Bearish Divergence Calculation (Sell Signal Fix)
High_Last_Price = ta.valuewhen(upFractal, high, 0)
High_Per_Price = ta.valuewhen(upFractal, high, 1)
High_Last_Hist = ta.valuewhen(upFractal, Hist, 0)
High_Per_Hist = ta.valuewhen(upFractal, Hist, 1)
High_Last_Bar = ta.valuewhen(upFractal, bar_index, 0)
High_Per_Bar = ta.valuewhen(upFractal, bar_index, 1)
Time_Condition_Bear = High_Last_Bar + 30 > bar_index
Last_Bearish_Divergece = if Time_Condition_Bear and High_Last_Bar - High_Per_Bar < 30
High_Last_Price > High_Per_Price and High_Last_Hist < High_Per_Hist
else
false
// Bullish Divergence Calculation (Buy Signal)
Low_Last_Price = ta.valuewhen(downFractal, low, 0)
Low_Per_Price = ta.valuewhen(downFractal, low, 1)
Low_Last_Hist = ta.valuewhen(downFractal, Hist, 0)
Low_Per_Hist = ta.valuewhen(downFractal, Hist, 1)
Low_Last_Bar = ta.valuewhen(downFractal, bar_index, 0)
Low_Per_Bar = ta.valuewhen(downFractal, bar_index, 1)
Time_Condition_Bull = Low_Last_Bar + 30 > bar_index
Last_Bullish_Divergece = if Time_Condition_Bull and Low_Last_Bar - Low_Per_Bar < 30
Low_Last_Price < Low_Per_Price and Low_Last_Hist > Low_Per_Hist
else
false
// ✅ Fixed: Plot Divergence Lines & Labels
plotDivergence() =>
if Last_Bullish_Divergece
line.new(x1 = Low_Per_Bar, y1 = Low_Per_Price, x2 = Low_Last_Bar, y2 = Low_Last_Price, color = color.green, width = 2)
if Show_Label == 'Yes'
label.new(x = Low_Last_Bar, y = Low_Last_Price, text = '+RD', color = color.green, textcolor = color.white, size = size.tiny, style = label.style_label_up)
if Last_Bearish_Divergece
line.new(x1 = High_Per_Bar, y1 = High_Per_Price, x2 = High_Last_Bar, y2 = High_Last_Price, color = color.red, width = 2)
if Show_Label == 'Yes'
label.new(x = High_Last_Bar, y = High_Last_Price, text = '-RD', color = color.red, textcolor = color.white, size = size.tiny, style = label.style_label_down)
plotDivergence()
Chart patterns
My Buy Signal Strategy"Hugo v.1.0", teknik analiz göstergeleri ve mum formasyonlarını birleştirerek piyasada alım fırsatlarını tespit etmeyi amaçlayan esnek ve özelleştirilebilir bir stratejidir. 9 koşuluyla, kullanıcıların ihtiyaçlarına göre uyarlanabilir ve TradingView üzerinde kolayca test edilebilir. Strateji, hem trend takip hem de dönüş sinyallerini yakalamak için dengeli bir yaklaşım sunar.
Global M2 Money Supply (Days Offset)The Global M2 Money Supply indicator, updated by Colin Talks Crypto on March 2, 2025, and modified by Grok (xAI), is a TradingView Pine Script (v6) tool designed to visualize the aggregated M2 money supply from key global regions, overlaid on a price chart (e.g., BTCUSD) with a right-axis scale. It aggregates daily M2 data from regions including North America, Eurozone, Asia, and others, adjusted with forex rates (e.g., EURUSD, JPYUSD), and scales the total to billions for readability. Users can adjust the time offset (default 76 days, range -1000 to 1000) to align M2 with Bitcoin price movements, reflecting lags of 70–76 days as noted in market analyses. Additionally, a customizable smoothing period (default 20 days, range 1 to 100) applies a Simple Moving Average (SMA) to reduce noise, highlighting longer-term trends. A debug plot of raw M2 data (gray line) aids in verifying data integrity, making this indicator a valuable tool for crypto traders analyzing liquidity impacts on price action.
ICT Silver Bullet [Eyman_azayr]//@version=5
indicator("ICT Silver Bullet ", shorttitle='Eyman_azayr - ICT Silver Bullet', max_lines_count=500, max_boxes_count=500, max_labels_count=500, overlay=true)
//------------------------------------------------------------------------------
//Settings
//-----------------------------------------------------------------------------{
left = input.int ( 5 , '' , minval=1, maxval=20, group='Swings settings (left)')
showSB = input.bool ( true , 'Show SB session', inline='SB' , group='Silver Bullet session' )
col_SB = input.color(#b2b5be50, ' ' , inline='SB' , group='Silver Bullet session' )
choice = input.string('Super-Strict', '' , inline='fvg' , group='FVG'
, options = )
superstrict = choice == 'Super-Strict'
iTrend = choice != 'All FVG'
strict = choice == 'Strict'
stricty = superstrict or strict
cBullFVG = input.color (#4dd0e160, '' , inline='fvg' , group='FVG' )
cBearFVG = input.color (#ffc1b160, '' , inline='fvg' , group='FVG' )
extend = input.bool ( true , 'extend' , inline='fvg' , group='FVG' )
opt = input.string('previous session (similar)','', inline='TG' , group='Targets - Support/Resistance'
, options = )
prev = opt == 'previous session (any)'
cSupLine = input.color (#b22833 , '' , inline='TG' , group='Targets - Support/Resistance')
cResLine = input.color (#3e89fa , '' , inline='TG' , group='Targets - Support/Resistance')
keep = input.bool (true , 'Keep lines (only in strict mode)', group='Targets - Support/Resistance')
showT = input.bool (false, title = 'MSS ~ session' , group='Show' )
showZZ = input.bool (false, title = 'Trend' , group='Show' )
//show_minFr= input.bool (false, title = 'Minimum Trade Framework' , group='Show' )
n = bar_index
maxSize = 250
minT = syminfo.mintick
//------------------------------------------------------------------------------
//UDT's
//-----------------------------------------------------------------------------{
type piv
int b
float p
bool br
type ZZ
int d
int x
float y
line l
type FVG
box box
bool active
bool current
type actLine
line ln
bool active
type aPiv
piv GN_swingH
piv GN_swingL
float GN_mnPiv
float GN_mxPiv
line GN_targHi
line GN_targLo
piv LN_swingH
piv LN_swingL
float LN_mnPiv
float LN_mxPiv
line LN_targHi
line LN_targLo
piv AM_swingH
piv AM_swingL
float AM_mnPiv
float AM_mxPiv
line AM_targHi
line AM_targLo
piv PM_swingH
piv PM_swingL
float PM_mnPiv
float PM_mxPiv
line PM_targHi
line PM_targLo
//-----------------------------------------------------------------------------}
//Variables
//-----------------------------------------------------------------------------{
var aPiv a = aPiv.new(
GN_swingH = array.new(1, piv.new(na, na))
, GN_swingL = array.new(1, piv.new(na, na))
, GN_mnPiv = 10e6
, GN_mxPiv = 0
, GN_targHi = array.new()
, GN_targLo = array.new()
, LN_swingH = array.new(1, piv.new(na, na))
, LN_swingL = array.new(1, piv.new(na, na))
, LN_mnPiv = 10e6
, LN_mxPiv = 0
, LN_targHi = array.new()
, LN_targLo = array.new()
, AM_swingH = array.new(1, piv.new(na, na))
, AM_swingL = array.new(1, piv.new(na, na))
, AM_mnPiv = 10e6
, AM_mxPiv = 0
, AM_targHi = array.new()
, AM_targLo = array.new()
, PM_swingH = array.new(1, piv.new(na, na))
, PM_swingL = array.new(1, piv.new(na, na))
, PM_mnPiv = 10e6
, PM_mxPiv = 0
, PM_targHi = array.new()
, PM_targLo = array.new()
)
var ZZ aZZ =
ZZ.new(
array.new < int >(maxSize, 0),
array.new < int >(maxSize, 0),
array.new < float >(maxSize, na),
array.new < line >(maxSize, na)
)
var FVG bFVG_bull = array.new(
1, FVG.new(
box = box.new(na, na, na, na)
, active = na
)
)
var FVG bFVG_bear = array.new(
1, FVG.new(
box = box.new(na, na, na, na)
, active = na
)
)
var min = 10e6
var max = 0.
//var minTrFr = line.new(na, na, na, na, style=line.style_arrow_right, color=color.yellow )
//var maxTrFr = line.new(na, na, na, na, style=line.style_arrow_left , color=color.fuchsia)
var hilo = array.from(0, 10e6)
var aTrend= array.from(0)
var l_SB = array.new< line>()
var highs = array.new()
var lows = array.new()
var tab = table.new(position = position.top_right, columns = 1, rows = 1, bgcolor = color(na), border_width = 1)
//-----------------------------------------------------------------------------}
//General calculations
//-----------------------------------------------------------------------------{
ph = ta.pivothigh(left, 1)
pl = ta.pivotlow (left, 1)
//-----------------------------------------------------------------------------}
//Methods/Functions
//-----------------------------------------------------------------------------{
method type(string str) =>
( syminfo.type == 'stock' and str == 'stock' ) or
(syminfo.type == 'futures' and str == 'futures') or
(syminfo.type == 'index' and str == 'index' ) or
(syminfo.type == 'forex' and str == 'forex' ) or
(syminfo.type == 'crypto' and str == 'crypto' ) or
(syminfo.type == 'fund' and str == 'fund' )
method timeSess(string timezone, string session) => time(timeframe.period, session, timezone)
//Silver Bullet Periods
SB_LN_per = "Europe/Moscow".timeSess("1100-1200") // period/session ~ The London Open Silver Bullet (11 AM — 12 PM Moscow time)
SB_AM_per = "Europe/Moscow".timeSess("1800-1900") // period/session ~ The AM Session Silver Bullet (6 PM — 7 PM Moscow time)
SB_PM_per = "Europe/Moscow".timeSess("2200-2300") // period/session ~ The PM Session Silver Bullet (10 PM — 11 PM Moscow time)
is_in_SB = SB_LN_per or SB_AM_per or SB_PM_per
strSB = is_in_SB and not is_in_SB
strLN = SB_LN_per and not SB_LN_per
strAM = SB_AM_per and not SB_AM_per
strPM = SB_PM_per and not SB_PM_per
endSB = not is_in_SB and is_in_SB
endLN = not SB_LN_per and SB_LN_per
endAM = not SB_AM_per and SB_AM_per
endPM = not SB_PM_per and SB_PM_per
minimum_trade_framework =
'forex'.type () ? syminfo.mintick * 15 * 10 :
'index'.type () or
'futures'.type() ? syminfo.mintick * 40 : 0
method in_out(ZZ aZZ, int d, int x1, float y1, int x2, float y2) =>
aZZ.d.unshift(d), aZZ.x.unshift(x2), aZZ.y.unshift(y2), aZZ.d.pop(), aZZ.x.pop(), aZZ.y.pop()
if showZZ
aZZ.l.unshift(line.new(x1, y1, x2, y2, color= color.new(color.blue, 50))), aZZ.l.pop().delete()
f_setTrend() =>
//
MSS_dir = aTrend.get(0)
iH = aZZ.d.get(2) == 1 ? 2 : 1
iL = aZZ.d.get(2) == -1 ? 2 : 1
//
switch
// MSS Bullish
close > aZZ.y.get(iH) and aZZ.d.get(iH) == 1 and MSS_dir < 1 =>
aTrend.set(0, 1)
// MSS Bearish
close < aZZ.y.get(iL) and aZZ.d.get(iL) == -1 and MSS_dir > -1 =>
aTrend.set(0, -1)
f_swings(start, end, str, col, min, max) =>
//
max_bars_back(time, 1000)
var int MSS_dir = aTrend.get(0)
//
x2 = n -1
piv swingH = na
piv swingL = na
float mnPiv = na
float mxPiv = na
line targHi = na
line targLo = na
bool active = na
switch str
'GN' =>
swingH := a.GN_swingH
swingL := a.GN_swingL
mnPiv := a.GN_mnPiv
mxPiv := a.GN_mxPiv
targHi := a.GN_targHi
targLo := a.GN_targLo
active := is_in_SB
'LN' =>
swingH := a.LN_swingH
swingL := a.LN_swingL
mnPiv := a.LN_mnPiv
mxPiv := a.LN_mxPiv
targHi := a.LN_targHi
targLo := a.LN_targLo
active := SB_LN_per
'AM' =>
swingH := a.AM_swingH
swingL := a.AM_swingL
mnPiv := a.AM_mnPiv
mxPiv := a.AM_mxPiv
targHi := a.AM_targHi
targLo := a.AM_targLo
active := SB_AM_per
'PM' =>
swingH := a.PM_swingH
swingL := a.PM_swingL
mnPiv := a.PM_mnPiv
mxPiv := a.PM_mxPiv
targHi := a.PM_targHi
targLo := a.PM_targLo
active := SB_PM_per
if start
hilo.set(0, 0 )
hilo.set(1, 10e6)
if stricty ? not keep : true
while highs.size() > 0
get=highs.pop()
get.ln.delete()
while lows.size() > 0
get= lows.pop()
get.ln.delete()
while targHi.size() > 0
targHi.pop().delete()
while targLo.size() > 0
targLo.pop().delete()
while a.GN_targHi.size() > 0
a.GN_targHi.pop().delete()
while a.LN_targHi.size() > 0
a.LN_targHi.pop().delete()
while a.AM_targHi.size() > 0
a.AM_targHi.pop().delete()
while a.PM_targHi.size() > 0
a.PM_targHi.pop().delete()
while a.GN_targLo.size() > 0
a.GN_targLo.pop().delete()
while a.LN_targLo.size() > 0
a.LN_targLo.pop().delete()
while a.AM_targLo.size() > 0
a.AM_targLo.pop().delete()
while a.PM_targLo.size() > 0
a.PM_targLo.pop().delete()
if active
hilo.set(0, math.max(hilo.get(0), high))
hilo.set(1, math.min(hilo.get(1), low ))
if ph
if ph > mxPiv
mxPiv := ph
if swingH.size() > 0
for i = swingH.size() -1 to 0
get = swingH.get(i)
if ph >= get.p
swingH.remove(i)
swingH.unshift(piv.new(n -1, ph))
if str == 'GN' or str == 'LN'
dir = aZZ.d.get (0)
x1 = aZZ.x.get (0)
y1 = aZZ.y.get (0)
y2 = nz(high )
//
if dir < 1 // if previous point was a pl, add, and change direction ( 1)
aZZ.in_out( 1, x1, y1, x2, y2)
else
if dir == 1 and ph > y1
aZZ.x.set(0, x2), aZZ.y.set(0, y2)
if showZZ
aZZ.l.get(0).set_xy2 (x2 , y2)
if pl
if pl < mnPiv
mnPiv := pl
if swingL.size() > 0
for i = swingL.size() -1 to 0
get = swingL.get(i)
if pl <= get.p
swingL.remove(i)
swingL.unshift(piv.new(n -1, pl))
//
if str == 'GN' or str == 'LN'
dir = aZZ.d.get (0)
x1 = aZZ.x.get (0)
y1 = aZZ.y.get (0)
y2 = nz(low )
//
if dir > -1 // if previous point was a ph, add, and change direction (-1)
aZZ.in_out(-1, x1, y1, x2, y2)
else
if dir == -1 and pl < y1
aZZ.x.set(0, x2), aZZ.y.set(0, y2)
if showZZ
aZZ.l.get(0).set_xy2 (x2 , y2)
//
iH = aZZ.d.get(2) == 1 ? 2 : 1
iL = aZZ.d.get(2) == -1 ? 2 : 1
//
switch
// MSS Bullish
close > aZZ.y.get(iH) and aZZ.d.get(iH) == 1 and MSS_dir < 1 =>
MSS_dir := 1
if active and showT
line.new(aZZ.x.get(iH), aZZ.y.get(iH), n, aZZ.y.get(iH), color=cResLine, width=2)
// MSS Bearish
close < aZZ.y.get(iL) and aZZ.d.get(iL) == -1 and MSS_dir > -1 =>
MSS_dir := -1
if active and showT
line.new(aZZ.x.get(iL), aZZ.y.get(iL), n, aZZ.y.get(iL), color=cSupLine, width=2)
if end
sz = swingH.size()
if sz > 0
for i = 0 to sz -1
y = swingH.get(i).p
if y > (stricty ? min : hilo.get(0))
targHi.unshift(line.new(swingH.get(i).b, y, n, y, color=cResLine))
highs.unshift(actLine.new(line.new( n, y, n, y, color=cResLine), true))
sz := swingL.size()
if sz > 0
for i = 0 to sz -1
y = swingL.get(i).p
if y < (stricty ? max : hilo.get(1))
targLo.unshift(line.new(swingL.get(i).b, y, n, y, color=cSupLine))
lows.unshift(actLine.new(line.new( n, y, n, y, color=cSupLine), true))
swingH.clear()
swingL.clear()
mnPiv := 10e6
mxPiv := 0
if showZZ
if ph or pl
aZZ.l.get(0).set_color(MSS_dir == 1 ? cResLine : cSupLine)
aTrend.set(0, MSS_dir)
//-------------------------------------------}
//Execution
//-------------------------------------------}
f_setTrend()
trend = aTrend.get(0)
//Targets
targetHi = false
targetLo = false
hSz = highs.size()
if hSz > 200
highs.pop().ln.delete()
hSz := highs.size()
if hSz > 0
for i = 0 to hSz -1
get = highs.get(i)
if get.active
get.ln.set_x2(n)
if high > get.ln.get_y2()
get.active := false
targetHi := true
lSz = lows.size()
if lSz > 200
lows.pop().ln.delete()
lSz := lows.size()
if lSz > 0
for i = 0 to lSz -1
get = lows.get(i)
if get.active
get.ln.set_x2(n)
if low < get.ln.get_y2()
get.active := false
targetLo := true
if l_SB.size() > 100
l_SB.pop().delete()
// SB session vLines & 'lock' previous FVG boxes
if strSB
min := 10e6
max := 0.
if showSB
l_SB.unshift(line.new(n, close, n, close + minT
, color= col_SB, extend=extend.both))
for i = 0 to bFVG_bull.size ( ) -1
get = bFVG_bull.get (i)
if n > get.box.get_right( ) -1
if get.current == true
get.current := false
for i = 0 to bFVG_bear.size ( ) -1
get = bFVG_bear.get (i)
if n > get.box.get_right( ) -1
if get.current == true
get.current := false
//FVG's
if is_in_SB
trend := aTrend.get(0)
if iTrend
switch trend
//bullish
1 =>
if low > high
bFVG_bull.unshift(
FVG.new(
box = box.new(
n-2, low, n, high
,border_color=color(na)
,bgcolor = cBullFVG)
, active = false
, current = true
)
)
//bearish
=>
if high < low
bFVG_bear.unshift(
FVG.new(
box = box.new(
n-2, low , n, high
,border_color=color(na)
,bgcolor = cBearFVG)
, active = false
, current = true
)
)
else
if low > high
bFVG_bull.unshift(
FVG.new(
box = box.new(
n , low, n, high
,border_color=color(na)
,bgcolor = cBullFVG)
, active = false
, current = true
)
)
if high < low
bFVG_bear.unshift(
FVG.new(
box = box.new(
n , low , n, high
,border_color=color(na)
,bgcolor = cBearFVG)
, active = false
, current = true
)
)
if endSB
if showSB
l_SB.unshift(line.new(n, close, n, close + minT
, color= col_SB, extend=extend.both))
if bFVG_bull.size() > 0
for i = 0 to bFVG_bull.size ( ) -1
get = bFVG_bull.get (i)
bLeft = get. box.get_left ( )
bTop = get. box.get_top ( )
bBot = get. box.get_bottom( )
if n - bLeft < 1000
if get.current
if is_in_SB
if close < bBot
if superstrict
get.current := false
get.box.set_bgcolor(color.new(color.blue, 100))
get.box.set_right(bLeft)
if superstrict or strict
get.active := false
else
if extend
if get.active
//update right when extend
get.box.set_right(n)
//trigger retrace -> activated
if not get.active
if low < bTop and close > bBot
get.active := true
if extend
get.box.set_right(n)
//if last bar of session and no retrace or close < bottom -> FVG invisible
if endSB
if get.active
if strict
if close < bBot // needs to be above box bottom
get.active := false
if superstrict
if close < bTop // needs to be above box top
get.active := false
//All FVG's who are not retraced (activated) are made invisible
if not get.active
get.box.set_bgcolor(color.new(color.blue, 100))
get.box.set_right(bLeft)
if get.active
min := math.min(min, bBot + minimum_trade_framework)
if extend
get.box.set_right(n)
if endSB
get.active := false
//if show_minFr
// minTrFr.set_xy1(n -1, min - minimum_trade_framework)
// minTrFr.set_xy2(n -1, min )
if bFVG_bear.size() > 0
for i = 0 to bFVG_bear.size ( ) -1
get = bFVG_bear.get (i)
bLeft = get.box. get_left ( )
bTop = get.box. get_top ( )
bBot = get.box. get_bottom( )
if n - bLeft < 1000
if get.current
if is_in_SB
if close > bTop
if superstrict
get.current := false
get.box.set_bgcolor(color.new(color.blue, 100))
get.box.set_right(bLeft)
if superstrict or strict
get.active := false
else // if close < bTop
if extend
if get.active
//update right when extend
get.box.set_right(n)
//trigger retrace -> activated
if not get.active
if high > bBot and close < bTop
get.active := true
if extend
get.box.set_right(n)
//if last bar of session and no retrace -> FVG invisible
if endSB
if get.active
if strict
if close > bTop // needs to be below box top
get.active := false
if superstrict
if close > bBot // needs to be below box bottom
get.active := false
//All FVG's who are not retraced (activated) are made invisible
if not get.active
get.box.set_bgcolor(color.new(color.blue, 100))
get.box.set_right(bLeft)
if get.active
max := math.max(max, bTop - minimum_trade_framework)
if extend
get.box.set_right(n)
if endSB
get.active := false
//if show_minFr
// maxTrFr.set_xy1(n -1, max )
// maxTrFr.set_xy2(n -1, max + minimum_trade_framework)
if prev
f_swings(strSB, endSB, 'GN', col_SB, min, max)
else
f_swings(strLN, endLN, 'LN', col_SB, min, max)
f_swings(strAM, endAM, 'AM', col_SB, min, max)
f_swings(strPM, endPM, 'PM', col_SB, min, max)
//-------------------------------------------}
//Plotchar/table
//-------------------------------------------}
tfs = (60 / (timeframe.in_seconds(timeframe.period) / 60)) / 2
plotchar(not na(SB_LN_per) and na(SB_LN_per ) and showSB
, title= '3-4 AM' , location=location.top, text= '3-4 AM NY', color=color(na)
, textcolor=col_SB, offset= +tfs)
plotchar(not na(SB_AM_per) and na(SB_AM_per ) and showSB
, title='10-11 AM', location=location.top, text='10-11 AM NY', color=color(na)
, textcolor=col_SB, offset= +tfs)
plotchar(not na(SB_PM_per) and na(SB_PM_per ) and showSB
, title= '2-3 PM' , location=location.top, text= '2-3 PM NY', color=color(na)
, textcolor=col_SB, offset= +tfs)
plotchar(targetHi ? high : na, 'target high', '•', location.abovebar, color=cResLine, size=size.small)
plotchar(targetLo ? low : na, 'target low' , '•', location.belowbar, color=cSupLine, size=size.small)
if barstate.islast
if timeframe.in_seconds(timeframe.period) > 15 * 60
table.cell(tab, 0, 0, text = 'Please use a timeframe <= 15 minutes', text_color=#FF0000)
//-------------------------------------------}
Stock to Gold RatioYou can use this as simply a guide or to see how a physical asset compares to a company or another physical commodity.
All time frames and all stocks that can be charted work with this code/indicator. It relies on the gold spot and not the futures so there isn't as much noise in the charting.
If you want to trend line arcuately, then go into settings and in style make sure to apply crosses or circles and place your points on the highs or lows you want. Then simply reapply line choice and go from there.
You may say why gold...Well maybe its your currency that is falling and not the metal going up hmm....Kinda like the stock I chose to advertise this.
For when it come to hands full of things, One is Silver, and the other...Gold.
High Volume & Chart Patternsit indicates high volume with 150 percent . useful at support and resistence
My script//@version=5
indicator("Session Highs and Lows", overlay=true)
// Session Time Inputs
asiaStart = timestamp(year, month, day, 0, 0)
asiaEnd = timestamp(year, month, day, 8, 0)
londonStart = timestamp(year, month, day, 8, 0)
londonEnd = timestamp(year, month, day, 13, 0)
usStart = timestamp(year, month, day, 13, 0)
usEnd = timestamp(year, month, day, 21, 0)
// Variables to store session highs and lows
var float asiaHigh = na
var float asiaLow = na
var float londonHigh = na
var float londonLow = na
var float usHigh = na
var float usLow = na
// Update session highs and lows
asiaHigh := (time >= asiaStart and time < asiaEnd) ? math.max(asiaHigh, high) : asiaHigh
asiaLow := (time >= asiaStart and time < asiaEnd) ? math.min(asiaLow, low) : asiaLow
londonHigh := (time >= londonStart and time < londonEnd) ? math.max(londonHigh, high) : londonHigh
londonLow := (time >= londonStart and time < londonEnd) ? math.min(londonLow, low) : londonLow
usHigh := (time >= usStart and time < usEnd) ? math.max(usHigh, high) : usHigh
usLow := (time >= usStart and time < usEnd) ? math.min(usLow, low) : usLow
// Plot Highs and Lows
plot(asiaHigh, color=color.blue, linewidth=2, title="Asia High")
plot(asiaLow, color=color.blue, linewidth=2, title="Asia Low")
plot(londonHigh, color=color.green, linewidth=2, title="London High")
plot(londonLow, color=color.green, linewidth=2, title="London Low")
plot(usHigh, color=color.red, linewidth=2, title="US High")
plot(usLow, color=color.red, linewidth=2, title="US Low")
Elliott Wave DetectorDưới đây là một bot Pine Script giúp nhận diện sóng Elliott cơ bản trên TradingView. Nó xác định điểm bắt đầu của sóng 1 và hiển thị các mức TP/SL dựa trên Fibonacci.
Stochastic with Delta Indicator will give auto buy and sell signal based on stochastic( 14 period), cummulative volume delta
RS v6.0.1 - SniperModifications to the RS v5 that makes this tool especially effective at getting entries as close to tops/bottoms as possible, triggering on candle closes.
Please DM for indicator access so I can control the number of users.
Proper Multi-Timeframe Trend Analysisa table showing the trend (bullish or bearish) for the daily, 4-hour, 1-hour, and 15-minute timeframes based on the last 15 trading session candles.
To determine the proper trend analysis based on the last 15 candles, we need to analyze whether the price is consistently moving upward (bullish) or downward (bearish) over the last 15 candles. This can be achieved by calculating the slope of a linear regression line or by checking if the highs and lows are consistently increasing or decreasing.
Ripster EMA CloudsRipster EMA Clouds Trading System
The Ripster EMA Clouds indicator is a trend-following tool that highlights dynamic support and resistance zones using shaded Exponential Moving Average (EMA) clouds. This system is designed to help traders identify momentum shifts, trend confirmations, and retracement levels for both intraday and swing trading .
Short-term EMAs (e.g., 5-12, 8-9) – Act as a fluid guide for day trades and pullback levels.
Medium-term EMAs (e.g., 34-50, 20-21) – Provide insights into trend continuation and reversals.
Long-term EMAs (e.g., 72-89, 180-200) – Help confirm overall bullish or bearish bias over larger timeframes.
By observing how price interacts with these clouds, traders can identify key entry and exit points based on trend strength. The script also includes customizable cloud colors , allowing users to tailor the visualization to their strategy. Whether scalping, swing trading, or trend following, this indicator provides a clear framework for market analysis.
EMA Cross Indicator with 55 EMAAn EMA Ribbon with a 55 EMA is a powerful technical indicator used to identify trends, momentum shifts, and potential trading opportunities. The EMA (Exponential Moving Average) is a weighted moving average that places more emphasis on recent price action, making it more responsive to price changes compared to a Simple Moving Average (SMA).
RS v6.0.1Modifications and updates to the origina Rocket Scalper v5 specifically designed for seekng optimal entry points via atr derived fib extensions from signals, with programmable alerts for automation of trade entries via API.
The source code is locked, but I will grant access upon request on a first-come-first-serve basis.
BITCOIN SMASHERThe BITCOIN SMASHER strategy is a trend-following and momentum-based trading system designed for Bitcoin. It utilizes a combination of Exponential Moving Averages (EMAs), RSI,to determine optimal entry and exit points while incorporating risk management features such as dynamic stop loss, take profit, trade cooldowns, and max daily loss limits.
ID 10 Second BarsEnters numbers 1, 3 and 5 under the appropriate bars on the 10 second chart and permits you to adjust the colors of each number.
Opening Range Time Frames 1Opening Range for 3 different time frames customizable color and timeframes. I use it for Tokyo, London, New York. but times are customizable to whatever you want them to be.
Macro Stock IndicatorHi, this plots fundamentals of a stock's underlying value instead of its price. This works 99% times. You can check.
5 Dakika Özel AL-SAT5 Dakikalık Performans Optimizasyonları:
Hızlı EMA Kesmeleri: 20/50 EMA kombinasyonu
Agresif Risk Yönetimi: %0.25 SL / %0.50 TP
Hacim Spike Filtresi: 1.5x ortalama hacim zorunlu
Dar Bollinger Bandı: 1.8 standart sapma ile
RSI Thresholds: 38/62 seviyelerinde
Kullanım Önerileri:
Zaman Seçimi:
Londra Açılışı (08:00 TSİ)
New York Açılışı (14:30 TSİ)
Enstrüman Seçimi:
EUR/USD, GBP/USD, BTC/USDT gibi yüksek likidite çiftleri
Risk Yönetimi:
Maksimum pozisyon büyüklüğü: %2-5 sermaye
Günde maksimum 5 işlem kuralı
Meme Coin Market Cap Index (Midcaps)📌 Included Meme Coins:
✅ Pepe
✅ Floki
✅ Bonk
✅ Spx6900
✅ Brett
✅ Fartcoin
✅ Popcat
✅ Mog
✅ Pnut
✅ Dog
✅ Turbo
✅ Gigachad
✅ Toshi
✅ Bome
✅ Npc
✅ Fwog
✅ Ponke
Pullback Arrow IndicatorUse this indicator in invert settings for market pull backs - use 200 and 50 ema for filter and dynamic support. Disable the filters for more signals
have fun