K 線圖型是技術分析的基礎,能直觀呈現價格變動,而技術指標則提供量化的市場趨勢判斷依據。要有效提升交易策略的準確性,必須將 K 線圖型與技術指標結合。本文首先介紹 K 的波動率區間的計算方式,並以 Python 程式碼示範其應用,接著說明如何將 Marubozu K 線型態與波動率區間結合,制定交易策略。此外,文章也探討了趨勢強度指標(TII)的計算方法,以及如何結合 Doji、Engulfing 等 K 線型態與 RSI、布林帶等技術指標,制定反向交易策略,以期能更精準地捕捉市場反轉訊號。
K的波動率區間與技術分析策略
在金融市場的技術分析中,波動率區間是一個重要的工具,用於衡量市場的波動程度並預測價格的變動。K的波動率區間(K’s Volatility Bands)是一種根據統計學原理的技術指標,類別似於布林帶(Bollinger Bands),但在計算方法上有所不同。本篇文章將介紹K的波動率區間的概念、計算方法,並探討如何將其與Marubozu形態結合,形成有效的交易策略。
布林帶(Bollinger Bands)的基礎
布林帶是由John Bollinger開發的一種技術指標,用於衡量市場的波動率。它由三條線組成:中線、上帶和下帶。其中,中線是一段時間內的移動平均線,而上帶和下帶則是根據標準差計算出來的。
標準差的計算
標準差是衡量一組資料離散程度的重要指標。它的計算步驟如下:
- 計算每個資料點與平均值的距離:對於每個資料點,計算它與平均值之間的差值。
- 對距離進行平方:將每個差值平方,以避免負值並強調較大的偏差。
- 計算平方距離的平均值:將所有平方後的差值加總並除以資料點的數量,得到變異數。
- 取變異數的平方根:對變異數取平方根,得到標準差。
數學上,標準差的公式可以表示為:
σ = √(1/n * ∑(x_i - χ)^2)
其中,σ代表標準差,n是資料點的數量,x_i是每個資料點,χ是平均值。
布林帶的計算
布林帶的上帶和下帶是根據移動平均線和標準差計算出來的。通常,上帶是移動平均線加上兩倍的標準差,而下帶是移動平均線減去兩倍的標準差。
K的波動率區間(K’s Volatility Bands)
K的波動率區間的計算方法與布林帶類別似,但有一些關鍵的不同:
- 計算過去一段時間內最高價和最低價的平均值:這作為中線。
- 計算過去一段時間內的最大標準差:用於衡量市場的最大波動程度。
- 上波動率區間 = 中線 + (最大標準差 * 乘數):通常乘數設為2。
- 下波動率區間 = 中線 - (最大標準差 * 乘數):同樣使用相同的乘數。
程式碼實作
# 定義標準差函式
def volatility(data, lookback, close, position):
data = add_column(data, 1)
for i in range(len(data)):
try:
data[i, position] = (data[i - lookback + 1:i + 1, close].std())
except IndexError:
pass
data = delete_row(data, lookback)
return data
def k_volatility_band(data, lookback, multiplier, high, low, close, position):
data = add_column(data, 6)
# 計算中線
for i in range(len(data)):
try:
data[i, position] = max(data[i - lookback + 1:i + 1, high])
data[i, position + 1] = min(data[i - lookback + 1:i + 1, low])
# 繼續完成其他欄位的計算
except IndexError:
pass
# 省略其他程式碼
return data
內容解密:
volatility函式用於計算一段時間內的標準差,反映市場的波動程度。data引數代表輸入的資料集。lookback引數指定回溯的時間視窗。close引數代表收盤價所在的欄位索引。position引數指定存放標準差結果的欄位索引。
k_volatility_band函式用於計算K的波動率區間。- 首先,在資料集中新增欄位以存放計算結果。
- 然後,迴圈遍歷資料集,計算每個時間點的最高價和最低價,以此作為中線的基礎。
- 使用
max和min函式分別找出過去lookback個週期內的最高價和最低價。
結合Marubozu形態的交易策略
Marubozu是一種沒有影線的蠟燭圖形態,表示市場在該段時間內沒有回檔,直接從開盤價到收盤價(或反之)。將Marubozu形態與K的波動率區間結合,可以形成一個強大的交易策略。
當市場價格觸及K的波動率區間的上帶或下帶時,可能預示著市場即將反轉。結合Marubozu形態,可以增加交易訊號的可靠性。
K’s 波動率區間與趨勢強度指標的交易策略分析
K’s 波動率區間是一種技術指標,用於衡量市場價格的波動性,並結合特定的交易策略進行買賣訊號的判斷。本文將深入分析K’s 波動率區間的計算方法、交易策略的制定,以及如何與趨勢強度指標(TII)結合使用,以最佳化交易決策。
K’s 波動率區間的計算
K’s 波動率區間的計算涉及以下步驟:
- 計算移動平均:首先,計算市場價格的移動平均值。
- 計算波動率:接著,計算市場價格的波動率,通常使用歷史資料的最大值或標準差來衡量。
- 計算上下區間:最後,利用移動平均和波動率計算上下區間。
def volatility_bands(data, lookback, close_column, position):
# 計算移動平均
data = ma(data, lookback, close_column, position)
# 計算波動率
for i in range(len(data)):
try:
data[i, position + 1] = max(data[i - lookback + 1:i + 1, close_column]) - min(data[i - lookback + 1:i + 1, close_column])
except ValueError:
pass
# 計算上下區間
data[:, position + 2] = data[:, position] + (multiplier * data[:, position + 1])
data[:, position + 3] = data[:, position] - (multiplier * data[:, position + 1])
return data
內容解密:
ma函式用於計算移動平均。volatility_bands函式中,首先計算了市場價格的波動率,即一段時間內的最高價與最低價之差。- 然後,利用移動平均和波動率計算上下區間,
multiplier是一個用於調整區間寬度的引數。
交易策略的制定
根據K’s 波動率區間的交易策略主要依賴於市場價格與區間中線的相對位置,以及特定的K線形態(如Marubozu)。
def signal(data, open_column, high_column, low_column, close_column, middle_band, buy_column, sell_column):
for i in range(len(data)):
try:
# Bullish setup
if data[i, close_column] > data[i, open_column] and \
data[i, high_column] == data[i, close_column] and \
data[i, low_column] == data[i, open_column] and \
data[i, close_column] < data[i, middle_band]:
data[i + 1, buy_column] = 1
# Bearish setup
elif data[i, close_column] < data[i, open_column] and \
data[i, high_column] == data[i, open_column] and \
data[i, low_column] == data[i, close_column] and \
data[i, close_column] > data[i, middle_band]:
data[i + 1, sell_column] = -1
except IndexError:
pass
return data
內容解密:
- 當市場價格低於中線且出現看漲的Marubozu K線時,生成買入訊號。
- 當市場價格高於中線且出現看跌的Marubozu K線時,生成賣出訊號。
結合趨勢強度指標(TII)
趨勢強度指標(TII)用於衡量趨勢的強度,可以與H Pattern結合使用,以最佳化交易策略。
def trend_intensity_indicator(data, lookback, close_column, position):
# 計算移動平均
data = ma(data, lookback, close_column, position)
# 計算上漲和下跌的偏差
for i in range(len(data)):
if data[i, close_column] > data[i, position]:
data[i, position + 1] = data[i, close_column] - data[i, position]
if data[i, close_column] < data[i, position]:
data[i, position + 2] = data[i, position] - data[i, close_column]
# 計算TII
for i in range(len(data)):
data[i, position + 3] = np.count_nonzero(data[i - lookback + 1:i + 1, position + 1])
data[i, position + 4] = np.count_nonzero(data[i - lookback + 1:i + 1, position + 2])
data[i, position + 5] = ((data[i, position + 3]) / (data[i, position + 3] + data[i, position + 4])) * 100
return data
內容解密:
- TII的計算涉及移動平均、上漲和下跌的偏差,以及一段時間內上漲和下跌的天數。
- 當TII高於50時,表示趨勢較強;低於50時,表示趨勢較弱。
結合K線圖型與技術指標的反向交易策略
本章節將探討結合K線圖型與技術指標的反向交易策略。這些策略的設計理念在於利用特定的K線圖型與技術指標之間的關聯性,來預測市場的反轉訊號。
結合Doji圖型與RSI指標
Doji圖型是一種常見的K線反轉訊號,而RSI(相對強弱指數)指標則是一種衡量市場強弱的技術指標。結合這兩者,可以創造出一種有效的反向交易策略。
策略邏輯
- 當出現看漲Doji圖型且3週期RSI低於20時,產生買入訊號。
- 當出現看跌Doji圖型且3週期RSI高於80時,產生賣出訊號。
程式碼實作
lower_barrier = 20
upper_barrier = 80
def signal(data, open_column, close_column, indicator_column, buy_column, sell_column):
data = add_column(data, 5)
data = rounding(data, 0)
for i in range(len(data)):
try:
# 看漲設定
if data[i, close_column] == data[i, open_column] and \
data[i, indicator_column] < lower_barrier:
data[i + 1, buy_column] = 1
# 看跌設定
elif data[i, close_column] == data[i, open_column] and \
data[i, indicator_column] > upper_barrier:
data[i + 1, sell_column] = -1
except IndexError:
pass
return data
內容解密:
lower_barrier和upper_barrier:定義了RSI的超賣和超買門檻,分別為20和80。signal函式:負責生成交易訊號。函式首先對輸入資料進行處理,新增必要的列並進行四捨五入。- 迴圈遍歷資料:對資料進行迭代檢查每個資料點是否符合交易條件。
- 看漲和看跌訊號的生成:根據Doji圖型和RSI的值決定是否生成買入或賣出訊號。
結合Engulfing圖型與布林帶
Engulfing圖型是一種重要的K線反轉訊號,而布林帶則是一種用於衡量市場波動性的技術指標。結合這兩者,可以創造出另一種有效的反向交易策略。
策略邏輯
- 當出現看漲Engulfing圖型且市場價格低於下布林帶時,產生買入訊號。
- 當出現看跌Engulfing圖型且市場價格高於上布林帶時,產生賣出訊號。
程式碼實作
def signal(data, open_column, close_column, upper_band_column, lower_band_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, 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] and \
data[i, close_column] < data[i, lower_band_column]:
data[i + 1, buy_column] = 1
# 看跌設定
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] and \
data[i, close_column] > data[i, upper_band_column]:
data[i + 1, sell_column] = -1
except IndexError:
pass
return data
內容解密:
signal函式:與前一策略類別似,負責生成交易訊號。- 條件檢查:檢查是否滿足看漲或看跌Engulfing圖型,且市場價格是否相對於布林帶處於適當位置。
- 訊號生成:根據條件檢查結果生成買入或賣出訊號。