커뮤니티

수식 부탁드립니다.

프로필 이미지
고도산
2025-11-20 21:09:36
83
글번호 228283
답변완료

수식 변환 부탁드립니다. 미리 감사 드립니다.
//@version=6 indicator("Breakout Boxes [ChartPrime]", overlay = true, max_boxes_count = 500, max_labels_count = 500, calc_bars_count = 5000)
type pivot     float val     int index
type Box     box body     box sell     box buy
var Highs    = pivot.new() var Lows     = pivot.new() var upperBox = Box.new() var lowerBox = Box.new()
// --------------------------------------------------------------------------------------------------------------------} // 📌 𝙐𝙎𝙀𝙍 𝙄𝙉𝙋𝙐𝙏𝙎 // --------------------------------------------------------------------------------------------------------------------{ pivotLen  = input.int(5, "Pivot Detection Length") boxWidth1 = input.int(5, "Upper Box Width", inline = "up")/10, boxUpCol = input.color(#ce1c7b, "", inline = "up") boxWidth2 = input.int(5, "Lower Box Width", inline = "lw")/10, boxDnCol = input.color(#1ed87e, "", inline = "lw")
// --------------------------------------------------------------------------------------------------------------------} // 📌 𝙄𝙉𝘿𝙄𝘾𝘼𝙏𝙊𝙍 𝘾𝘼𝙇𝘾𝙐𝙇𝘼𝙏𝙄𝙊𝙉𝙎 // --------------------------------------------------------------------------------------------------------------------{
ph = ta.pivothigh(pivotLen, pivotLen) pl = ta.pivotlow(pivotLen, pivotLen)
aTr  = ta.atr(200) atr0 = aTr * 0.2 atr1 = aTr * boxWidth1 atr2 = aTr * boxWidth2
// Upper Box Detection if not na(ph)     if math.abs(Highs.val-ph) < atr0         if upperBox.body.get_right() > bar_index-pivotLen             upperBox.buy.set_right(upperBox.body.get_left())             upperBox.buy.set_border_color(color(na))             upperBox.sell.set_right(upperBox.body.get_left())             upperBox.sell.set_border_color(color(na))
            upperBox.body.set_right(upperBox.body.get_left())             upperBox.body.set_border_color(color(na))
        upperBox.body := box.new(Highs.index, Highs.val+atr1, bar_index, Highs.val, bgcolor = color(na), border_color = boxUpCol, text_halign = text.align_right, border_width = 2)
        upperBox.buy := box.new(Highs.index, math.avg(Highs.val+atr1, Highs.val), Highs.index, Highs.val, border_color = boxUpCol, bgcolor = color.new(boxUpCol, 90), text_halign = text.align_left)         upperBox.sell := box.new(Highs.index, math.avg(Highs.val+atr1, Highs.val), Highs.index, Highs.val+atr1, border_color = boxUpCol, bgcolor = color.new(boxUpCol, 90), text_halign = text.align_left)
    Highs.val := ph     Highs.index :=bar_index[pivotLen]
// Lower Box Detection if not na(pl)     if math.abs(Lows.val-pl) < atr0         if lowerBox.body.get_right() > bar_index-pivotLen             lowerBox.buy.set_right(lowerBox.body.get_left())             lowerBox.buy.set_border_color(color(na))             lowerBox.sell.set_right(lowerBox.body.get_left())             lowerBox.sell.set_border_color(color(na))
            lowerBox.body.set_right(lowerBox.body.get_left())             lowerBox.body.set_border_color(color(na))
        lowerBox.body := box.new(Lows.index, Lows.val, bar_index, Lows.val-atr2, bgcolor = color(na), border_color = boxDnCol, text_halign = text.align_right, border_width = 2)
        lowerBox.buy  := box.new(Lows.index, math.avg(Lows.val-atr2, Lows.val), Lows.index, Lows.val-atr2, border_color = boxDnCol, bgcolor = color.new(boxDnCol, 90), text_halign = text.align_left)         lowerBox.sell := box.new(Lows.index, math.avg(Lows.val-atr2, Lows.val), Lows.index, Lows.val, border_color = boxDnCol, bgcolor = color.new(boxDnCol, 90), text_halign = text.align_left)
    Lows.val := pl     Lows.index :=bar_index[pivotLen]
// --------------------------------------------------------------------------------------------------------------------} // 📌 𝙑𝙄𝙎𝙐𝘼𝙇𝙄𝙕𝘼𝙏𝙄𝙊𝙉 // --------------------------------------------------------------------------------------------------------------------{ // Upeer Box if not na(upperBox.body)     Buy = 0.     Sell = 0.     upperBox.body.set_right(bar_index)     for i = 0 to bar_index - (upperBox.body.get_left() - 5)         if close[i] > open[i]             Buy += volume[i]         else             Sell += volume[i]     tot = Buy + Sell
    upperBox.body.set_text("Total " + str.tostring(tot, format.volume))
    size = int((upperBox.body.get_right() - upperBox.body.get_left()))     mid = math.avg(upperBox.body.get_bottom(), upperBox.body.get_top())
    upperBox.buy.set_right(upperBox.body.get_left()+int(size*(Buy/tot)))     upperBox.buy.set_text("+Volume " + str.tostring(Buy/tot*100, format.percent) )
    upperBox.sell.set_right(upperBox.body.get_left()+int(size*(Sell/tot)))     upperBox.sell.set_text("-Volume " + str.tostring(Sell/tot*100, format.percent) )
// Lower Box if not na(lowerBox.body)     Buy = 0.     Sell = 0.     lowerBox.body.set_right(bar_index)     for i = 0 to bar_index - (lowerBox.body.get_left() - 5)         if close[i] > open[i]             Buy += volume[i]         else             Sell += volume[i]
    tot = Buy + Sell
    lowerBox.body.set_text("Total " + str.tostring(tot, format.volume))     size = int((lowerBox.body.get_right() - lowerBox.body.get_left()))     mid = math.avg(lowerBox.body.get_bottom(), lowerBox.body.get_top())
    lowerBox.buy.set_right(lowerBox.body.get_left()+int(size*(Buy/tot)))     lowerBox.buy.set_text("+Volume " + str.tostring(Buy/tot*100, format.percent) )
    lowerBox.sell.set_right(lowerBox.body.get_left()+int(size*(Sell/tot)))     lowerBox.sell.set_text("-Volume " + str.tostring(Sell/tot*100, format.percent) )
// Breakout signals if barstate.isconfirmed     if ta.crossover(close, upperBox.body.get_top())         upperBox := Box.new(na, na, na)         label.new(bar_index, low-aTr, "⯁\nBreakUp", textcolor = boxUpCol, style = label.style_label_up, color = color.new(boxUpCol, 80))
    if ta.crossunder(close, lowerBox.body.get_bottom())         lowerBox := Box.new(na, na, na)         label.new(bar_index, high+aTr, "BreakDn\n⯁", textcolor = boxDnCol, style = label.style_label_down, color = color.new(boxDnCol, 80)) // --------------------------------------------------------------------------------------------------------------------}

지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2025-11-21 14:55:43

안녕하세요 예스스탁입니다. 올려주신 내용은 작성해 보는데 시간이 많이 요구됩니다. 업무상 일정이상 시간이 요구되는 내용은 작성해 드리기 어렵습니다. 도움을 드리지 못해 죄송합니다. 즐거운 하루되세요