//@version=6
indicator("Cnagda", overlay=true, max_boxes_count=500, max_labels_count=500)
input_lookback=[Link](34,'Lookback Range',minval=1)
input_retSince=[Link](2,'Bars Since Breakout',minval=1)
input_retValid=[Link](2,'Retest Detection Limiter',minval=1)
anchor_type=[Link]('Both','Anchor VWAP to',['Swing High','Swing Low','Both'])
avwap_lookback=[Link](34,'Swing Detection Lookback',minval=5)
avwap_color=[Link]([Link],'Anchored VWAP Color')
avwap_width=[Link](2,'Anchored VWAP Width',minval=1,maxval=4)
bb=input_lookback
ma1=[Link](close,34)
ma2=[Link](close,34)
length=[Link](20,"Volatility Stop Length")
factor=[Link](2.0,"Volatility Stop Multiplier")
src=close
f_volStop(_src,_atrLen,_atrFactor)=>
_atr=[Link](_atrLen)*_atrFactor
var float _vstop=na
var bool _uptrend=true
_vstop:=na(_vstop[1])?_src-_atr:_vstop[1]
_uptrend:=na(_vstop[1])?true:_uptrend[1]
_uptrend:=_src>_vstop[1]?true:_src<_vstop[1]?false:_uptrend[1]
_vstop:=_uptrend?[Link](_vstop[1],_src-_atr):[Link](_vstop[1],_src+_atr)
[_vstop,_uptrend]
[vStop,uptrend]=f_volStop(close,length,factor)
swingHigh=[Link](high,avwap_lookback,avwap_lookback)
swingLow=[Link](low,avwap_lookback,avwap_lookback)
var int anchor_bar=na
var float anchor_price=na
newAnchor=false
if anchor_type=='Swing High' and not na(swingHigh)
anchor_bar:=bar_index[avwap_lookback]
anchor_price:=swingHigh
newAnchor:=true
else if anchor_type=='Swing Low' and not na(swingLow)
anchor_bar:=bar_index[avwap_lookback]
anchor_price:=swingLow
newAnchor:=true
else if anchor_type=='Both'
if not na(swingHigh)
anchor_bar:=bar_index[avwap_lookback]
anchor_price:=swingHigh
newAnchor:=true
else if not na(swingLow)
anchor_bar:=bar_index[avwap_lookback]
anchor_price:=swingLow
newAnchor:=true
var float cumulative_tp_volume=0.0
var float cumulative_volume=0.0
var float anchored_vwap=na
if newAnchor
cumulative_tp_volume:=0.0
cumulative_volume:=0.0
if not na(anchor_bar) and bar_index>=anchor_bar
tp=(high+low+close)/3.0
cumulative_tp_volume+=tp*volume
cumulative_volume+=volume
anchored_vwap:=cumulative_tp_volume/cumulative_volume
else
anchored_vwap:=na
buySignal=[Link](ma1,ma2)
sellSignal=[Link](ma1,ma2)
var string scalp_state="NEUTRAL"
var float refHigh=na
var float refLow=na
if buySignal or sellSignal
refHigh:=high
refLow:=low
scalp_state:="WAIT_ENTRY"
if (scalp_state=="WAIT_ENTRY" or scalp_state=="SELL") and not na(refHigh) and
close>refHigh
scalp_state:="BUY"
if (scalp_state=="WAIT_ENTRY" or scalp_state=="BUY") and not na(refLow) and
close<refLow
scalp_state:="SELL"
if scalp_state=="BUY" and close<vStop
scalp_state:="NEUTRAL"
refHigh:=na
refLow:=na
if scalp_state=="SELL" and close>vStop
scalp_state:="NEUTRAL"
refHigh:=na
refLow:=na
wma34=[Link](close,34)
ema34=[Link](close,34)
sma34=[Link](close,34)
vwma34=[Link](close,34)
ma_sum=(not na(wma34)?wma34:0)+(not na(vwma34)?vwma34:0)+(not na(ema34)?ema34:0)+
(not na(sma34)?sma34:0)+(not na(anchored_vwap)?anchored_vwap:0)
ma_avg=ma_sum/5
var bool inSwingBuy=false
var bool inSwingSell=false
if close>ma_avg and low>ma_avg
inSwingBuy:=true
else
inSwingBuy:=false
if close<ma_avg and high<ma_avg
inSwingSell:=true
else
inSwingSell:=false
swingSignal=inSwingBuy?1:inSwingSell?-1:0
showSwingConfirmed=swingSignal==1?"BUY":swingSignal==-1?"SELL":""
trend=close>anchored_vwap and close>ma1 and close>ma2?"UP":close<anchored_vwap and
close<ma1 and close<ma2?"DOWN":"NEUTRAL"
vol_avg=[Link](volume,20)
high_vol=volume>vol_avg*1.5
isBull=close>open
isBear=close<open
isBlue=high_vol and isBull
isYellow=high_vol and isBear
body_top=[Link](open,close)
body_bot=[Link](open,close)
body_size=[Link](close-open)
part_above=body_top>ma_avg?body_top-[Link](ma_avg,body_bot):0
part_below=body_bot<ma_avg?[Link](ma_avg,body_top)-body_bot:0
percent_above=body_size>0?part_above/body_size:0
percent_below=body_size>0?part_below/body_size:0
bull_cross=body_bot<ma_avg and body_top>ma_avg and percent_above>=0.2
bear_cross=body_top>ma_avg and body_bot<ma_avg and percent_below>=0.2
var int trend_state=0
if bull_cross
trend_state:=1
else if bear_cross
trend_state:=-1
else if close>ma_avg and trend_state==-1
trend_state:=0
else if close<ma_avg and trend_state==1
trend_state:=0
barcolor(high_vol and isBull?[Link]:high_vol and isBear?
[Link](247,255,3):trend_state==1?[Link]:trend_state==-1?
[Link](250,72,7):[Link])
is_swing_buy=(showSwingConfirmed=="BUY") and (showSwingConfirmed[1]!="BUY")
is_swing_sell=(showSwingConfirmed=="SELL") and (showSwingConfirmed[1]!="SELL")
plot(ma_avg,"All MA + VWAP Average",color=[Link],linewidth=3)
rsi_val=[Link](close,14)
rsi_ema_3=[Link](rsi_val,3)
rsi_ema_10=[Link](rsi_val,10)
bar_is_high=high_vol
prev_bar_is_high=high_vol[1]
any_high_bar=bar_is_high or prev_bar_is_high
_base_rsi_cross_bull=[Link](rsi_ema_3,rsi_ema_10) and any_high_bar
_base_rsi_cross_bear=[Link](rsi_ema_3,rsi_ema_10) and any_high_bar
rsi_cross_bull=_base_rsi_cross_bull and (close<ma_avg)
rsi_cross_bear=_base_rsi_cross_bear and (close>ma_avg)
var string rsi_signal=""
if rsi_cross_bull
rsi_signal:="BUY"
else if rsi_cross_bear
rsi_signal:="SELL"
else
rsi_signal:=""
var string ema_signal=""
if is_swing_buy
ema_signal:="BUY"
else if is_swing_sell
ema_signal:="SELL"
else
ema_signal:=""
var table
dash=[Link](position.top_right,4,3,bgcolor=[Link],frame_color=[Link],f
rame_width=1,border_width=1)
if [Link]
[Link](dash,0,0,"TREND",bgcolor=[Link],text_color=[Link],text_size="l
arge")
[Link](dash,1,0,"Scalp",bgcolor=[Link],text_color=[Link],text_size="l
arge")
[Link](dash,2,0,"EMA
Cross",bgcolor=[Link],text_color=[Link],text_size="large")
[Link](dash,3,0,"RSI
Cross",bgcolor=[Link],text_color=[Link],text_size="large")
[Link](dash,0,1,trend,bgcolor=trend=="UP"?[Link]:trend=="DOWN"?
[Link]:[Link],text_color=[Link],text_size="large")
[Link](dash,1,1,scalp_state,bgcolor=scalp_state=="BUY"?
[Link]:scalp_state=="SELL"?
[Link]:[Link],text_color=[Link],text_size="large")
[Link](dash,2,1,ema_signal,bgcolor=ema_signal=="BUY"?
[Link]:ema_signal=="SELL"?
[Link]:[Link],text_color=[Link],text_size="large")
[Link](dash,3,1,rsi_signal,bgcolor=rsi_signal=="BUY"?
[Link]:rsi_signal=="SELL"?
[Link]:[Link],text_color=[Link],text_size="large")
var label[] scalp_labels=[Link]<label>()
scalp_buy_label=(scalp_state=="BUY") and (scalp_state[1]!="BUY")
scalp_sell_label=(scalp_state=="SELL") and (scalp_state[1]!="SELL")
if scalp_buy_label
new_lbl=[Link](bar_index,low,"SCALP
BUY",style=label.style_label_up,color=[Link],textcolor=[Link],size=[Link]
rmal)
[Link](scalp_labels,new_lbl)
if scalp_sell_label
new_lbl=[Link](bar_index,high,"SCALP
SELL",style=label.style_label_down,color=[Link],textcolor=[Link],size=si
[Link])
[Link](scalp_labels,new_lbl)
if [Link](scalp_labels)>2
old_lbl=[Link](scalp_labels)
[Link](old_lbl)
var label[] rsi_labels=[Link]<label>()
rsi_buy_label=(rsi_cross_bull and not rsi_cross_bull[1])
rsi_sell_label=(rsi_cross_bear and not rsi_cross_bear[1])
if rsi_buy_label
new_lbl=[Link](bar_index,low,"RSI
BUY",style=label.style_label_up,color=[Link],textcolor=[Link],size=size
.normal)
[Link](rsi_labels,new_lbl)
if rsi_sell_label
new_lbl=[Link](bar_index,high,"RSI
SELL",style=label.style_label_down,color=[Link],textcolor=[Link],size=si
[Link])
[Link](rsi_labels,new_lbl)
if [Link](rsi_labels)>2
old_lbl=[Link](rsi_labels)
[Link](old_lbl)
var label[] ema_labels=[Link]<label>()
ema_buy_label=is_swing_buy
ema_sell_label=is_swing_sell
if ema_buy_label
new_lbl=[Link](bar_index,low,"EMA
BUY",style=label.style_label_up,color=[Link],textcolor=[Link],size=[Link]
rmal)
[Link](ema_labels,new_lbl)
if ema_sell_label
new_lbl=[Link](bar_index,high,"EMA
SELL",style=label.style_label_down,color=[Link],textcolor=[Link],size=si
[Link])
[Link](ema_labels,new_lbl)
if [Link](ema_labels)>2
old_lbl=[Link](ema_labels)
[Link](old_lbl)