技術交易中,準確判斷趨勢和掌握入場時機至關重要。本文介紹 Quintuplets 和 Double Trouble 兩種根據 K 線形態的交易策略,並結合 Python 程式碼,深入剖析其運作機制。Quintuplets 模式透過觀察五根連續小蠟燭的形態,判斷市場趨勢的延續性。Double Trouble 模式則結合了平均真實波動幅度(ATR)指標,利用 K 線形態和波動性變化,提供更穩健的交易訊號。兩種策略各有千秋,Quintuplets 模式更注重趨勢的早期確認,而 Double Trouble 模式則更強調入場時機的精準把握。理解這兩種模式的原理和程式碼實作,能幫助交易者更好地應對市場變化,制定更有效的交易策略。

現代趨勢跟隨模式:Quintuplets 模式深度解析

在探討趨勢跟隨的概念時,我們不僅需要了解傳統的技術分析模式,還需要探索一些新的、非傳統的模式。本章將介紹一種稱為 Quintuplets 的新型多蠟燭圖形態,它能夠確認基礎趨勢並提供額外的交易確認訊號。

Quintuplets 模式的定義與特徵

Quintuplets 模式是一種由五根連續的小蠟燭組成的形態,這些蠟燭具有相同的型別(看漲或看跌)。該模式根據群眾心理學和市場反應失敗的原理,表明市場趨勢將繼續沿著相同的方向發展。

Quintuplets 模式的形成條件

  1. 連續五根小蠟燭:這些蠟燭必須是相同型別(看漲或看跌),且每根蠟燭的收盤價都高於(看漲)或低於(看跌)其開盤價。
  2. 蠟燭大小限制:每根蠟燭的實體大小必須小於設定的門檻值,以確保它們是「小」蠟燭。

程式碼實作與訊號生成

def signal(data, open_column, close_column, buy_column, sell_column):
    data = add_column(data, 5)
    for i in range(len(data)):
        try:
            # 看漲 Quintuplets 模式
            if (data[i, close_column] > data[i, open_column] and 
                data[i, close_column] > data[i - 1, close_column] and 
                data[i, close_column] - data[i, open_column] < body and
                data[i-1, close_column] > data[i-1, open_column] and 
                data[i-1, close_column] > data[i-2, close_column] and 
                data[i-1, close_column] - data[i-1, open_column] < body and
                data[i-2, close_column] > data[i-2, open_column] and 
                data[i-2, close_column] > data[i-3, close_column] and 
                data[i-2, close_column] - data[i-2, open_column] < body and
                data[i-3, close_column] > data[i-3, open_column] and 
                data[i-3, close_column] > data[i-4, close_column] and 
                data[i-3, close_column] - data[i-3, open_column] < body and
                data[i-4, close_column] > data[i-4, open_column] and 
                data[i-4, close_column] - data[i-4, open_column] < body and
                data[i, buy_column] == 0):
                data[i + 1, 4] = 1
            
            # 看跌 Quintuplets 模式
            elif (data[i, close_column] < data[i, open_column] and 
                  data[i, close_column] < data[i-1, close_column] and 
                  data[i, open_column] - data[i, close_column] < body and
                  data[i-1, close_column] < data[i-1, open_column] and 
                  data[i-1, close_column] < data[i-2, close_column] and 
                  data[i-1, open_column] - data[i-1, close_column] < body and
                  data[i-2, close_column] < data[i-2, open_column] and 
                  data[i-2, close_column] < data[i-3, close_column] and 
                  data[i-2, open_column] - data[i-2, close_column] < body and
                  data[i-3, close_column] < data[i-3, open_column] and 
                  data[i-3, close_column] < data[i-4, close_column] and 
                  data[i-3, open_column] - data[i-3, close_column] < body and
                  data[i-4, close_column] < data[i-4, open_column] and 
                  data[i-4, open_column] - data[i-4, close_column] < body and
                  data[i, sell_column] == 0):
                data[i + 1, 5] = -1
        except IndexError:
            pass
    return data

內容解密:

  1. signal 函式:此函式負責生成 Quintuplets 模式的訊號。它接受歷史資料、開盤價欄位、收盤價欄位、買入訊號欄位和賣出訊號欄位作為輸入。

  2. 迴圈與條件檢查:在資料範圍內迭代,檢查每個資料點是否符合 Quintuplets 模式的條件。條件包括檢查連續五根蠟燭是否具有相同的型別(看漲或看跌),並且每根蠟燭的大小是否小於設定的 body 值。

  3. 看漲與看跌模式:對於看漲模式,五根蠟燭的收盤價必須高於開盤價,且每根蠟燭的收盤價高於前一根蠟燭的收盤價。對於看跌模式,則相反。

  4. 訊號生成:當滿足 Quintuplets 模式的條件時,在下一根蠟燭的開盤時生成買入或賣出訊號。

  5. 錯誤處理:使用 try-except 區塊捕捉 IndexError,確保在存取超出資料範圍的索引時不會導致程式當機。

不同資產的蠟燭大小門檻

| 資產 | 蠟燭大小門檻 | 單位 | |


|



-|


| | EURUSD | 0.0005 | 點 | | USDCHF | 0.0005 | 點 | | GBPUSD | 0.0005 | 點 | | USDCAD | 0.0005 | 點 | | BTCUSD | 50 | 美元 | | ETHUSD | 10 | 美元 | | GOLD | 2 | 美元 | | S&P500 | 10 | 點 | | FTSE100 | 10 | 點 |

波動性與雙重困擾模式(Double Trouble Pattern)解析

在交易與投資領域中,波動性是一個關鍵概念,它直接關係到風險,並間接影響報酬。具有高波動性的資產或變數,其回報會圍繞平均值大幅波動。

波動性的型別

  1. 歷史波動性(Historical Volatility):在特定時間內實作的波動性。儘管它具有回溯性,但歷史波動性經常被用作對未來波動性的預期。標準差是歷史波動性的衡量指標之一。

  2. 隱含波動性(Implied Volatility):當輸入Black-Scholes方程時,能夠給出期權市場價格的衡量指標。它代表了對未來實際波動性的預期,具有一個時間尺度:期權的到期日。

  3. 遠期波動性(Forward Volatility):未來特定時間段內的波動性。

  4. 實際波動性(Actual Volatility):在任何給定時間的波動性量,也稱為區域性波動性。這個衡量指標難以計算,並且沒有時間尺度。

標準差與波動性

最基本的波動性型別是標準差,它是描述性統計的根本之一。標準差是透過對資料點與平均值的偏差進行平方、平均,然後取平方根來計算的。

計算公式

  • 變異數(Variance):$\sigma^2 = \frac{1}{n} \sum_{i=1}^{n} (x_i - \chi)^2$
  • 標準差(Standard Deviation):$\sigma = \sqrt{\frac{1}{n} \sum_{i=1}^{n} (x_i - \chi)^2}$

平均真實範圍(Average True Range, ATR)

ATR是一種衡量歷史波動性的指標,由威爾德·威爾斯·小威爾德(Wilder Welles Jr.)開發。ATR的第一步是計算真實範圍(True Range)。

真實範圍的計算

對於每個小時,真實範圍是以下三個價格差異中的最大值:

  • 當前高點 - 當前低點
  • 當前高點 - 前一收盤價
  • 前一收盤價 - 當前低點

然後,對一定回顧期的真實範圍取平滑平均值,得到ATR。

# 匯入必要的函式庫
import numpy as np

# 假設data是一個包含OHLC(開盤價、最高價、最低價、收盤價)資料的DataFrame
def calculate_atr(data, period=14):
    high = data['High']
    low = data['Low']
    close = data['Close']
    
    # 計算真實範圍
    previous_close = close.shift(1)
    high_low_range = high - low
    high_pc_range = np.abs(high - previous_close)
    low_pc_range = np.abs(previous_close - low)
    true_range = pd.concat([high_low_range, high_pc_range, low_pc_range], axis=1).max(axis=1)
    
    # 計算ATR
    atr = true_range.ewm(alpha=1/period, adjust=False).mean()
    return atr

#### 內容解密:
此程式碼片段定義了一個函式`calculate_atr`,用於計算給定OHLC資料的ATR首先它提取最高價最低價和收盤價然後計算每個交易日的真實範圍即以下三者的最大值
1. 當日最高價與最低價之差
2. 當日最高價與前一日收盤價之差的絕對值
3. 前一日收盤價與當日最低價之差的絕對值
最後使用指數移動平均Exponential Moving Average, EMA對真實範圍進行平滑處理以獲得ATR。`period`引數指定了ATR計算中使用的回顧期預設為14天

### 圖表展示:高低波動性變數比較

```python
# 建立高波動性雜訊
hv_noise = np.random.normal(0, 1, 250)
# 建立低波動性雜訊
lv_noise = np.random.normal(0, 0.1, 250)
# 繪製圖表
plt.plot(hv_noise, color='red', label='高波動性')
plt.plot(lv_noise, color='blue', label='低波動性')
plt.axhline(y=0, color='black', linewidth=1)
plt.grid()
plt.legend()

內容解密:

此程式碼使用numpy生成兩組隨機雜訊:一組具有高標準差(代表高波動性),另一組具有低標準差(代表低波動性)。然後,使用matplotlib將這兩組雜訊繪製成圖,以直觀展示高低波動性的差異。高波動性的曲線會表現出更大的振幅,而低波動性的曲線則相對平穩。圖表中的水平線代表零線,用於參考比較。

結合ATR的雙重困擾模式

雙重困擾模式利用外生變數進行驗證,即藉助波動性指標——平均真實範圍(ATR)來驗證訊號。這種方法透過結合ATR來最佳化交易策略,從而可能獲得更好的績效指標。具體來說,ATR可用於評估市場的歷史波動性,並據此調整交易決策,例如設定止損或調整倉位大小等。透過將ATR與特定的交易模式(如雙重困擾模式)結合,可以更有效地管理風險並最佳化交易表現。

平均真實波動幅度(ATR)與市場波動性分析

在金融市場中,波動性是衡量價格變動程度的重要指標。平均真實波動幅度(Average True Range, ATR)是一種技術指標,用於衡量市場的波動性。ATR 由 J. Welles Wilder Jr. 提出,主要用於評估價格波動的程度。

ATR 的計算方法

ATR 的計算根據真實波動幅度(True Range, TR),其公式如下:

  • TR = max[(當日最高價 - 當日最低價), |(當日最高價 - 前一日收盤價)|, |(當日最低價 - 前一日收盤價)|]

ATR 是 TR 在特定回顧期內的平滑平均值。計算 ATR 的 Python 程式碼如下:

def atr(data, lookback, high_column, low_column, close_column, position):
    data = add_column(data, 1)
    for i in range(len(data)):
        try:
            data[i, position] = max(data[i, high_column] - data[i, low_column], 
                                    abs(data[i, high_column] - data[i - 1, close_column]), 
                                    abs(data[i, low_column] - data[i - 1, close_column]))
        except ValueError:
            pass
    data[0, position] = 0
    data = smoothed_ma(data, 2, lookback, position, position + 1)
    data = delete_column(data, position, 1)
    data = delete_row(data, lookback)
    return data

內容解密:

  1. TR 計算:程式碼首先計算 TR,比較當日最高價與最低價的差、當日最高價與前一日收盤價的絕對差、以及當日最低價與前一日收盤價的絕對差,並取最大值。
  2. ATR 計算:使用 smoothed_ma 函式對 TR 進行平滑平均,得到 ATR。
  3. 資料清理:刪除不必要的欄位和初始無效資料列。

ATR 與市場波動性的關係

ATR 可以反映市場的波動性。在恐慌或價格貶值的時期,市場波動性增加,ATR 通常會上升。相反,在穩定的上升或下降趨勢中,ATR 會趨於下降。這種現象在 EURUSD 的 10 週期 ATR 圖表中得到了驗證,如圖 5-6 所示。

Double Trouble 型態:根據波動性的趨勢跟隨策略

Double Trouble 型態是一種根據兩根 K 線的趨勢跟隨策略,需要考慮 ATR 指標。其定義如下:

  • 看漲 Double Trouble:兩根連續的看漲 K 線,第二根 K 線的收盤價高於第一根,且第二根 K 線的幅度至少是前一根 K 線的 10 週期 ATR 的兩倍。
  • 看跌 Double Trouble:兩根連續的看跌 K 線,第二根 K 線的收盤價低於第一根,且第二根 K 線的幅度至少是前一根 K 線的 10 週期 ATR 的兩倍。

其 Python 程式碼實作如下:

def signal(data, open_column, high_column, low_column, close_column, atr_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, close_column] > data[i - 1, close_column] and \
               data[i - 1, close_column] > data[i - 1, open_column] and \
               data[i, high_column] - data[i, low_column] > (2 * data[i - 1, atr_column]) and \
               data[i, close_column] - data[i, open_column] > data[i - 1, close_column] - data[i - 1, open_column] and \
               data[i, buy_column] == 0:
                data[i + 1, buy_column] = 1
            
            # 看跌型態
            elif data[i, close_column] < data[i, open_column] and \
                 data[i, close_column] < data[i - 1, close_column] and \
                 data[i - 1, close_column] < data[i - 1, open_column] and \
                 data[i, high_column] - data[i, low_column] > (2 * data[i - 1, atr_column]) and \
                 data[i, open_column] - data[i, close_column] > data[i - 1, open_column] - data[i - 1, close_column] and \
                 data[i, sell_column] == 0:
                data[i + 1, sell_column] = -1
        except IndexError:
            pass
    return data

內容解密:

  1. 買賣訊號生成:根據 Double Trouble 型態的定義,程式碼檢查是否滿足看漲或看跌條件,並在下一交易週期生成對應的買賣訊號。
  2. 條件檢查:包括檢查 K 線的開盤、收盤、最高、最低價,以及與前一根 K 線的比較,並結合 ATR 指標進行判斷。

Bottle 型態:根據間隙和 K 線特徵的趨勢跟隨策略

Bottle 型態依賴兩根 K 線來確認趨勢的延續。它需要第二根 K 線具有特定的特徵,例如無下影線但有上影線,且開盤價低於前一根 K 線的收盤價(間隙)。

其 Python 程式碼片段如下:

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, open_column] == data[i, low_column] and \
               data[i - 1, close_column] > data[i - 1, open_column] and \
               data[i, open_column] < data[i - 1, close_column] and \
               data[i, buy_column] == 0:
                # 生成買入訊號
                pass

內容解密:

  1. 型態檢查:檢查當前及前一根 K 線是否滿足 Bottle 型態的條件,包括開盤、收盤價的比較,以及是否存在間隙。
  2. 訊號生成:滿足條件時,在適當的位置生成買入或賣出訊號。