답변완료
변환 부탁드립니다
//@version=5
indicator("VWAP Bands", overlay=true)
var float vwapsum = na
var float volumesum = na
var float v2sum = na
var float myvwap = na
var float dev = na
var float prevwap = na
showPWAP = input(false, title="Show Previous VWAP Close")
upr1 = input(1.01, title="+1 Projection", group = "Projection One")
dpr1 = input(1.01, title="-1 Projection", group = "Projection One")
upr2 = input(1.62, title="+2 Projection", group = "Projection Two")
dpr2 = input(1.62, title="-2 Projection", group = "Projection Two")
upr3 = input(2.62, title="+3 Projection", group = "Projection Three")
dpr3 = input(2.62, title="-3 Projection", group = "Projection Three")
showPr1 = input(true, title="Show First Projection", group = "Projection One")
showPr2 = input(true, title="Show Second Projection", group = "Projection Two")
showPr3 = input(true, title="Show Third Projection", group = "Projection Three")
start = request.security(syminfo.tickerid, "D", time)
newSession = ta.change(start) ? 1 : 0
vwapsum := newSession ? hl2 * volume : vwapsum[1] + hl2 * volume
volumesum := newSession ? volume : volumesum[1] + volume
v2sum := newSession ? volume * hl2 * hl2 : v2sum[1] + volume * hl2 * hl2
myvwap := vwapsum / volumesum
dev := math.sqrt(math.max(v2sum / volumesum - myvwap * myvwap, 0))
trendcolor = close > myvwap ? color.new(color.lime, 0) : color.new(color.red, 0)
A = plot(myvwap, style=plot.style_line, title="VWAP", color=trendcolor)
trendcolor2 = close > (myvwap + upr1 * dev) ? color.new(color.lime, 75) : color.new(color.red, 75)
U1 = plot(showPr1 ? myvwap + upr1 * dev : na, style=plot.style_line, title="VWAP Upper (1)", color=trendcolor2)
trendcolor3 = close > (myvwap - dpr1 * dev) ? color.new(color.lime, 75) : color.new(color.red, 75)
D1 = plot(showPr1 ? myvwap - dpr1 * dev : na, style=plot.style_line, title="VWAP Lower (1)", color=trendcolor3)
trendcolor4 = close > (myvwap + upr2 * dev) ? color.new(color.lime, 50) : color.new(color.red, 50)
U2 = plot(showPr2 ? myvwap + upr2 * dev : na, style=plot.style_line, title="VWAP Upper (2)", color=trendcolor4)
trendcolor5 = close > (myvwap - dpr2 * dev) ? color.new(color.lime, 50) : color.new(color.red, 50)
D2 = plot(showPr2 ? myvwap - dpr2 * dev : na, style=plot.style_line, title="VWAP Lower (2)", color=trendcolor5)
trendcolor6 = close > (myvwap + upr3 * dev) ? color.new(color.lime, 45) : color.new(color.red, 45)
U3 = plot(showPr3 ? myvwap + upr3 * dev : na, style=plot.style_line, title="VWAP Upper (3)", color=trendcolor6)
trendcolor7 = close > (myvwap - dpr3 * dev) ? color.new(color.lime, 45) : color.new(color.red, 45)
D3 = plot(showPr3 ? myvwap - dpr3 * dev : na, style=plot.style_line, title="VWAP Lower (3)", color=trendcolor7)
prevwap := newSession ? myvwap[1] : prevwap[1]
plot(showPWAP ? prevwap : na, style=plot.style_line, color=close > prevwap ? color.new(color.aqua, 35) : color.new(color.fuchsia, 35), linewidth=1, title="Previous VWAP")
2025-09-29
131
글번호 194389
지표
답변완료
부탁드립니다
수고하십니다
예스로 부탁드립니다
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// Credits to the original s c ript - Range Filter DonovanWall https://www.tradingview.com/s c ript/lut7sBgG-Range-Filter-DW/
// This version is the old version of the Range Filter with less settings to tinker with
//@version=4
study(title="Range Filter - B&S Signals", shorttitle="RF - B&S Signals", overlay=true)
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
//Functions
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
//Range Size Function
rng_size(x, qty, n)=>
// AC = Cond_EMA(abs(x - x[1]), 1, n)
wper = (n*2) - 1
avrng = ema(abs(x - x[1]), n)
AC = ema(avrng, wper)*qty
rng_size = AC
//Range Filter Function
rng_filt(x, rng_, n)=>
r = rng_
var rfilt = array.new_float(2, x)
array.set(rfilt, 1, array.get(rfilt, 0))
if x - r > array.get(rfilt, 1)
array.set(rfilt, 0, x - r)
if x + r < array.get(rfilt, 1)
array.set(rfilt, 0, x + r)
rng_filt1 = array.get(rfilt, 0)
hi_band = rng_filt1 + r
lo_band = rng_filt1 - r
rng_filt = rng_filt1
[hi_band, lo_band, rng_filt]
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
//Inputs
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
//Range Source
rng_src = input(defval=close, type=input.source, title="Swing Source")
//Range Period
rng_per = input(defval=20, minval=1, title="Swing Period")
//Range Size Inputs
rng_qty = input(defval=3.5, minval=0.0000001, title="Swing Multiplier")
//Bar Colors
use_barcolor = input(defval=false, type=input.bool, title="Bar Colors On/Off")
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
//Definitions
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
//Range Filter Values
[h_band, l_band, filt] = rng_filt(rng_src, rng_size(rng_src, rng_qty, rng_per), rng_per)
//Direction Conditions
var fdir = 0.0
fdir := filt > filt[1] ? 1 : filt < filt[1] ? -1 : fdir
upward = fdir==1 ? 1 : 0
downward = fdir==-1 ? 1 : 0
//Trading Condition
longCond = rng_src > filt and rng_src > rng_src[1] and upward > 0 or rng_src > filt and rng_src < rng_src[1] and upward > 0
shortCond = rng_src < filt and rng_src < rng_src[1] and downward > 0 or rng_src < filt and rng_src > rng_src[1] and downward > 0
CondIni = 0
CondIni := longCond ? 1 : shortCond ? -1 : CondIni[1]
longCondition = longCond and CondIni[1] == -1
shortCondition = shortCond and CondIni[1] == 1
//Colors
filt_color = upward ? #05ff9b : downward ? #ff0583 : #cccccc
bar_color = upward and (rng_src > filt) ? (rng_src > rng_src[1] ? #05ff9b : #00b36b) :
downward and (rng_src < filt) ? (rng_src < rng_src[1] ? #ff0583 : #b8005d) : #cccccc
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
//Outputs
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
//Filter Plot
filt_plot = plot(filt, color=filt_color, transp=67, linewidth=3, title="Filter")
//Band Plots
h_band_plot = plot(h_band, color=color.new(#05ff9b, 100), title="High Band")
l_band_plot = plot(l_band, color=color.new(#ff0583, 100), title="Low Band")
//Band Fills
fill(h_band_plot, filt_plot, color=color.new(#00b36b, 92), title="High Band Fill")
fill(l_band_plot, filt_plot, color=color.new(#b8005d, 92), title="Low Band Fill")
//Bar Color
barcolor(use_barcolor ? bar_color : na)
//Plot Buy and Sell Labels
plotshape(longCondition, title = "Buy Signal", text ="BUY", textcolor = color.white, style=shape.labelup, size = size.normal, location=location.belowbar, color = color.new(color.green, 0))
plotshape(shortCondition, title = "Sell Signal", text ="SELL", textcolor = color.white, style=shape.labeldown, size = size.normal, location=location.abovebar, color = color.new(color.red, 0))
//Alerts
alertcondition(longCondition, title="Buy Alert", message = "BUY")
alertcondition(shortCondition, title="Sell Alert", message = "SELL")
2025-09-29
136
글번호 194379
지표