admin

Volatility Stop

17115 views
2286
17115 15
The Volatility Stop Indicator is able to define the current trend. When a downward trend is determined a red line above the prices bars is plotted; when an upward trend is determined a green line below the prices bars is plotted. These lines are generally used as trailing stops. The Volatility Stop Indicator is more used as an exit tool than an entry tool. When the price crosses the VStop value, the trend reverses and VStop moves to the other side of price.

We'd like to present you VStop indicator written in Pine Script. Please notice new Pine Script features used in this indicator: variables max_, min_, is_uptrend, vstop. We may refer to previous values of the indicator in the source code (e.g. vstop, is a vstop value on the previous bar) before the actual vstop variable definition. Enjoy and leave your comments!
Remove from Favorite Scripts Add to Favorite Scripts
study("Volatility Stop", shorttitle="VStop", overlay=true)
length = input(20)
mult = input(2)
atr_ = atr(length)
max1 = max(nz(max_[1]), close)
min1 = min(nz(min_[1]), close)
is_uptrend_prev = nz(is_uptrend[1], true)
stop = is_uptrend_prev ? max1 - mult * atr_ : min1 + mult * atr_
vstop_prev = nz(vstop[1])
vstop1 = is_uptrend_prev ? max(vstop_prev, stop) : min(vstop_prev, stop)
is_uptrend = close - vstop1 >= 0
is_trend_changed = is_uptrend != is_uptrend_prev
max_ = is_trend_changed ? close : max1
min_ = is_trend_changed ? close : min1
vstop = is_trend_changed ? is_uptrend ? max_ - mult * atr_ : min_ + mult * atr_ : vstop1
plot(vstop, color = is_uptrend ? green : red, style=cross, linewidth=2)

Comments

hi, could you please show me how to create an ALERT on tradingview for this code? I'm combing this with an RSI for entry and exits
+10 Reply
Wasnt vstop already provided in TV for some time as builtin indicator?
+6 Reply
My question as well. What's the difference between this Vstop and the one already built-in to TradingVew?
+7 Reply
ybai011 Shepard
@Shepard, the built-in source code isn't available, you can't do any customisation.
Reply
You need to pre-declare variables in version 3. The below will work

//@version=3
study("Volatility Stop Custom", shorttitle="VStop", overlay=true)

length = input(20)
mult = input(2)

atr_ = atr(length)

max_ = 0.0
min_ = 0.0

is_uptrend = false
is_uptrend_prev = false
stop = 0.0
vstop = 0.0
vstop1 =0.0
vstop_prev = 0.0
is_trend_changed = false


max1 = max(nz(max_), close)
min1 = min(nz(min_), close)

is_uptrend_prev := nz(is_uptrend, true)
stop := is_uptrend_prev ? max1 - mult * atr_ : min1 + mult * atr_
vstop_prev := nz(vstop)
vstop1 := is_uptrend_prev ? max(vstop_prev, stop) : min(vstop_prev, stop)
is_uptrend := close - vstop1 >= 0
is_trend_changed := is_uptrend != is_uptrend_prev

max_ := is_trend_changed ? close : max1
min_ := is_trend_changed ? close : min1

vstop := is_trend_changed ? is_uptrend ? max_ - mult * atr_ : min_ + mult * atr_ : vstop1
plot(vstop, color = is_uptrend ? green : red, style=cross, linewidth=2)
+5 Reply
BobHoward21 BobHoward21
@BobHoward21, Oops, forgot tradingview strips out square brackets. Correct version can be found here
+5 Reply
Great indicator!

You can spot break out with VStop! <3
+5 Reply
For better tweaking you can add
mult = input(2, type=float )
For the 3min chart I use
6 / 1.3
+4 Reply
hi
can you please convert this script to //@version=3
+3 Reply
BobHoward21 anilpune
@anilpune,

//@version=3
study("Volatility Stop Custom", shorttitle="VStop", overlay=true)

length = input(20)
mult = input(2)

atr_ = atr(length)

max_ = 0.0
min_ = 0.0

is_uptrend = false
is_uptrend_prev = false
stop = 0.0
vstop = 0.0
vstop1 =0.0
vstop_prev = 0.0
is_trend_changed = false


max1 = max(nz(max_), close)
min1 = min(nz(min_), close)

is_uptrend_prev := nz(is_uptrend, true)
stop := is_uptrend_prev ? max1 - mult * atr_ : min1 + mult * atr_
vstop_prev := nz(vstop)
vstop1 := is_uptrend_prev ? max(vstop_prev, stop) : min(vstop_prev, stop)
is_uptrend := close - vstop1 >= 0
is_trend_changed := is_uptrend != is_uptrend_prev

max_ := is_trend_changed ? close : max1
min_ := is_trend_changed ? close : min1

vstop := is_trend_changed ? is_uptrend ? max_ - mult * atr_ : min_ + mult * atr_ : vstop1
plot(vstop, color = is_uptrend ? green : red, style=cross, linewidth=2)
Reply
Home Stock Screener Forex Screener Crypto Screener Economic Calendar How It Works Chart Features Pricing Refer a friend House Rules Help Center Website & Broker Solutions Widgets Charting Solutions Lightweight Charting Library Blog & News Twitter
Profile Profile Settings Account and Billing Refer a friend My Support Tickets Help Center Ideas Published Followers Following Private Messages Chat Sign Out