フラクタルとパターンに基づく定量的な取引戦略

作者: リン・ハーンチャオチャン開催日:2024年2月19日 14:32:45
タグ:

img

概要

この記事では,フラクタル分析とキャンドルスタイクパターンを組み合わせた定量的な取引戦略を紹介しています. 重要な逆転点と上昇/下落逆転キャンドルスタイクパターンを検出することにより,この戦略は低リスク高収益の自動取引を可能にします.

戦略原則

この戦略は,フレクトル分析とキャンドルスティックパターン認識の組み合わせを使用して,詳細な価格アクション分析をベースに,トレンドを把握するための明確なエントリーとストップロスのロジックを定義します.

詳細に言うと,そのエントリー条件は:価格が前2バーの高値を超えてブレイクし,フラクタルブレイクまたはバリーッシュ・エングロフィングまたはハンマーパターンが発生する.この組み合わせは,ロング信号をしっかりと確認する.前2バーの低値を下回る価格ブレイクで出口を定義するストップ・ロスの論理は,迅速かつ効果的なストップを保証する.

パターン検知には,一般的なフラクタル理論を用いて,主要な逆転点を特定し,また3つのクラシックキャンドルスタイク逆転パターンを検出するアルゴリズムを使用します.

暗号化はパイン文字で行われます.価格が3バーの新しい高/低を設定するときにフラクタル高/低が識別され,開/閉価格の厳格なルールは,飲み込みパターンに使用されます.

利点

この戦略の主な利点は:

  1. フレクトルとパターンを組み合わせた正確な信号
  2. 明確なエントリーとストップ損失の論理
  3. 成熟した理論は過剰なフィットメントを防ぐ
  4. パインスクリプトはバックテストを可能にします

リスク

リスクはまだあります

  1. フラクタルとパターン検出における主観性
  2. 連続して損をする取引を起こす可能性のあるウィップソー
  3. ストップ・ロスのサイズ設定は,高周波取引の調整が必要です.

最適化されたストップ,トレンドフィルタリング,ウォークフォワード分析などの方法が上記のリスクを制御するのに役立ちます

改良

さらに改善すべき分野:

  1. 堅固性のための微調キャンドルスタイクパターンパラメータ
  2. Whipsaws を避けるために傾向偏差フィルターを追加する
  3. 自動パラメータ最適化のための機械学習を導入

これらの改善は,戦略の安定性と収益性をさらに強化します.

結論

この記事では,フラクタルとキャンドルスティックパターンを組み合わせた価格アクショントレーディング戦略を徹底的に説明します.正確なシグナリング,簡単な実装,効果的なトレンドフォローにより,この戦略は,体系的なトレーダーと裁量的なトレーダーの両方に大きく利益をもたらすことができます.継続的な改善と検証は,実用的な取引のためのパフォーマンスをさらに高めます.


/*backtest
start: 2023-02-12 00:00:00
end: 2024-02-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Fractal & Pattern Entry/Exit Strategy", overlay=true)

// Fractal calculation
fractalHigh = high == highest(3)
fractalLow = low == lowest(3)

// Pattern detection
bullishEngulfing = open < close[1] and close > open[1] and close > open + (open[1] - close[1]) * 2 and low < min(open, close) and high > max(open, close) and open[1] > close[1]
bearishEngulfing = open > close[1] and close < open[1] and open > close + (close[1] - open[1]) * 2 and high > max(open, close) and low < min(open, close) and open[1] < close[1]
hammer = open < close and close > (high + low + open * 2) / 4 and close - open > (high - low) * 0.6 and high - close < (high - low) * 0.1 and open - low < (high - low) * 0.1
hangingMan = open > close and open < (high + low + close * 2) / 4 and open - close > (high - low) * 0.6 and high - open < (high - low) * 0.1 and close - low < (high - low) * 0.1

// Entry condition
longCondition = crossover(close, highest(2)[1]) and (fractalHigh or bullishEngulfing or hammer)
shortCondition = crossunder(close, lowest(2)[1]) and (fractalLow or bearishEngulfing or hangingMan)

// Exit condition
exitLongCondition = crossunder(close, lowest(2)[1])
exitShortCondition = crossover(close, highest(2)[1])

// Entry and exit orders
if (longCondition)
    strategy.entry("Long", strategy.long)
if (shortCondition)
    strategy.entry("Short", strategy.short)
if (exitLongCondition)
    strategy.close("Long")
if (exitShortCondition)
    strategy.close("Short")

// Plot fractals
plotshape(fractalHigh, title="Fractal High", style=shape.triangledown, location=location.abovebar, color=color.green, size=size.small)
plotshape(fractalLow, title="Fractal Low", style=shape.triangleup, location=location.belowbar, color=color.red, size=size.small)

// Plot patterns
plotshape(bullishEngulfing, title="Bullish Engulfing", style=shape.arrowup, location=location.belowbar, color=color.green, size=size.small)
plotshape(bearishEngulfing, title="Bearish Engulfing", style=shape.arrowdown, location=location.abovebar, color=color.red, size=size.small)
plotshape(hammer, title="Hammer", style=shape.arrowup, location=location.belowbar, color=color.green, size=size.small)
plotshape(hangingMan, title="Hanging Man", style=shape.arrowdown, location=location.abovebar, color=color.red, size=size.small)


もっと