Free Scripts / Indicators
for TradingView
Free Scripts / Indicators
for TradingView
copy the script code and paste it on the chart using the Pine editor
__________________________
The indicator is suitable for Forex and Binary Options scalping.
Based on VSA Volume + Patterns + Levels.
Alert for arrows (BUY | SELL)
__________________________
_____________
//@version=5
indicator(title='[WONNFX] PROIndiV1 ARROW WONNDER', shorttitle='[WONNFX] PROIndiV1 Arrow!', overlay=true)
highest40 = ta.highest(volume, 40)
low2 = ta.lowest(volume, 2)
lowest20 = ta.lowest(volume, 20)
iff_1 = volume < volume[1] ? color.red : color.black
iff_2 = volume > volume[1] ? color.green : iff_1
iff_3 = volume < low2[1] ? color.gray : iff_2
iff_4 = volume < lowest20[1] ? color.orange : iff_3
BColor = volume > highest40[1] ? color.purple : iff_4
src = close
lenrsi = 3
lenupdown = 2
lenroc = 100
updown(s) =>
isEqual = s == s[1]
isGrowing = s > s[1]
ud = 0.0
ud := isEqual ? 0 : isGrowing ? nz(ud[1]) <= 0 ? 1 : nz(ud[1]) + 1 : nz(ud[1]) >= 0 ? -1 : nz(ud[1]) - 1
ud
rsi = ta.rsi(src, lenrsi)
updownrsi = ta.rsi(updown(src), lenupdown)
percentrank = ta.percentrank(ta.roc(src, 1), lenroc)
crsi = math.avg(rsi, updownrsi, percentrank)
ap = hlc3
esa = ta.ema(ap, 10)
d = ta.ema(math.abs(ap - esa), 10)
ci = (ap - esa) / (0.015 * d)
tci = ta.ema(ci, 21)
up = ta.rma(math.max(ta.change(close), 0), 2)
down = ta.rma(-math.min(ta.change(close), 0), 2)
irsi = down == 0 ? 100 : up == 0 ? 0 : 100 - 100 / (1 + up / down)
sig1 = volume < volume[1] and crsi[0] > crsi[1] + 0 and crsi[1] > crsi[2] + 0 and crsi[2] < crsi[3] + 0 and crsi[3] > crsi[4] + 0 and irsi > 95 ? tci > 0 ? 1 : 0 : 0
sig2 = volume < volume[1] and crsi[0] < crsi[1] - 0 and crsi[1] < crsi[2] - 0 and crsi[2] > crsi[3] - 0 and crsi[3] < crsi[4] - 0 and irsi < 5 ? tci < 0 ? 1 : 0 : 0
plotarrow(sig1 == 1 ? -1 : na, colorup=color.new(color.black, 0), colordown=color.new(color.black, 0))
plotarrow(sig2 == 1 ? 1 : na, colorup=color.new(color.black, 0), colordown=color.new(color.black, 0))
alertcondition(sig1 == 1 ? -1 : na, title='Alert V1 SELL Arrow', message='WONNDER SELL ARROW!')
alertcondition(sig2 == 1 ? 1 : na, title='Alert V1 BUY Arrow', message='WONNDER BUY ARROW!')
__________________________
V2 The indicator is suitable for Forex and Binary Options scalping.
Based on VSA Volume + Patterns + Levels.
Alert for arrows (BUY | SELL)
__________________________
_____________
//@version=5
indicator(title='[WONNFX] PROIndiV2 ARROW WONNDER', shorttitle='[WONNFX] PROIndiV2 Arrow!', overlay=true)
highest40 = ta.highest(volume, 40)
low2 = ta.lowest(volume, 2)
lowest20 = ta.lowest(volume, 20)
iff_1 = volume < volume[1] ? color.red : color.black
iff_2 = volume > volume[1] ? color.green : iff_1
iff_3 = volume < low2[1] ? color.gray : iff_2
iff_4 = volume < lowest20[1] ? color.orange : iff_3
BColor = volume > highest40[1] ? color.purple : iff_4
src = close
lenrsi = 3
lenupdown = 2
lenroc = 100
updown(s) =>
isEqual = s == s[1]
isGrowing = s > s[1]
ud = 0.0
ud := isEqual ? 0 : isGrowing ? nz(ud[1]) <= 0 ? 1 : nz(ud[1]) + 1 : nz(ud[1]) >= 0 ? -1 : nz(ud[1]) - 1
ud
rsi = ta.rsi(src, lenrsi)
updownrsi = ta.rsi(updown(src), lenupdown)
percentrank = ta.percentrank(ta.roc(src, 1), lenroc)
crsi = math.avg(rsi, updownrsi, percentrank)
ap = hlc3
esa = ta.ema(ap, 10)
d = ta.ema(math.abs(ap - esa), 10)
ci = (ap - esa) / (0.015 * d)
tci = ta.ema(ci, 21)
up = ta.rma(math.max(ta.change(close), 0), 2)
down = ta.rma(-math.min(ta.change(close), 0), 2)
irsi = down == 0 ? 100 : up == 0 ? 0 : 100 - 100 / (1 + up / down)
sig1 = volume > highest40[1] and crsi[0] > crsi[1] + 0 and crsi[1] > crsi[2] + 0 and crsi[2] < crsi[3] + 0 and crsi[3] > crsi[4] + 0 and irsi > 95 ? tci > 0 ? 1 : 0 : 0
sig2 = volume > highest40[1] and crsi[0] < crsi[1] - 0 and crsi[1] < crsi[2] - 0 and crsi[2] > crsi[3] - 0 and crsi[3] < crsi[4] - 0 and irsi < 5 ? tci < 0 ? 1 : 0 : 0
plotarrow(sig1 == 1 ? -1 : na, colorup=color.new(color.blue, 0), colordown=color.new(color.blue, 0))
plotarrow(sig2 == 1 ? 1 : na, colorup=color.new(color.blue, 0), colordown=color.new(color.blue, 0))
alertcondition(sig1 == 1 ? -1 : na, title='Alert V2 SELL Arrow', message='WONNDER SELL ARROW!')
alertcondition(sig2 == 1 ? 1 : na, title='Alert V2 BUY Arrow', message='WONNDER BUY ARROW!')
__________________________
Free arrow indicator for TradingView.
For Binary Options.
BinaryMT2 nick WONNDER v7 Free
Description:
Signals are based on RSI divergence and ADX divergence
when RSI and ADX diverge, a signal appears.
It is advisable to filter signals with trend indicators.
Entry to the next candle after the signal.
Signals are not drawn after the candle closes.
Alert for arrows CALL / PUT
__________________________
_____________
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © WONNDER
//@version=5
indicator('[WONNFX] BinaryMT2 nick WONNDER v7 Free', overlay=true)
Rlength = input(14, title='RSI Length)')
change = ta.change(close)
gain = change >= 0 ? change : 0.0
loss = change < 0 ? -1 * change : 0.0
avgGain = ta.rma(gain, Rlength)
avgLoss = ta.rma(loss, Rlength)
rs = avgGain / avgLoss
rsi = 100 - 100 / (1 + rs)
len = input.int(14, minval=1, title='DI Length')
lensig = input.int(14, title='ADX Smoothing', minval=1, maxval=50)
up = ta.change(high)
down = -ta.change(low)
plusDM = na(up) ? na : up > down and up > 0 ? up : 0
minusDM = na(down) ? na : down > up and down > 0 ? down : 0
trur = ta.rma(ta.tr, len)
plus = fixnan(100 * ta.rma(plusDM, len) / trur)
minus = fixnan(100 * ta.rma(minusDM, len) / trur)
sum = plus + minus
adx = 100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), lensig)
top = plus < plus[1] and plus[1] > plus[2] and minus > minus[1] or plus < plus[1] and minus > minus[1] and minus[1] < minus[2]
bottom = minus < minus[1] and minus[1] > minus[2] and plus > plus[1] or minus < minus[1] and plus > plus[1] and plus[1] < plus[2]
hiddenbeardiv = top and high < high[1] and rsi > rsi[1]
plotchar(hiddenbeardiv, char='▼', color=color.new(color.red, 0), size=size.tiny, location=location.abovebar)
hiddenbulldiv = bottom and low > low[1] and rsi < rsi[1]
plotchar(hiddenbulldiv, char='▲', color=color.new(color.green, 0), size=size.tiny, location=location.belowbar)
plotchar(hiddenbeardiv, text='PUT', char='', location=location.abovebar)
plotchar(hiddenbulldiv, text='CALL', char='', location=location.belowbar)
alertcondition(hiddenbeardiv, title='on PUT Arrow', message='PUT Arrow')
alertcondition(hiddenbulldiv, title='on CALL Arrow', message='CALL Arrow')
____________________________
For Binary Options and Forex
__________________________________
_____________
//@version=2
study("[WONNFX] BinaryTeam WONNDER V2", overlay = true)
source = close
fastLength = input(12, minval=1), slowLength=input(26,minval=1)
signalLength=input(9,minval=1)
fastMA = ema(source, fastLength)
slowMA = ema(source, slowLength)
macd = fastMA - slowMA
signal = sma(macd, signalLength)
hist = macd - signal
length1 = input(14, minval=1), smoothK = input(1, minval=1), smoothD = input(3, minval=1)
k = sma(stoch(close, high, low, length1), smoothK)
d = sma(k, smoothD)
len = input(4, minval=1, title="Length")
src = input(high, title="Source")
out = ema(src, len)
HIGH = out
len1 = input(4, minval=1, title="Length")
src1 = input(low, title="Source")
out1 = ema(src1, len1)
LOW = out1
HL2 = (HIGH+LOW)/2
len2 = input(21, minval=1, title="Length")
src2 = input(close, title="Source")
out2 = ema(src2, len2)
EMA = out2
body_current_candle = abs(close-open)
body_previous_candle = abs(close[1]-open[1])
highest40 = highest(volume, 40)
low2 = lowest(volume, 2)
lowest20 = lowest(volume, 20)
BColor = iff(volume > highest40[1], purple,
iff(volume < lowest20[1], orange,
iff(volume < low2[1], gray,
iff(volume > volume[1] , green,
iff(volume < volume[1] , red, black)))))
y =volume < volume[1] and close < LOW and open < HL2 and close < EMA and d < 80 and k < 80 and signal > 0 and body_current_candle > body_previous_candle and (close-open) < 0
x =volume < volume[1] and close > HIGH and open > HL2 and close > EMA and d > 20 and k > 20 and signal < 0 and body_current_candle > body_previous_candle and (close-open) > 0
plotchar(x,text="PUT",char="",color=red,location=location.belowbar)
plotchar(y,text="CALL",char="",color=green,location=location.abovebar)
plotarrow(x == 1 ? -1 : na, colorup = red, colordown = red, transp = 50)
plotarrow(y == 1 ? 1 : na, colorup = green, colordown = green, transp = 50)
alertcondition(x == 1 ? -1 : na, title='Alert V1 SELL Arrow', message='WONNDER SELL ARROW!')
alertcondition(y == 1 ? 1 : na, title='Alert V1 BUY Arrow', message='WONNDER BUY ARROW!')
__________________________
The indicator determines Divergence and Convergence at the current candle.
Alert for arrows (BUY | SELL)
__________________________
_____________
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © WONNDER
//@version=2
study("[WONNFX] DivCon Arrow ALERT WONNDER", shorttitle = "[WONNFX] DivCon Arrow!", overlay = true)
length =input(25, title="Bars to look back (Min=10, Max=50", minval=10, maxval=50)
Convergence(ser) =>
conv = 0
for i = 10 to length
ii = -lowestbars(ser, i)
if (low == lowest(i) and ser > lowest(ser, i) and ii >4 and ser < ser[1])
conv := 1
break
conv
Divergence(ser) =>
div = 0
for i = 10 to length
ii = -highestbars(ser, i)
if (high == highest(i) and ser < highest(ser, i) and ii > 4 and ser > ser[1])
div := 1
break
div
vrsi = rsi(close, 14)
fastMA = ema(close, 12)
slowMA = ema(close, 26)
macd = fastMA - slowMA
signal = sma(macd, 9)
deltamacd = macd - signal
moment = mom(close, 10)
Cmfm = ((close-low) - (high-close)) / (high - low)
Cmfv = Cmfm * volume
cmf21 = sma(Cmfv, 21) / sma(volume,21)
ccnt = Convergence(vrsi)
ccnt := ccnt + Convergence(macd)
ccnt := ccnt + Convergence(deltamacd)
ccnt := ccnt + Convergence(moment)
ccnt := ccnt + Convergence(cmf21)
dcnt = -Divergence(vrsi)
dcnt := dcnt - Divergence(macd)
dcnt := dcnt - Divergence(deltamacd)
dcnt := dcnt - Divergence(moment)
dcnt := dcnt - Divergence(cmf21)
plotarrow(ccnt, colorup = lime, colordown = red, transp=30)
plotarrow(dcnt, colorup = lime, colordown = red, transp=30)
alertcondition(ccnt, title='Alert DIV1 Arrow', message='P DIV Arrow')
alertcondition(dcnt, title='Alert DIV2 Arrow', message='C DIV Arrow')
__________________________
Indicator for "scalping". Can be used on Binary Opinons and FX. It is desirable to follow the "trend".
Alert for arrows (BUY | SELL)
__________________________
_____________
//@version=5
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © WONNDER
indicator(title='[WONNFX] Scalp Reversal V1 Arrow WONNDER', shorttitle='[WONNFX] ScalpReversalV1 Arrow!', overlay=true)
len = input.int(14, minval=1, title='DI Length')
lensig = input.int(14, title='Scalp Reversal', minval=1, maxval=50)
up = ta.change(high)
down = -ta.change(low)
plusDM = na(up) ? na : up > down and up > 0 ? up : 0
minusDM = na(down) ? na : down > up and down > 0 ? down : 0
trur = ta.rma(ta.tr, len)
plus = fixnan(100 * ta.rma(plusDM, len) / trur)
minus = fixnan(100 * ta.rma(minusDM, len) / trur)
sum = plus + minus
adx = 100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), lensig)
top = plus < plus[1] and plus[1] > plus[2] and minus > minus[1] or plus < plus[1] and minus > minus[1] and minus[1] < minus[2]
bottom = minus < minus[1] and minus[1] > minus[2] and plus > plus[1] or minus < minus[1] and plus > plus[1] and plus[1] < plus[2]
plotarrow(bottom == 1 ? -1 : na, colorup=color.new(color.red, 0), colordown=color.new(color.red, 0))
plotarrow(top == 1 ? 1 : na, colorup=color.new(color.green, 0), colordown=color.new(color.green, 0))
alertcondition(top == 1 ? -1 : na, title='Alert SELL Arrow', message='WONNDER SELL ARROW!')
alertcondition(bottom == 1 ? 1 : na, title='Alert BUY Arrow', message='WONNDER BUY ARROW!')
)
__________________________
Inside Bar indicator.
With Alerts.
__________________________
_____________
/ This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © WONNDER
//@version=2
study("[WONNFX] Inside Bar Alert WONNDER ",overlay=true)
insidebuybar = close>open and high<=high[1] and low>=low[1]
insidesellbar =close<open and high<=high[1] and low>=low[1]
outsidebuybar = close>open and high>high[1] and low<low[1]
outsidesellbar= close<open and high>high[1] and low<low[1]
plotshape(insidebuybar, title="ib", style=shape.arrowup, location=location.belowbar, size=size.tiny, text="ib", color=green, transp=0, offset=0)
plotshape(insidesellbar,title="ib", style=shape.arrowdown, location=location.abovebar, size=size.tiny, text="ib", color=red, transp=0, offset=0)
alertcondition(insidebuybar, title='Alert insaid1 Arrow', message='insaid Arrow')
alertcondition(insidesellbar, title='Alert insaid2 Arrow', message='insaid Arrow')
[WONNFX] Filter WPROP v55.5.3
__________________________
Filter for Signals
__________________________
_____________
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © WONNDER
//@version=5
indicator("[WONNFX] Filter WPROP v55.5.3", overlay=true)
// Todo: add labels with V1/V2 and trigger value
// Todo: draw horizontal line that represents the trigger value
i_atrDeadband = input.float(defval=.25,title="ATR Deadband",minval=0,maxval=3,step=.05,tooltip="Distance in (ATR) price needs to move beyond trigger condition. A higher value will reduce the signals but signals will be higher quality")
i_lookback_window = input.int(defval=18,title="Lookback (Bars)",minval=3,maxval=50,step=1,tooltip="The higher the number the more lag is introduced to rolling averages")
var v1s = array.new_label()
var v2s = array.new_label()
f_oneBar() =>
[open, high, low, close]
f_twoBar() =>
oo = open[1]
hh = math.max(high,high[1])
ll = math.min(low,low[1])
cc = close
[oo,hh,ll,cc]
f_getAtrSeries(centerEMA, atr, atrMultiplier) =>
volatilityShift = atr * atrMultiplier
above = centerEMA + volatilityShift
below = centerEMA - volatilityShift
[above,below]
f_calcATRDevZone(sourceSeries, centerEMA, atr)=>
// ATR zone allows you to look at any market and classify the zone of price
[atr3Top, atr3Bottom] = f_getAtrSeries(centerEMA, atr, 3)
[atr2Top, atr2Bottom] = f_getAtrSeries(centerEMA, atr, 2)
[atr1Top, atr1Bottom] = f_getAtrSeries(centerEMA, atr, 1)
zone = sourceSeries > atr3Top ? 4 :
sourceSeries > atr2Top ? 3 :
sourceSeries > atr1Top ? 2 :
sourceSeries > centerEMA ? 1 :
sourceSeries > atr1Bottom ? -1 :
sourceSeries > atr2Bottom ? -2 :
sourceSeries > atr3Bottom ? -3 : -4
f_LongTrigger(atr,ema)=>
[o,h,l,c] = f_oneBar()
[oo,hh,ll,cc] = f_twoBar()
// level that needs to be broken with ATR cushion
v1_level = l[1] - (atr[1] * i_atrDeadband)
v2_level = l[2] - (atr[2] * i_atrDeadband)
// determine if the level was broken
v1_break = l < v1_level
v2_break = ll < v2_level
// determine trigger status
v1_trigger = c > c[1]
v2_trigger = cc > c[2]
// determine what zone the trigger occured in
// v1_triggerZone = f_calcATRDevZone(c[1], ema[1], atr[1])
// v2_triggerZone = f_calcATRDevZone(c[2], ema[2], atr[2])
v1_triggerZone = f_calcATRDevZone(c, ema, atr)
v2_triggerZone = f_calcATRDevZone(c, ema, atr)
// determine what zone the break occured in
v1_breakZone = f_calcATRDevZone(l, ema, atr)
v2_breakZone = f_calcATRDevZone(ll, ema, atr)
isV1 = (v1_break and v1_trigger)
isV2 = (v2_break and v2_trigger)
// trigger can't be both a V1 and V2
isV1V2 = (isV1 and isV2)
// calculate return values
trigger = (isV1V2 or isV1) ? c[1] : isV2 ? c[2] : na
triggerZone = (isV1V2 or isV1) ? v1_triggerZone : isV2 ? v2_triggerZone : na
type = (isV1V2 or isV1) ? 1 : isV2 ? 2 : 100
breakZone = (isV1V2 or isV1) ? v1_breakZone : isV2 ? v2_breakZone : na
[trigger,type,triggerZone,breakZone]
f_ShortTrigger(atr,ema)=>
[o,h,l,c] = f_oneBar()
[oo,hh,ll,cc] = f_twoBar()
v1_level = h[1] + (atr[1] * i_atrDeadband)
v2_level = h[2] + (atr[2] * i_atrDeadband)
v1_break = h > v1_level
v2_break = hh > v2_level
v1_trigger = c < c[1]
v2_trigger = cc < c[2]
// v1_triggerZone = f_calcATRDevZone(c[1], ema[1], atr[1])
// v2_triggerZone = f_calcATRDevZone(c[2], ema[2], atr[2])
v1_triggerZone = f_calcATRDevZone(c, ema, atr)
v2_triggerZone = f_calcATRDevZone(c, ema, atr)
v1_breakZone = f_calcATRDevZone(h, ema, atr)
v2_breakZone = f_calcATRDevZone(hh, ema, atr)
isV1 = (v1_break and v1_trigger)
isV2 = (v2_break and v2_trigger)
// trigger can't be both a V1 and V2
isV1V2 = (isV1 and isV2)
// calculate return values
trigger = (isV1V2 or isV1) ? c[1] : isV2 ? c[2] : na
triggerZone = (isV1V2 or isV1) ? v1_triggerZone : isV2 ? v2_triggerZone : na
type = (isV1V2 or isV1) ? 1 : isV2 ? 2 : 100
breakZone = (isV1V2 or isV1) ? v1_breakZone : isV2 ? v2_breakZone : na
[trigger,type,triggerZone,breakZone]
f_atrBands(centerMa, atr, atrMult)=>
volatilityShift = atr * atrMult
above = centerMa + volatilityShift
below = centerMa + volatilityShift
[above,below]
atr = ta.atr(i_lookback_window)
ema = ta.ema(close,i_lookback_window)
closeZone = f_calcATRDevZone(close, ema, atr)
lowZone = f_calcATRDevZone(low, ema, atr)
highZone = f_calcATRDevZone(high, ema, atr)
[l_trigger, l_type, l_triggerZone, l_breakZone] = f_LongTrigger(atr, ema)
[s_trigger, s_type, s_triggerZone, s_breakZone] = f_ShortTrigger(atr, ema)
// solve the scenario where a bar is classified as both a long and short trigger
// note: bar can not be both a long and short trigger
if (l_trigger and s_trigger)
if (l_type < s_type)
s_trigger:= na
s_triggerZone:= na
s_breakZone:=na
if (s_type < l_type)
l_trigger:= na
l_triggerZone:=na
l_breakZone:=na
pltColor = color.new(color.white,100)
if (l_trigger)
s_type:= na
if (l_triggerZone > l_breakZone) and (l_triggerZone < 0) and (lowZone < 0) and (l_triggerZone > -3) and (lowZone > -3)
pltColor:= color.new(color.lime, 10)
else
pltColor:= color.new(color.lime, 10)
if (s_trigger)
l_type:=na
if (s_triggerZone < s_breakZone) and (s_triggerZone > 0) and (highZone > 0) and (s_triggerZone < 3) and (highZone < 3 )
pltColor:= color.new(color.fuchsia, 10)
else
pltColor:= color.new(color.fuchsia, 10)
plotshape(l_trigger, title="L TRIGGER", style=shape.circle, location=location.belowbar, color=pltColor, size=size.tiny)
plotshape(l_type, title="L TYPE", style=shape.circle, location=location.belowbar, color=pltColor, size=size.tiny)
plotshape(l_triggerZone, title="Zone of close", style=shape.circle, location=location.belowbar, color=pltColor, size=size.normal)
plotshape(l_breakZone, title="Zone of trigger", style=shape.circle, location=location.belowbar, color=pltColor, size=size.tiny)
plotshape(s_trigger, title="S TRIGGER", style=shape.circle, location=location.abovebar, color=pltColor, size=size.tiny)
plotshape(s_type, title="S TYPE", style=shape.circle, location=location.abovebar, color=pltColor, size=size.tiny)
plotshape(s_triggerZone, title="Zone of close", style=shape.circle, location=location.abovebar, color=pltColor, size=size.normal)
plotshape(s_breakZone, title="Zone of trigger", style=shape.circle, location=location.abovebar, color=pltColor, size=size.tiny)
plotchar(l_triggerZone,text="!BUYY!", char="W", location=location.belowbar)
plotchar(s_triggerZone,text="!SELL!", char="W", location=location.abovebar)
For those who prefer to use the TradingView trading terminal,
the WONNFX project offers free scripts.
These are useful tools to make market analysis easier.