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
- 第一根K線為下跌的陰線。
- 第二根K線開盤於前一根K線的收盤價下方,但收盤價位於前一根K線收盤價與開盤價之間。
看跌Piercing Pattern
- 第一根K線為上漲的陽線。
- 第二根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
- 第一根K線為下跌的陰線。
- 第二根K線為上漲的陽線,且其實體完全包覆第一根K線。
看跌Engulfing Pattern
- 第一根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:
# 看漲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
內容解密:
- 函式定義:
signal函式接收歷史資料及欄位索引,傳回帶有買賣訊號的資料。 - 資料擴充:使用
add_column函式為資料集新增五個欄位,以容納額外的運算結果。 - 迴圈遍歷:對資料進行迭代,檢查每個資料點是否符合棄嬰模式的條件。
- 看漲棄嬰條件:
- 當前K線收盤價高於開盤價(陽線)。
- 前一根K線為Doji(開盤與收盤相同)。
- Doji的最高價低於當前K線的最低價,且低於前前一根K線的最低價。
- 前前一根K線為陰線(收盤低於開盤)。
- 看跌棄嬰條件:與看漲條件相反,用於偵測看跌棄嬰模式。
- 訊號標記:當偵測到棄嬰模式時,在下一根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線是否有效突破。
績效評估:
內部上下漲跌模式由於其結構特點,在某些市場條件下可能具有較好的預測能力。交易者應結合其他技術指標與風險管理策略進行綜合運用。