K 線圖是技術分析的重要工具,透過觀察 K 線組合形態,可以預測市場趨勢反轉的可能性。本文介紹了幾種常見和罕見的 K 線反轉模式,包括 Piercing Pattern 和 Engulfing Pattern,以及 Abandoned Baby、Spinning Top 和 Inside Up/Down 等特殊型態。這些模式的判斷邏輯各有不同,程式碼實作也需根據其定義進行調整。理解這些模式的形成原理和應用條件,有助於交易者更準確地判斷市場走勢,並制定相應的交易策略。尤其 Abandoned Baby 和 Spinning Top 模式在實務上的應用價值,更需要交易者結合其他技術指標和市場環境進行綜合判斷,才能提高交易勝率。

K線技術分析模式:Piercing Pattern 與 Engulfing Pattern

在技術分析的領域中,K線圖形提供了豐富的市場動態資訊。投資者透過特定的K線組合來預測市場走勢,而Piercing Pattern和Engulfing Pattern是兩種常見且重要的反轉訊號。本文將探討這兩種K線模式的定義、邏輯及其在程式碼中的實作。

Piercing Pattern

Piercing Pattern是一種由兩根K線組成的反轉模式。它分為看漲和看跌兩種形態。

看漲Piercing Pattern

  1. 第一根K線為下跌的陰線。
  2. 第二根K線開盤於前一根K線的收盤價下方,但收盤價位於前一根K線收盤價與開盤價之間。

看跌Piercing Pattern

  1. 第一根K線為上漲的陽線。
  2. 第二根K線開盤於前一根K線的收盤價上方,但收盤價位於前一根K線收盤價與開盤價之間。

程式碼實作

def signal(data, open_column, close_column, buy_column, sell_column):
    data = add_column(data, 5)
    for i in range(len(data)):
        try:
            # 看漲Piercing Pattern
            if data[i, close_column] > data[i, open_column] and \
               data[i, close_column] < data[i - 1, open_column] and \
               data[i, close_column] > data[i - 1, close_column] and \
               data[i, open_column] < data[i - 1, close_column] and \
               data[i - 1, close_column] < data[i - 1, open_column] and \
               data[i - 2, close_column] < data[i - 2, open_column]:
                data[i + 1, buy_column] = 1
            # 看跌Piercing Pattern
            elif data[i, close_column] < data[i, open_column] and \
                 data[i, close_column] > data[i - 1, open_column] and \
                 data[i, close_column] < data[i - 1, close_column] and \
                 data[i, open_column] > data[i - 1, close_column] and \
                 data[i - 1, close_column] > data[i - 1, open_column] and \
                 data[i - 2, close_column] > data[i - 2, open_column]:
                data[i + 1, sell_column] = -1
        except IndexError:
            pass
    return data

內容解密:

  • data = add_column(data, 5):為資料新增5列以儲存訊號和其他必要資料。
  • for i in range(len(data)):遍歷資料中的每一行。
  • try-except區塊:處理可能出現的IndexError,避免程式當機。
  • 看漲和看跌條件判斷:根據Piercing Pattern的定義,檢查是否滿足條件。若滿足,則在下一行對應的買入或賣出欄位標記訊號(1代表買入,-1代表賣出)。

Engulfing Pattern

Engulfing Pattern同樣是一種由兩根K線組成的反轉模式,包括看漲和看跌兩種形態。

看漲Engulfing Pattern

  1. 第一根K線為下跌的陰線。
  2. 第二根K線為上漲的陽線,且其實體完全包覆第一根K線。

看跌Engulfing Pattern

  1. 第一根K線為上漲的陽線。
  2. 第二根K線為下跌的陰線,且其實體完全包覆第一根K線。

程式碼實作

def signal(data, open_column, close_column, buy_column, sell_column):
    data = add_column(data, 5)
    for i in range(len(data)):
        try:
            # 看漲Engulfing Pattern
            if data[i, close_column] > data[i, open_column] and \
               data[i, open_column] < data[i - 1, close_column] and \
               data[i, close_column] > data[i - 1, open_column] and \
               data[i - 1, close_column] < data[i - 1, open_column] and \
               data[i - 2, close_column] < data[i - 2, open_column]:
                data[i + 1, buy_column] = 1
            # 看跌Engulfing Pattern
            elif data[i, close_column] < data[i, open_column] and \
                 data[i, open_column] > data[i - 1, close_column] and \
                 data[i, close_column] < data[i - 1, open_column] and \
                 data[i - 1, close_column] > data[i - 1, open_column] and \
                 data[i - 2, close_column] > data[i - 2, open_column]:
                data[i + 1, sell_column] = -1
        except IndexError:
            pass
    return data

內容解密:

  • 與Piercing Pattern的程式碼邏輯相似,但條件判斷不同。
  • 看漲Engulfing Pattern要求第二根K線的開盤價低於第一根K線的收盤價,且收盤價高於第一根K線的開盤價。
  • 看跌Engulfing Pattern要求第二根K線的開盤價高於第一根K線的收盤價,且收盤價低於第一根K線的開盤價。

K線型態分析:罕見與實用模式解析

在金融市場的技術分析中,K線型態提供了重要的市場情緒與未來走勢的線索。本文將探討幾種特殊的K線型態,包括罕見的「棄嬰(Abandoned Baby)」模式、「紡錘頂(Spinning Top)」模式,以及具有實用價值的「內部上下漲跌(Inside Up/Down)」模式。這些型態不僅揭示了市場參與者的心理變化,也為交易者提供了潛在的交易機會。

棄嬰(Abandoned Baby)模式

棄嬰模式是一種極為罕見的三K線反轉型態,由一根強勢K線、一根Doji(十字星)以及另一根與第一根相反方向的K線組成。該模式的特點是中間的Doji與前後兩根K線之間存在價格跳空,且其影線不與前後K線的影線重疊。

程式碼實作:棄嬰模式訊號偵測

def signal(data, open_column, high_column, low_column, close_column, buy_column, sell_column):
    data = add_column(data, 5)
    for i in range(len(data)):
        try:
            # 偵測看漲棄嬰模式
            if data[i, close_column] > data[i, open_column] and \
               data[i - 1, close_column] == data[i - 1, open_column] and \
               data[i - 1, high_column] < data[i, low_column] and \
               data[i - 1, high_column] < data[i - 2, low_column] and \
               data[i - 2, close_column] < data[i - 2, open_column]:
                data[i + 1, buy_column] = 1
            # 偵測看跌棄嬰模式
            elif data[i, close_column] < data[i, open_column] and \
                 data[i - 1, close_column] == data[i - 1, open_column] and \
                 data[i - 1, low_column] > data[i, high_column] and \
                 data[i - 1, low_column] > data[i - 2, high_column] and \
                 data[i - 2, close_column] > data[i - 2, open_column]:
                data[i + 1, sell_column] = -1
        except IndexError:
            pass
    return data

內容解密:

  1. 函式定義signal函式接收歷史資料及欄位索引,傳回帶有買賣訊號的資料。
  2. 資料擴充:使用add_column函式為資料集新增五個欄位,以容納額外的運算結果。
  3. 迴圈遍歷:對資料進行迭代,檢查每個資料點是否符合棄嬰模式的條件。
  4. 看漲棄嬰條件
    • 當前K線收盤價高於開盤價(陽線)。
    • 前一根K線為Doji(開盤與收盤相同)。
    • Doji的最高價低於當前K線的最低價,且低於前前一根K線的最低價。
    • 前前一根K線為陰線(收盤低於開盤)。
  5. 看跌棄嬰條件:與看漲條件相反,用於偵測看跌棄嬰模式。
  6. 訊號標記:當偵測到棄嬰模式時,在下一根K線對應的買賣欄位標記訊號(1代表買入,-1代表賣出)。

由於棄嬰模式極為罕見,實務上難以收集足夠樣本進行績效評估,因此被視為一種理論上理想但實際應用價值有限的型態。

紡錘頂(Spinning Top)模式

紡錘頂模式是一種三K線反轉型態,其特徵是中間的K線具有小實體與長影線,表明市場多空雙方存在激烈爭奪。該模式比Doji更常見,且預示著市場波動性增加。

程式碼實作:紡錘頂模式訊號偵測

def signal(data, open_column, high_column, low_column, close_column, buy_column, sell_column):
    body = 0.02  # 定義實體閾值
    wick = 0.05  # 定義影線閾值
    data = add_column(data, 5)
    for i in range(len(data)):
        try:
            # 看漲紡錘頂
            if data[i, close_column] - data[i, open_column] > body and \
               data[i - 1, high_column] - data[i - 1, close_column] >= wick and \
               data[i - 1, open_column] - data[i - 1, low_column] >= wick and \
               data[i - 1, close_column] - data[i - 1, open_column] < body and \
               data[i - 1, close_column] > data[i - 1, open_column] and \
               data[i - 2, close_column] < data[i - 2, open_column] and \
               data[i - 2, open_column] - data[i - 2, close_column] > body:
                data[i + 1, buy_column] = 1
            # 看跌紡錘頂
            elif data[i, open_column] - data[i, close_column] > body and \
                 data[i - 1, high_column] - data[i - 1, open_column] >= wick and \
                 data[i - 1, close_column] - data[i - 1, low_column] >= wick and \
                 data[i - 1, open_column] - data[i - 1, close_column] < body and \
                 data[i - 1, close_column] < data[i - 1, open_column] and \
                 data[i - 2, close_column] > data[i - 2, open_column] and \
                 data[i - 2, close_column] - data[i - 2, open_column] > body:
                data[i + 1, sell_column] = -1
        except IndexError:
            pass
    return data

圖表示例:

此圖示展示了看漲紡錘頂模式的形成過程。

績效分析:

根據歷史資料測試,紡錘頂模式在不同資產上的表現差異較大。例如,在GBPUSD上,該模式表現較佳(勝率48.79%,利潤因子1.14),而在ETHUSD上則表現較差(勝率38.37%,利潤因子0.66)。

內部上下漲跌(Inside Up/Down)模式

內部上下漲跌模式是一種三K線反轉型態,第二根K線的實體被第一根K線的實體完全包含,第三根K線則突破第一根K線的開盤價,從而確認趨勢反轉。

圖表示例:

@startuml
skinparam backgroundColor #FEFEFE
skinparam componentStyle rectangle

title K線圖技術分析反轉形態程式碼實作

package "資料視覺化流程" {
    package "資料準備" {
        component [資料載入] as load
        component [資料清洗] as clean
        component [資料轉換] as transform
    }

    package "圖表類型" {
        component [折線圖 Line] as line
        component [長條圖 Bar] as bar
        component [散佈圖 Scatter] as scatter
        component [熱力圖 Heatmap] as heatmap
    }

    package "美化輸出" {
        component [樣式設定] as style
        component [標籤註解] as label
        component [匯出儲存] as export
    }
}

load --> clean --> transform
transform --> line
transform --> bar
transform --> scatter
transform --> heatmap
line --> style --> export
bar --> label --> export

note right of scatter
  探索變數關係
  發現異常值
end note

@enduml

程式碼實作:內部上下漲跌模式訊號偵測

此部分程式碼需根據具體條件編寫,包括判斷第二根K線是否被第一根完全包含,以及第三根K線是否有效突破。

績效評估:

內部上下漲跌模式由於其結構特點,在某些市場條件下可能具有較好的預測能力。交易者應結合其他技術指標與風險管理策略進行綜合運用。