【量化交易】頂底分型策略

木头左發表於2024-05-26

在眾多的量化策略中,頂底分型策略因其獨特的市場趨勢捕捉能力和簡潔的實現方式而受到許多投資者的青睞。本文將詳細介紹頂底分型策略的原理,並展示如何使用Python在聚寬平臺上實現這一策略。 感興趣的朋友,可以在下方公號內回覆:001,即可獲取原始碼,共同交流!

頂底分型策略概述

頂底分型是一種基於價格行為的技術分析方法,由市場分析師Bill Williams提出。該策略認為價格行為可以形成特定的模式,這些模式能夠預示市場趨勢的轉變。頂分型和底分型是兩種基本的價格模式:

  • 頂分型:在上升趨勢的末端出現,預示著可能的下跌趨勢。頂分型由三根連續的K線組成,其中第二根K線的高點高於第一根和第三根K線的高點。
  • 底分型:在下降趨勢的末端出現,預示著可能的上升趨勢。底分型同樣由三根連續的K線組成,其中第二根K線的低點低於第一根和第三根K線的低點。

頂底分型策略的實現步驟

在聚寬平臺上實現頂底分型策略,我們需要按照以下步驟進行:

  • 初始化策略引數:設定策略的基本引數,如K線週期、頂底分型確認的K線數量等。
  • 計算頂底分型:根據歷史K線資料計算可能的頂分型和底分型。
  • 確認頂底分型:根據一定的規則確認頂分型和底分型的成立。
  • 生成交易訊號:根據確認的頂底分型生成買入和賣出訊號。
  • 執行交易:根據交易訊號在市場中執行買賣操作。

策略引數初始化

在策略開始前,我們需要設定一些基本的引數,這些引數將影響頂底分型的計算和確認。

# 初始化引數
g.n = 5  # 用於計算分型的K線數量

計算頂底分型

接下來,我們需要編寫函式來計算頂分型和底分分型。這個函式將遍歷歷史K線資料,並找出可能的頂分型和底分型。

# 計算頂底分型
def calculate_fractals(data):
    highs = data['high']
    lows = data['low']
    tops = []
    bottoms = []

    for i in range(len(highs) - g.n):
        if highs[i] < highs[i + 1] and highs[i + 1] > highs[i + 2]:
            tops.append((i + 1, highs[i + 1]))
        if lows[i] > lows[i + 1] and lows[i + 1] < lows[i + 2]:
            bottoms.append((i + 1, lows[i + 1]))

    return tops, bottoms

確認頂底分型

計算出可能的頂底分型後,我們需要確認這些分型是否成立。頂分型的確認通常需要後續的K線低點低於頂分型的高點,而底分型的確認則需要後續的K線高點高於底分型的低點。

# 確認頂底分型
def confirm_fractals(data, tops, bottoms):
    confirmed_tops = []
    confirmed_bottoms = []

    for i, top in tops:
        if i + 1 < len(data) and data[i + 1]['low'] < top:
            confirmed_tops.append(top)
    for i, bottom in bottoms:
        if i + 1 < len(data) and data[i + 1]['high'] > bottom:
            confirmed_bottoms.append(bottom)

    return confirmed_tops, confirmed_bottoms

生成交易訊號

有了確認的頂底分型後,我們可以生成交易訊號。當確認頂分型時,我們可能會考慮賣出或做空;當確認底分型時,我們可能會考慮買入或做多。

# 生成交易訊號
def generate_signals(security, confirmed_tops, confirmed_bottoms, portfolio, order):
    for top in confirmed_tops:
        order(security, -1)  # 賣出
    for bottom in confirmed_bottoms:
        order(security, 1)  # 買入

執行交易

最後,我們需要在策略的交易函式中呼叫上述函式,並執行交易。

# 交易函式
def trade(context):
    stock_data = attribute_history(context.security, g.n + 1, '1d', ['open', 'high', 'low', 'close'], skip_paused=True)
    tops, bottoms = calculate_fractals(stock_data)
    confirmed_tops, confirmed_bottoms = confirm_fractals(stock_data, tops, bottoms)
    generate_signals(context.security, confirmed_tops, confirmed_bottoms, context.portfolio, order_target)

策略測試與最佳化

在實際應用頂底分型策略之前,我們需要對策略進行充分的測試和最佳化。這包括但不限於:

  • 歷史回測:使用歷史資料對策略進行回測,評估策略在過去的表現。
  • 引數最佳化:調整策略引數,如K線週期和確認分型所需的後續K線數量,以最佳化策略的表現。
  • 風險管理:考慮交易成本、滑點等因素,並設定止損點和倉位管理規則,以控制風險。

總結

頂底分型策略是一種基於價格行為的量化交易策略,它透過識別市場趨勢的轉折點來生成交易訊號。透過Python在聚寬平臺上實現這一策略,我們可以自動化交易過程,提高交易效率。 感興趣的朋友,可以在下方公號內回覆:001,即可獲取原始碼,共同交流! 市場有風險,交易需謹慎。

相關文章