平均 K 線圖表藉由平滑價格資料,有效過濾市場雜訊,呈現更清晰的趨勢方向,適合用於趨勢交易策略。與傳統 K 線相比,平均 K 線能減少頻繁的顏色變化,降低交易訊號的誤判,更容易識別主要趨勢。然而,平均 K 線並非真實價格,在盤整市場中,其訊號有效性會降低,且顏色變化可能存在滯後性。文章提供的 Python 程式碼,能協助讀者實作 Heikin-Ashi 轉換,並結合 Doji、Tasuki 等 K 線模式進行交易策略開發。此外,文章也介紹了 K’s Candlesticks 平滑技術,能進一步提升趨勢判斷的準確性。
平均K線圖表(Heikin-Ashi Charts)的特性與應用
平均K線圖表是一種特殊的技術分析工具,它透過平滑價格資料來幫助交易者更好地理解市場趨勢。與傳統的K線圖表相比,平均K線圖表的顏色變化較少,這使得它更容易被解讀。
平均K線圖表的優點
平均K線圖表的最大優點是能夠清晰地顯示市場趨勢。當市場處於上升趨勢時,綠色(看漲)的K線會聚集在一起;當市場處於下降趨勢時,紅色(看跌)的K線也會聚集在一起。這種特性使得平均K線圖表非常適合用於趨勢分析。
圖表對比
圖8-1和圖8-2分別展示了AUDNZD和GBPAUD的平均K線圖表與傳統K線圖表的對比。從圖中可以看出,平均K線圖表能夠更清晰地顯示市場趨勢。
平均K線圖表的限制
儘管平均K線圖表具有許多優點,但它也有一些限制:
- 平均K線的值不是真實的價格,而是經過轉換的。
- 在盤整市場中,平均K線的顏色可能會頻繁變化,這會降低其訊號的有效性。
- 有時,顏色變化可能會滯後,這意味著部分行情可能已經發生後才被檢測到。
建立平均K線圖表
建立平均K線圖表的方法是使用四列陣列的OHLC資料,應用轉換公式,並將結果輸出到陣列的後四列。下面是實作這一功能的函式:
def heikin_ashi(data, open_column, high_column, low_column, close_column, position):
data = add_column(data, 4)
# Heikin-Ashi Open
try:
for i in range(len(data)):
data[i, position] = (data[i - 1, open_column] + data[i - 1, close_column]) / 2
except:
pass
# Heikin-Ashi High
for i in range(len(data)):
data[i, position + 1] = max(data[i, position], data[i, position + 3], data[i, high_column])
# Heikin-Ashi Low
for i in range(len(data)):
data[i, position + 2] = min(data[i, position], data[i, position + 3], data[i, low_column])
# Heikin-Ashi Close
for i in range(len(data)):
data[i, position + 3] = (data[i, open_column] + data[i, high_column] + data[i, low_column] + data[i, close_column]) / 4
return data
內容解密:
data = add_column(data, 4):為資料新增四個新的列,用於儲存Heikin-Ashi的開盤價、最高價、最低價和收盤價。- 第一個迴圈計算Heikin-Ashi的開盤價,使用前一週期的開盤價和收盤價的平均值。
- 第二、三、四個迴圈分別計算Heikin-Ashi的最高價、最低價和收盤價,使用特定的公式進行計算。
在平均K線圖表上檢測特定模式
本章還討論瞭如何在平均K線圖表上檢測特定的模式,如Doji和Tasuki模式。
Doji模式
Doji模式是一種反映市場猶豫不決的模式,其特徵是開盤價和收盤價相等。在平均K線圖表上檢測Doji模式需要根據特定的條件進行判斷。
Tasuki模式
Tasuki模式是一種跟隨趨勢的模式,其特徵是特定的價格排列順序。在平均K線圖表上檢測Tasuki模式同樣需要根據特定的條件進行判斷。
圖表範例
圖8-3和圖8-4展示了在平均K線圖表和傳統K線圖表上檢測到的訊號。可以看出,兩種圖表上的訊號位置基本一致。
縪效評估
表格8-1展示了在不同資產上使用平均K線圖表和Doji模式進行交易的績效評估結果。評估指標包括命中率、利潤因子和風險報酬比等。
繪製雙重K線圖表
下面是繪製雙重K線圖表的函式:
def candlestick_double_plot(data, buy_column, sell_column, window=250):
fig, ax = plt.subplots(2, figsize=(10, 5))
sample = data[-window:, ]
# ...(省略部分程式碼)
內容解密:
fig, ax = plt.subplots(2, figsize=(10, 5)):建立一個包含兩個子圖的圖表。sample = data[-window:, ]:提取最近window個資料點進行繪製。- 後續程式碼用於繪製平均K線圖表和傳統K線圖表,並在圖表中標記買賣訊號。
K線技術分析與應用
在金融市場技術分析中,K線圖是一種重要的工具,用於預測市場走勢和判斷買賣訊號。本文將介紹幾種常見的K線模式及其在不同圖表上的應用,包括Heikin-Ashi和K’s Candlesticks。
Tasuki模式的偵測
Tasuki模式是一種反轉模式,用於預測市場趨勢的變化。在Heikin-Ashi圖表上,Tasuki模式的表現如圖8-6所示。
程式碼範例:Tasuki模式偵測
# Tasuki模式偵測程式碼
def detect_tasuki(data, open_column, high_column, low_column, close_column):
# 判斷Tasuki模式的條件
data = add_column(data, 1)
for i in range(len(data)):
if data[i, open_column] > data[i, close_column] and data[i-1, open_column] < data[i-1, close_column]:
data[i, -1] = 1 # Bullish Tasuki
elif data[i, open_column] < data[i, close_column] and data[i-1, open_column] > data[i-1, close_column]:
data[i, -1] = -1 # Bearish Tasuki
return data
內容解密:
- Tasuki模式條件判斷:該函式根據開盤價和收盤價的相對位置,判斷是否出現Tasuki模式。
- 新增欄位:使用
add_column函式為資料新增一欄,用於儲存Tasuki模式的偵測結果。 - 模式識別:透過比較當前和前一根K線的開盤價和收盤價,確定是否為Tasuki模式,並將結果儲存在新增欄位中。
Euphoria模式的偵測
Euphoria模式是一種反轉模式,其特點是連續三根K線的實體大小遞增。如圖8-7和圖8-8所示,Euphoria模式在不同貨幣對上的表現。
程式碼範例:Euphoria模式偵測
# Euphoria模式偵測程式碼
def detect_euphoria(data, open_column, high_column, low_column, close_column):
data = add_column(data, 1)
for i in range(2, len(data)):
if data[i, close_column] > data[i, open_column] and data[i-1, close_column] > data[i-1, open_column] and data[i-2, close_column] > data[i-2, open_column]:
size_i = data[i, high_column] - data[i, low_column]
size_i_1 = data[i-1, high_column] - data[i-1, low_column]
size_i_2 = data[i-2, high_column] - data[i-2, low_column]
if size_i > size_i_1 and size_i_1 > size_i_2:
data[i, -1] = 1 # Bullish Euphoria
elif data[i, close_column] < data[i, open_column] and data[i-1, close_column] < data[i-1, open_column] and data[i-2, close_column] < data[i-2, open_column]:
size_i = data[i, high_column] - data[i, low_column]
size_i_1 = data[i-1, high_column] - data[i-1, low_column]
size_i_2 = data[i-2, high_column] - data[i-2, low_column]
if size_i > size_i_1 and size_i_1 > size_i_2:
data[i, -1] = -1 # Bearish Euphoria
return data
內容解密:
- Euphoria模式條件:該函式檢查連續三根K線是否為同一方向(看漲或看跌),且實體大小遞增。
- 實體大小比較:透過比較三根K線的最高價和最低價之間的差值,確定是否滿足Euphoria模式的條件。
- 結果儲存:將偵測到的Euphoria模式結果儲存在新增欄位中。
K’s Candlesticks系統
K’s Candlesticks是一種進一步平滑OHLC(開盤、最高、最低、收盤)值的技術,有助於更好地理解基礎趨勢。
K’s Candlesticks計算公式
- K’s開盤價 = (開盤價 + 前一開盤價 + 前兩開盤價) / 3
- K’s最高價 = (最高價 + 前一最高價 + 前兩最高價) / 3
- K’s最低價 = (最低價 + 前一最低價 + 前兩最低價) / 3
- K’s收盤價 = (收盤價 + 前一收盤價 + 前兩收盤價) / 3
程式碼範例:K’s Candlesticks計算
# K's Candlesticks計算程式碼
def k_candlesticks(data, open_column, high_column, low_column, close_column, lookback):
data = add_column(data, 4)
# 平均開盤價
data = ma(data, lookback, open_column, 0)
# 平均最高價
data = ma(data, lookback, high_column, 1)
# 平均最低價
data = ma(data, lookback, low_column, 2)
# 平均收盤價
data = ma(data, lookback, close_column, 3)
return data
內容解密:
- 新增欄位:為資料新增四個欄位,用於儲存K’s Candlesticks的OHLC值。
- 移動平均計算:使用
ma函式計算開盤、最高、最低、收盤價的移動平均值,預設回溯期為3。 - 結果儲存:將計算出的K’s Candlesticks值儲存在新增欄位中。
K線圖表系統與技術分析的進階應用
在技術分析的領域中,不同的K線圖表系統提供了多樣化的價格行為視角,每種系統都有其獨特的優勢和侷限性。接下來的章節將探討K線圖案的偵測以及各種離開技術的應用。
K線圖案的偵測與交易績效分析
本文將重點介紹多種K線圖案的偵測結果及其交易績效。這些圖案包括Doji、Tasuki、Euphoria和Double Trouble等,分別在不同的資產上進行了測試。
Doji 圖案的偵測與交易績效
Doji 圖案是一種重要的反轉訊號,其特點是開盤價與收盤價非常接近。測試結果顯示,Doji 圖案在多種資產上均有不錯的交易績效。
####### Tasuki 圖案的偵測與交易績效
Tasuki 圖案是一種延續趨勢的訊號,其特點是三根K線的排列順序。測試結果顯示,Tasuki 圖案在部分資產上表現出色。
對稱離開技術的應用
對稱離開技術是一種根據關鍵K線的大小來設定目標價位的技術。這種技術透過計算關鍵K線的高低價差,並將其投射到某一端點(取決於是看漲還是看跌模式),來確定目標價位。
看漲目標價位的計算
考慮一個看漲的Engulfing模式,其關鍵K線的開盤價為$100,最高價為$105,最低價為$95,收盤價為$102。理論上的看漲目標價位為($105 - $95) + $105 = $115。
def calculate_bullish_target(open_price, high_price, low_price, close_price):
"""
使用對稱離開技術計算看漲目標價位。
:param open_price: Engulfing K線的開盤價
:param high_price: Engulfing K線的最高價
:param low_price: Engulfing K線的最低價
:param close_price: Engulfing K線的收盤價
:return: 理論上的看漲目標價位
"""
target = (high_price - low_price) + high_price
return target
# 示例用法
open_price = 100
high_price = 105
low_price = 95
close_price = 102
bullish_target = calculate_bullish_target(open_price, high_price, low_price, close_price)
print("看漲目標價位:", bullish_target)
#### 程式碼解析:
calculate_bullish_target函式用於計算看漲目標價位,輸入引數包括Engulfing K線的開盤價、最高價、最低價和收盤價。- 該函式根據對稱離開技術的公式計算目標價位,並傳回結果。
- 示例程式碼展示瞭如何使用該函式計算看漲目標價位。
看跌目標價位的計算
考慮一個看跌的Piercing(Dark Cloud)模式,其關鍵K線的開盤價為$50,最高價為$55,最低價為$45,收盤價為$52。理論上的看跌目標價位為$55 - ($55 - $45) = $45。
def calculate_bearish_target(open_price, high_price, low_price, close_price):
"""
使用對稱離開技術計算看跌目標價位。
:param open_price: Piercing K線的開盤價
:param high_price: Piercing K線的最高價
:param low_price: Piercing K線的最低價
:param close_price: Piercing K線的收盤價
:return: 理論上的看跌目標價位
"""
target = high_price - (high_price - low_price)
return target
# 示例用法
open_price = 50
high_price = 55
low_price = 45
close_price = 52
bearish_target = calculate_bearish_target(open_price, high_price, low_price, close_price)
print("看跌目標價位:", bearish_target)
#### 程式碼解析:
calculate_bearish_target函式用於計算看跌目標價位,輸入引數包括Piercing K線的開盤價、最高價、最低價和收盤價。- 該函式根據對稱離開技術的公式計算目標價位,並傳回結果。
- 示例程式碼展示瞭如何使用該函式計算看跌目標價位。