//@version=6
indicator('階梯交易線', overlay = true)
// 變數初始化
var float ls = 1.0 // 初始化變數 ls,表示持有的交易信號,初始值為1(表示多頭)-1(表示空頭)0盤整
var float se = 0.0 // 初始化賣出價格 se,初始值為 na(未定義)
var float le = 0.0 // 初始化買入價格 le,初始值為 na(未定義)
// 計算最高和最低
bar_len = input(25,"len")
time_len =input(4,"len")
highestHigh = ta.highest(high, bar_len) // 計算過去20-30根K線的最高價
lowestLow = ta.lowest(low,bar_len) // 計算過去20-30根K線的最低價
// 判斷當前高點是否為20-30天內的最高點
if (high == highestHigh)
ls := 1 // 如果是最高點,設置買入信號為1
le := math.min(low, low[time_len]) // 設置買入價格為最近的最低價
// 判斷當前低點是否為30天內的最低點
if (low == lowestLow)
ls := -1 // 如果是最低點,設置賣出信號為-1
se := math.max(high, high[time_len]) // 設置賣出價格為最近的最高價
// 如果同時是最高和最低,則不進行交易
if (high == highestHigh and low == lowestLow)
ls := 0 // 設置信號為0,表示不進行任何交易
// 交易條件檢查
if (ls == 1 and close < le)
ls := 0 // 如果持有多頭且當前收盤價低於買入價格,則平倉
if (ls == -1 and close > se)
ls := 0 // 如果持有空頭且當前收盤價高於賣出價格,則平倉
// 定義顏色條件
Color1 =ls == 1 ? color.red :ls == -1 ? color.green : color.blue
// 繪圖
//plot(ls == 1 ? le : na, color = color.green, title = 'Buy Price', linewidth = 2, style =plot.style_linebr)
//plot(ls == -1 ? se : na, color = color.red, title = 'Sell Price', linewidth = 2, style =plot.style_linebr)
plot(ls == 1 ? le :ls == -1 ? se:close , color=Color1, title=" Line", linewidth=2,style = plot.style_linebr)
//
buySignal = ls == 1 and ls[1] == 0
sellSignal = ls <= 0 and ls[1] == 1
shortSignal = ls == -1 and ls[1] == 0
plotshape( buySignal ? le :na,style =shape.labelup,location =location.belowbar ,color=Color1,text = "買",textcolor = color.white )
plotshape( sellSignal ? se:na,style =shape.labelup,location =location.belowbar ,color=Color1,text = "賣" ,textcolor = color.white)
//plotshape( shortSignal ? se:na,style =shape.labelup,location =location.belowbar ,color=Color1,text = "空" ,textcolor = color.white)
// 定義條件
Signal =ls == 1 ? le :ls == -1? se:na
// 取得狀態文字
stateText = ls == 1 ? "⇧多" : ls == -1 ? "⇩空" : "盤整"
// 顯示多空的標籤
var label1 = label.new(bar_index,0, style=label.style_label_left, size=size.small)
// 更新標籤位置和內容
label.set_xy(label1,bar_index+1, close)
label.set_text(label1, str.tostring(close,format.mintick)+" "+stateText)
label.set_color(label1,Color1)
階梯交易
這種指標的優點在於它能夠幫助交易者識別價格的關鍵轉折點,並且能夠提供明確的買賣信號。
在上升趨勢中,前一低點的反轉位置通常會提供強大的支撐,階梯線作為買入信號,當價格靠近上升階梯線並再次出現紅K線時,可以考慮進場。停損點可設在進場價格下方的一個固定百分比或階梯線處。在經歷一波上漲後,若跌破階梯線,則是一個理想的賣出時機。
許多指標的缺陷,往往都是在盤整階段頻繁交易,不但損失手續費,連帶停損損失,造成勝率與獲利的減少。因此,在使用階梯線時,最好再搭配震盪指標,以求最佳的進出場點。