目標設定

更新於 發佈於 閱讀時間約 20 分鐘

//@version=6

indicator('目標設定', overlay = true, max_lines_count = 40)


// 輸入 ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――{

length = input.int(10, 'Trend Length')

target = input.int(0, 'Set Targets')

// }


// VARIABLES ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――{

var bool trend = false

float trend_value = na


//顏色

color up_color = #06b690

color dn_color = color.rgb(182, 112, 6)


// 計算ATR停損和目標

series float atr_value = ta.sma(ta.atr(200), 200) * 0.8


//趨勢方向

series float sma_high = ta.sma(high, length) + atr_value

series float sma_low = ta.sma(low, length) - atr_value

color plot_color = color.new(chart.fg_color, 80)


//管理線條和標籤的 UDT

type TrendTargets

    array<line> lines

    array<label> labels


//初始化UDT

var TrendTargets targets_up = TrendTargets.new(array.new_line(), array.new_label())

var TrendTargets targets_down = TrendTargets.new(array.new_line(), array.new_label())

// }


// 計算――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――{


//交叉確定趨勢

if ta.crossover(close, sma_high) and barstate.isconfirmed

    trend := true

    trend

if ta.crossunder(close, sma_low) and barstate.isconfirmed

    trend := false

    trend


trend_value := switch

    trend => sma_low

    not trend => sma_high


trend_color = trend ? up_color : not trend ? dn_color : na


// 趨勢變化訊號偵測

bool signal_up = ta.change(trend) and not trend[1]

bool signal_down = ta.change(trend) and trend[1]


// 繪製趨勢目標和管理線條/標籤的方法

method draw_targets(TrendTargets targets, bool signal1, bool signal2, bool direction) =>

    float base = direction ? sma_low : sma_high

    float atr_multiplier = atr_value * (direction ? 1 : -1)


// 重置向上和向下目標的計數器

    var int count_up = 0

    var int count_down = 0


    if trend

        count_down := 0

        count_up := count_up + 1

        count_up

    if not trend

        count_down := count_down + 1

        count_up := 0

        count_up


    int count = direction ? count_up : count_down


    if signal1

        float target_len1 = atr_multiplier * (5 + target)

        float target_len2 = atr_multiplier * (10 + target * 2)

        float target_len3 = atr_multiplier * (15 + target * 3)


        // 清除現有的線條和標籤

        for line_i in targets.lines

            int i = targets.lines.indexof(line_i)

            label.delete(targets.labels.get(i))

            line.delete(line_i)


        array.clear(targets.lines)

        array.clear(targets.labels)


        // 為趨勢目標繪製新線

        line stop_loss_line = line.new(bar_index, base, bar_index + 20, base)

        line entry_line = line.new(bar_index, close, bar_index + 20, close)

        line target1_line = line.new(bar_index, close + target_len1, bar_index + 20, close + target_len1)

        line target2_line = line.new(bar_index, close + target_len2, bar_index + 20, close + target_len2)

        line target3_line = line.new(bar_index, close + target_len3, bar_index + 20, close + target_len3)


        //在止損線和入場線之間填充

        linefill.new(stop_loss_line, entry_line, color.new(dn_color, 95))

        linefill.new(entry_line, target3_line, color.new(up_color, 95))


        // 為趨勢目標繪製新標籤

        label stop_loss_label = label.new(bar_index + 20, base, '止損價格: '+'⨷'+ str.tostring(math.round(base, 2)))

        label entry_label = label.new(bar_index + 20, close, str.tostring(math.round(close, 2)))

        label target1_label = label.new(bar_index + 20, close + target_len1, '停利⓵ - ' + str.tostring(math.round(close + target_len1, 2)))

        label target2_label = label.new(bar_index + 20, close + target_len2, '停利⓶ - ' + str.tostring(math.round(close + target_len2, 2)))

        label target3_label = label.new(bar_index + 20, close + target_len3, '停利⓷ - ' + str.tostring(math.round(close + target_len3, 2)))


        //線條和標籤傳送到 UDT

        targets.lines.push(stop_loss_line)

        targets.lines.push(entry_line)

        targets.lines.push(target1_line)

        targets.lines.push(target2_line)

        targets.lines.push(target3_line)


        targets.labels.push(stop_loss_label)

        targets.labels.push(entry_label)

        targets.labels.push(target1_label)

        targets.labels.push(target2_label)

        targets.labels.push(target3_label)


        // 更新標籤和線條的樣式

        for lbl in targets.labels

            int idx = targets.labels.indexof(lbl)

            line line_ref = targets.lines.get(idx)

            lbl.set_style(label.style_label_left)

            lbl.set_color(color.rgb(179, 13, 225, 29))

            lbl.set_textcolor(color.rgb(255, 254, 254))

            line_ref.set_color(#db1e1e)


    if signal2

        // 清除現有的線條和標籤

        for line_i in targets.lines

            int i = targets.lines.indexof(line_i)

            label.delete(targets.labels.get(i))

            line.delete(line_i)


        array.clear(targets.lines)

        array.clear(targets.labels)


    for line_i in targets.lines

        int idx = targets.lines.indexof(line_i)

        label lbl_ref = targets.labels.get(idx)

        label first_label = targets.labels.first()

        line entry_line = targets.lines.get(1)

        label entry_label = targets.labels.get(1)


        // 目標

        if high >= line.get_y2(line_i) and low <= line.get_y2(line_i) and count > 1

            lbl_ref.set_style(label.style_label_left)

            lbl_ref.set_color(chart.fg_color)

            lbl_ref.set_text('   ✔ 達標  ')

            lbl_ref.set_textcolor(color.rgb(172, 9, 9))

            line_i.set_style(line.style_dashed)

            line_i.set_color(plot_color)


        //停損

        if high >= line.get_y2(targets.lines.first()) and low <= line.get_y2(targets.lines.first()) and count > 1

            first_label.set_style(label.style_label_left)

            first_label.set_color(color.rgb(172, 9, 9))

            first_label.set_text('  ✖ 停損 ')

            first_label.set_textcolor(color.rgb(172, 9, 9))

           


        if direction ? trend : not trend

            first_label.set_textcolor(color.rgb(250, 250, 250))

            line_i.set_x2(bar_index + 20)

            targets.lines.first().set_color(dn_color)

           


            label.set_x(targets.labels.get(idx), bar_index + 20)

           

            entry_line.set_style(line.style_solid)

            entry_line.set_color(up_color)

            entry_label.set_text('買進價格: ' + '◉ ' + str.tostring(math.round(line.get_y2(entry_line), 2)))

            entry_label.set_color(#ddb01d)

            entry_label.set_textcolor(#1d80dd)

            // }


// 繪圖―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――{

// CALL 上升和下降趨勢

targets_down.draw_targets(signal_down, signal_up, false)

targets_up.draw_targets(signal_up, signal_down, true)


// 使用趨勢顏色繪製K線

plotcandle(open, high, low, close, title = 'Title', color = trend_color, wickcolor = trend_color, bordercolor = trend_color)


//繪製追蹤停損

p1 = plot(trend ? trend_value : na, style = plot.style_linebr, color = plot_color)

p2 = plot(not trend ? trend_value : na, style = plot.style_linebr, color = plot_color)

p0 = plot(hl2, display = display.none, editable = false)

fill(p1, p0, trend_value, hl2, color.new(chart.fg_color, 90), na)

fill(p2, p0, trend_value, hl2, color.new(chart.fg_color, 90), na)


// 在圖表上繪製訊號

float sigUp = signal_up ? low - atr_value * 2 : na

float sigDn = signal_down ? high + atr_value * 2 : na


plotshape(sigUp, '', shape.triangleup, location.absolute, up_color, size = size.tiny)

plotshape(sigUp, '', shape.triangleup, location.absolute, color.new(up_color, 80), size = size.small)


plotshape(sigDn, '', shape.triangledown, location.absolute, dn_color, size = size.tiny)

plotshape(sigDn, '', shape.triangledown, location.absolute, color.new(dn_color, 80), size = size.small)


// }



留言
avatar-img
留言分享你的想法!
avatar-img
youngchih 的沙龍
1會員
7內容數
~~
你可能也想看
Thumbnail
2025 vocus 推出最受矚目的活動之一——《開箱你的美好生活》,我們跟著創作者一起「開箱」各種故事、景點、餐廳、超值好物⋯⋯甚至那些讓人會心一笑的生活小廢物;這次活動不僅送出了許多獎勵,也反映了「內容有價」——創作不只是分享、紀錄,也能用各種不同形式變現、帶來實際收入。
Thumbnail
2025 vocus 推出最受矚目的活動之一——《開箱你的美好生活》,我們跟著創作者一起「開箱」各種故事、景點、餐廳、超值好物⋯⋯甚至那些讓人會心一笑的生活小廢物;這次活動不僅送出了許多獎勵,也反映了「內容有價」——創作不只是分享、紀錄,也能用各種不同形式變現、帶來實際收入。
Thumbnail
本策略採用ATR(平均真實波幅)技術指標,該指標能夠真實地反映出價格的波動情況,並且可以靈活地調整參數進行進出場操作。 此策略主要是針對看盤的經驗,將策略轉化為程式進行自動化交易,減少人為的操作,即使沒看盤也能自動化的完成交易。
Thumbnail
本策略採用ATR(平均真實波幅)技術指標,該指標能夠真實地反映出價格的波動情況,並且可以靈活地調整參數進行進出場操作。 此策略主要是針對看盤的經驗,將策略轉化為程式進行自動化交易,減少人為的操作,即使沒看盤也能自動化的完成交易。
Thumbnail
本文討論了趨勢交易策略中的停損模式以及使用動向指標和擺動指標進行交易的情況。提出了更合理的追蹤停損方式以及對ATR指標的改良。作者將在接下來進行測試,並歡迎交流。
Thumbnail
本文討論了趨勢交易策略中的停損模式以及使用動向指標和擺動指標進行交易的情況。提出了更合理的追蹤停損方式以及對ATR指標的改良。作者將在接下來進行測試,並歡迎交流。
Thumbnail
一、D5LMB_ATR策略重點 本策略採用ATR(平均真實波幅)技術指標,該指標能夠真實地反映出價格的波動情況,並且可以靈活地調整參數進行進出場操作。
Thumbnail
一、D5LMB_ATR策略重點 本策略採用ATR(平均真實波幅)技術指標,該指標能夠真實地反映出價格的波動情況,並且可以靈活地調整參數進行進出場操作。
Thumbnail
在上一篇文章當中;我們已經順利的,把股價當中所發現的吞噬K線形態。標示,在圖形當中。對我這個圖形極簡偏執狂來說,已經是在滿意得不得了了。但自己知道,許多朋友們,還是喜歡看到習慣的紅綠色來標示;上漲或下跌的方向。
Thumbnail
在上一篇文章當中;我們已經順利的,把股價當中所發現的吞噬K線形態。標示,在圖形當中。對我這個圖形極簡偏執狂來說,已經是在滿意得不得了了。但自己知道,許多朋友們,還是喜歡看到習慣的紅綠色來標示;上漲或下跌的方向。
Thumbnail
在軟體工程中強調架構的延展性、維護性及重用性,將運算邏輯先寫成函式就是為了提高重用及維護,軟體界在這樣的發展下,開發出許多通用的套件,使得許多程式開發者可以利用套件來提升開發速度及穩定度,就如同現在的微波食品,想要煮一桌菜,不用自己從買食材開始、處理食材、料理食物、擺盤上桌⋯⋯等步驟,只需將買來的調
Thumbnail
在軟體工程中強調架構的延展性、維護性及重用性,將運算邏輯先寫成函式就是為了提高重用及維護,軟體界在這樣的發展下,開發出許多通用的套件,使得許多程式開發者可以利用套件來提升開發速度及穩定度,就如同現在的微波食品,想要煮一桌菜,不用自己從買食材開始、處理食材、料理食物、擺盤上桌⋯⋯等步驟,只需將買來的調
Thumbnail
上次我們實作完macd之後,大家是不是覺得少了指標 沒錯【指標】這種東西要顯示到大圖上面才能更容易判斷出如何更好的開單時機 通常我們用macd開單 是用到金叉跟死叉 1. 金叉就是macd的柱狀圖從紅去轉綠色的時候開多 2. 死叉就是macd的柱狀圖從綠色轉紅色的時候開空 我們先從金叉開始做起 st
Thumbnail
上次我們實作完macd之後,大家是不是覺得少了指標 沒錯【指標】這種東西要顯示到大圖上面才能更容易判斷出如何更好的開單時機 通常我們用macd開單 是用到金叉跟死叉 1. 金叉就是macd的柱狀圖從紅去轉綠色的時候開多 2. 死叉就是macd的柱狀圖從綠色轉紅色的時候開空 我們先從金叉開始做起 st
Thumbnail
加入我們ASC 的 Discore: https://discord.gg/a4C57cVR6B 接續著上次macd完成後我們要對腳本去做判斷式 判斷式就是當參數條件達成之後,所會發生的事件 我們平常看到的macd是在十字交叉的時候會有顏色的轉變像: 上升的時候變成綠色 下降的時候變成紅色 那我們的
Thumbnail
加入我們ASC 的 Discore: https://discord.gg/a4C57cVR6B 接續著上次macd完成後我們要對腳本去做判斷式 判斷式就是當參數條件達成之後,所會發生的事件 我們平常看到的macd是在十字交叉的時候會有顏色的轉變像: 上升的時候變成綠色 下降的時候變成紅色 那我們的
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News