답변완료
지표식 부탁드립니다
지표식 변환 부탁합니다. 미리 감사드립니다.
//@version=6
indicator('Trendlines with Breaks', overlay = true)
length = input.int(14)
k = input.float(1., 'Slope', minval = 0, step = .1)
method = input.string('Atr', 'Slope Calculation Method', options = ['Atr', 'Stdev', 'Linreg'])
show = input(false, 'Show Only Confirmed Breakouts')
//----
upper = 0.
lower = 0.
slope_ph = 0.
slope_pl = 0.
src = close
n = bar_index
//----
ph = ta.pivothigh(length, length)
pl = ta.pivotlow(length, length)
slope = switch method
'Atr' => ta.atr(length) / length * k
'Stdev' => ta.stdev(src, length) / length * k
'Linreg' => math.abs(ta.sma(src * bar_index, length) - ta.sma(src, length) * ta.sma(bar_index, length)) / ta.variance(n, length) / 2 * k
slope_ph := bool(ph) ? slope : slope_ph[1]
slope_pl := bool(pl) ? slope : slope_pl[1]
upper := bool(ph) ? ph : upper[1] - slope_ph
lower := bool(pl) ? pl : lower[1] + slope_pl
//----
single_upper = 0
single_lower = 0
single_upper := src[length] > upper ? 0 : bool(ph) ? 1 : single_upper[1]
single_lower := src[length] < lower ? 0 : bool(pl) ? 1 : single_lower[1]
//upper_breakout = single_upper[1]==1 and src[length] > upper and (show ? src > src[length] : 1)
//lower_breakout = single_lower[1]==1 and src[length] < lower and (show ? src < src[length] : 1)
upper_breakout = bool(single_upper[1]) and src[length] > upper and (show ? src > src[length] : true) // my modify
lower_breakout = bool(single_lower[1]) and src[length] < lower and (show ? src < src[length] : true) // my modify
plotshape(upper_breakout ? low[length] : na, 'Upper Break', shape.labelup, location.absolute, #ef5350, -length, text = 'B↑', textcolor = color.white, size = size.tiny)
plotshape(lower_breakout ? high[length] : na, 'Lower Break', shape.labeldown, location.absolute, #26a69a, -length, text = 'B↓', textcolor = color.white, size = size.tiny)
//----
var line up_l = na
var line dn_l = na
var label recent_up_break = na
var label recent_dn_break = na
if bool(ph[1]) // my modify
line.delete(up_l[1])
label.delete(recent_up_break[1])
up_l := line.new(n - length - 1, ph[1], n - length, upper, color = #ef5350, extend = extend.right, style = line.style_dashed)
up_l
if bool(pl[1]) // my modify
line.delete(dn_l[1])
label.delete(recent_dn_break[1])
dn_l := line.new(n - length - 1, pl[1], n - length, lower, color = #26a69a, extend = extend.right, style = line.style_dashed)
dn_l
if ta.crossover(src, upper - slope_ph * length)
label.delete(recent_up_break[1])
recent_up_break := label.new(n, low, 'B', color = #ef5350, textcolor = color.white, style = label.style_label_up, size = size.small)
recent_up_break
if ta.crossunder(src, lower + slope_pl * length)
label.delete(recent_dn_break[1])
recent_dn_break := label.new(n, high, 'B', color = #26a69a, textcolor = color.white, style = label.style_label_down, size = size.small)
recent_dn_break
//----
plot(upper, 'Upper', color = bool(ph) ? na : #ef5350, offset = -length)
plot(lower, 'Lower', color = bool(pl) ? na : #26a69a, offset = -length)
alertcondition(ta.crossover(src, upper - slope_ph * length), 'Upper Breakout', 'Price broke upper trendline')
alertcondition(ta.crossunder(src, lower + slope_pl * length), 'Lower Breakout', 'Price broke lower trendline')
2025-05-28
286
글번호 191232
지표
답변완료
수식 부탁드립니다
지표식 부탁드립니다.
1.
//@version=5
indicator("DC", shorttitle="DC", overlay=true)
length = input.int(10, title="Donchian Period", minval=1)
offset = input.int(5, title="Offset")
// Lvels
upper = ta.highest(high, length)
lower = ta.lowest(low, length)
basis = (upper + lower) / 2
// Plot channels
plot(basis, "Basis", color=color.orange, offset=offset)
p1 = plot(upper, "Upper", color=color.blue, offset=offset)
p2 = plot(lower, "Lower", color=color.blue, offset=offset)
// Trend logic
var int trend = 0
trend := close > upper[1] ? 1 : close < lower[1] ? -1 : trend[1]
trendChangeUp = trend == 1 and trend[1] != 1
trendChangeDown = trend == -1 and trend[1] != -1
// Plot breakout arrows
plotshape(trendChangeUp, title="Breakout Up", location=location.belowbar, color=color.green, style=shape.labelup, size=size.tiny, text="BUY", textcolor=color.new(color.white, 0))
plotshape(trendChangeDown, title="Breakout Down", location=location.abovebar, color=color.red, style=shape.labeldown, size=size.tiny, text="SELL", textcolor=color.new(color.white, 0))
// Fill between upper and lower with trend-based color
fillColor = trend == 1 ? color.new(color.green, 85) : trend == -1 ? color.new(color.red, 85) : color.new(color.gray, 90)
fill(p1, p2, color=fillColor, title="Trend Fill")
2.
//@version=4
study("BOX", overlay=true, shorttitle="BOX")
// 사용자 입력: 박스 길이 설정
boxp = input(5, "BOX LENGTH")
// 박스 상단 및 하단 계산
LL = lowest(low, boxp)
k1 = highest(high, boxp)
k2 = highest(high, boxp - 1)
k3 = highest(high, boxp - 2)
NH = valuewhen(high > k1[1], high, 0)
box1 = k3 < k2
TopBox = valuewhen(barssince(high > k1[1]) == boxp - 2 and box1, NH, 0)
BottomBox = valuewhen(barssince(high > k1[1]) == boxp - 2 and box1, LL, 0)
// 박스 상단 및 하단 플로팅
topPlot = plot(TopBox, linewidth=3, color=color.green, title="Top Box")
bottomPlot = plot(BottomBox, linewidth=3, color=color.red, title="Bottom Box")
// 박스 내부 영역 채우기
fill(topPlot, bottomPlot, color=color.new(color.blue, 90), title="Box Fill")
// 봉의 위치에 따른 색상 지정
insideBox = close >= BottomBox and close <= TopBox
aboveBox = close > TopBox
belowBox = close < BottomBox
barcolor(insideBox ? color.gray : na)
barcolor(aboveBox ? color.green : na)
barcolor(belowBox ? color.red : na)
2025-05-28
259
글번호 191229
지표