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. 計算每個資料點與平均值的距離:對於每個資料點,計算它與平均值之間的差值。
  2. 對距離進行平方:將每個差值平方,以避免負值並強調較大的偏差。
  3. 計算平方距離的平均值:將所有平方後的差值加總並除以資料點的數量,得到變異數。
  4. 取變異數的平方根:對變異數取平方根,得到標準差。

數學上,標準差的公式可以表示為:

σ = √(1/n * ∑(x_i - χ)^2)

其中,σ代表標準差,n是資料點的數量,x_i是每個資料點,χ是平均值。

布林帶的計算

布林帶的上帶和下帶是根據移動平均線和標準差計算出來的。通常,上帶是移動平均線加上兩倍的標準差,而下帶是移動平均線減去兩倍的標準差。

K的波動率區間(K’s Volatility Bands)

K的波動率區間的計算方法與布林帶類別似,但有一些關鍵的不同:

  1. 計算過去一段時間內最高價和最低價的平均值:這作為中線。
  2. 計算過去一段時間內的最大標準差:用於衡量市場的最大波動程度。
  3. 上波動率區間 = 中線 + (最大標準差 * 乘數):通常乘數設為2。
  4. 下波動率區間 = 中線 - (最大標準差 * 乘數):同樣使用相同的乘數。

程式碼實作

# 定義標準差函式
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

內容解密:

  1. volatility函式用於計算一段時間內的標準差,反映市場的波動程度。

    • data引數代表輸入的資料集。
    • lookback引數指定回溯的時間視窗。
    • close引數代表收盤價所在的欄位索引。
    • position引數指定存放標準差結果的欄位索引。
  2. k_volatility_band函式用於計算K的波動率區間。

    • 首先,在資料集中新增欄位以存放計算結果。
    • 然後,迴圈遍歷資料集,計算每個時間點的最高價和最低價,以此作為中線的基礎。
    • 使用maxmin函式分別找出過去lookback個週期內的最高價和最低價。

結合Marubozu形態的交易策略

Marubozu是一種沒有影線的蠟燭圖形態,表示市場在該段時間內沒有回檔,直接從開盤價到收盤價(或反之)。將Marubozu形態與K的波動率區間結合,可以形成一個強大的交易策略。

當市場價格觸及K的波動率區間的上帶或下帶時,可能預示著市場即將反轉。結合Marubozu形態,可以增加交易訊號的可靠性。

K’s 波動率區間與趨勢強度指標的交易策略分析

K’s 波動率區間是一種技術指標,用於衡量市場價格的波動性,並結合特定的交易策略進行買賣訊號的判斷。本文將深入分析K’s 波動率區間的計算方法、交易策略的制定,以及如何與趨勢強度指標(TII)結合使用,以最佳化交易決策。

K’s 波動率區間的計算

K’s 波動率區間的計算涉及以下步驟:

  1. 計算移動平均:首先,計算市場價格的移動平均值。
  2. 計算波動率:接著,計算市場價格的波動率,通常使用歷史資料的最大值或標準差來衡量。
  3. 計算上下區間:最後,利用移動平均和波動率計算上下區間。
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

內容解密:

  1. lower_barrierupper_barrier:定義了RSI的超賣和超買門檻,分別為20和80。
  2. signal 函式:負責生成交易訊號。函式首先對輸入資料進行處理,新增必要的列並進行四捨五入。
  3. 迴圈遍歷資料:對資料進行迭代檢查每個資料點是否符合交易條件。
  4. 看漲和看跌訊號的生成:根據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

內容解密:

  1. signal 函式:與前一策略類別似,負責生成交易訊號。
  2. 條件檢查:檢查是否滿足看漲或看跌Engulfing圖型,且市場價格是否相對於布林帶處於適當位置。
  3. 訊號生成:根據條件檢查結果生成買入或賣出訊號。