資源の読み込みに... 荷物...

複数のタイムフレームを組み合わせたキャンドルスティックパターン認識取引戦略

作者: リン・ハーンチャオチャン開催日:2024年12月11日 11:04:35
タグ:JSCCPTS

img

概要

この戦略は,キャンドルスタイクパターン認識に基づく自動取引システムである.これは5つの上昇パターン (ハンマー,ブリーッシュ・エングルフィン,ピアスライン,モーニングスター,および3つのホワイト・ソルジャー) と5つの下落パターン (ハンギングマン,ベアッシュ・エングルフィン,ダーククラウドカバー,イブニングスター,および3つのブラック・クロウ) を含む10つのクラシックなキャンドルスタイクパターンを統合している.これらのパターンのリアルタイム識別と分析を通じて,戦略はトレーダーに潜在的な市場逆転信号と取引機会を提供します.

戦略原則

この戦略の核心は,正確なキャンドルスタイクパターン認識のプログラム化実装にあります.各パターンには独自の数学的な定義と条件基準があります.

  1. シングルキャンドルスタイクパターン (ハンマー,ハンギングマンなど) では,判断は主に体と影の比率に基づいています
  2. 2つのキャンドルスタイクパターン (エングルフィン,ピアスラインなど) では,隣接するキャンドルスタイクの相対的なポジションを比較して判断します.
  3. 3つのキャンドルスティックパターン (例えば3つのホワイト・ソルジャー,3つのブラック・クロウ) では,トレンド方向と位置関係に関する複数の条件が同時に満たされなければなりません. この戦略は,パラメータ設定を通じて特定のパターン認識を柔軟に有効または無効にすることができます.

戦略 の 利点

  1. 総合性: 最も代表的な10のキャンドルスタイクパターンをカバーし,さまざまなタイプの市場逆転信号を捉える
  2. 柔軟性: ユーザーは市場状況や個人的な取引スタイルに基づいてパターン組み合わせを自由に選択できます
  3. ビジュアライゼーション: 明確なマークシステムにより,パターンの場所とタイプが直感的に表示されます
  4. 自動化: 完全にプログラムされた判断プロセスは,主観的で感情的な人間の判断を排除します
  5. 実践性: 明確な戦略論理は,他の技術指標や取引システムとの組み合わせを容易にする

戦略リスク

  1. 遅延リスク: パターンの確認は,キャンドルの閉じるのを待つ必要があります. わずかなエントリー遅れを引き起こす可能性があります.
  2. 偽信号 リスク: ろうそく の パターン に 頼る だけ で は,不安定 な 市場 で 沢山 の 偽信号 を 生み出す こと が でき ます
  3. 市場環境依存性: 戦略はトレンド市場ではより良いパフォーマンスを発揮するが,変動市場では劣悪なパフォーマンスを発揮する可能性がある.
  4. パラメータ設定リスク: パターン認識を過剰に有効にする場合,判断に影響を与える信号が過剰に混ざり合ってしまいます.
  5. ストップ損失管理リスク: 戦略には包括的なストップ損失管理メカニズムが組み込まれていないため,追加のリスク管理措置が必要である.

戦略の最適化方向

  1. トレンドフィルタリングを実行する: 逆トレンド信号をフィルタリングするために移動平均値またはトレンド指標と組み合わせる
  2. ボリューム確認を追加: ボリューム変更によってパターンの有効性を検証する
  3. リスク管理を強化する: ダイナミックなストップ損失と利益目標設定機能を追加する
  4. パターン認識パラメータを最適化: 異なる市場とタイムフレームのためにパターン認識パラメータを調整
  5. パターン重量化を追加: パターン信頼性に基づいて異なる信号重量化システムを設定

概要

これは,よく設計され,論理的に明確なキャンドルスタイクパターン認識取引戦略である.これは,プログラマングを通じて最も一般的に使用されるキャンドルスタイクパターン判断を従来の技術分析に実装し,トレーダーに客観的で体系的な取引ツールを提供します.この戦略にはいくつかの固有の制限がありますが,適切な最適化と他の技術ツールとの組み合わせによって,この戦略は取引決定のための貴重な参照信号を提供することができます.この戦略のモジュール式デザインは,後の機能拡張とパフォーマンス最適化にも良い基盤を提供します.


/*backtest
start: 2024-11-10 00:00:00
end: 2024-12-09 08:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
// Author: Raymond Ngobeni
strategy('Candlestick Pattern Strategy [Ubaton]', 'Ubaton - Candlestick Pattern Strategy', overlay = true, max_labels_count = 500, max_lines_count = 500, max_boxes_count = 500)

// User Inputs: Enable/Disable Patterns
// Bullish Patterns
enableHammer = input.bool(true, "Show Hammer")
enableBullEngulfing = input.bool(true, "Show Bullish Engulfing")
enablePiercingLine = input.bool(true, "Show Piercing Line")
enableMorningStar = input.bool(true, "Show Morning Star")
enableThreeWhiteSoldiers = input.bool(true, "Show Three White Soldiers")

// Bearish Patterns
enableHangingMan = input.bool(true, "Show Hanging Man")
enableBearEngulfing = input.bool(true, "Show Bearish Engulfing")
enableDarkCloudCover = input.bool(true, "Show Dark Cloud Cover")
enableEveningStar = input.bool(true, "Show Evening Star")
enableThreeBlackCrows = input.bool(true, "Show Three Black Crows")

// Helper Functions
isHammer() =>
    bodySize = math.abs(open - close)
    shadowSize = low < math.min(open, close) ? math.min(open, close) - low : na
    shadowSize >= 2 * bodySize and high - math.max(open, close) <= bodySize

isBullishEngulfing() =>
    close[1] < open[1] and close > open and open <= close[1] and close >= open[1]

isPiercingLine() =>
    close[1] < open[1] and close > close[1] + (open[1] - close[1]) * 0.5 and close < open[1]

isMorningStar() =>
    close[2] < open[2] and math.abs(close[1] - open[1]) < (high[1] - low[1]) * 0.3 and close > open

isThreeWhiteSoldiers() =>
    close > open and close[1] > open[1] and close[2] > open[2] and open > close[1] and open[1] > close[2]

isHangingMan() =>
    bodySize = math.abs(open - close)
    shadowSize = low < math.min(open, close) ? math.min(open, close) - low : na
    shadowSize >= 2 * bodySize and high - math.max(open, close) <= bodySize and close < open

isBearishEngulfing() =>
    close[1] > open[1] and close < open and open >= close[1] and close <= open[1]

isDarkCloudCover() =>
    close[1] > open[1] and open > close[1] and close < open[1] and close < close[1] + (open[1] - close[1]) * 0.5

isEveningStar() =>
    close[2] > open[2] and math.abs(close[1] - open[1]) < (high[1] - low[1]) * 0.3 and close < open

isThreeBlackCrows() =>
    close < open and close[1] < open[1] and close[2] < open[2] and open < close[1] and open[1] < close[2]

// Detect Patterns
// Bullish
hammerDetected = enableHammer and isHammer()
bullEngulfDetected = enableBullEngulfing and isBullishEngulfing()
piercingDetected = enablePiercingLine and isPiercingLine()
morningStarDetected = enableMorningStar and isMorningStar()
threeWhiteDetected = enableThreeWhiteSoldiers and isThreeWhiteSoldiers()

// Bearish
hangingManDetected = enableHangingMan and isHangingMan()
bearEngulfDetected = enableBearEngulfing and isBearishEngulfing()
darkCloudDetected = enableDarkCloudCover and isDarkCloudCover()
eveningStarDetected = enableEveningStar and isEveningStar()
threeBlackDetected = enableThreeBlackCrows and isThreeBlackCrows()

// Plot Bullish Patterns
plotshape(enableHammer and hammerDetected, title="Hammer", location=location.belowbar, color=color.green, style=shape.labelup, text="Hammer")
plotshape(enableBullEngulfing and bullEngulfDetected, title="Bullish Engulfing", location=location.belowbar, color=color.green, style=shape.labelup, text="Engulf")
plotshape(enablePiercingLine and piercingDetected, title="Piercing Line", location=location.belowbar, color=color.green, style=shape.labelup, text="Piercing")
plotshape(enableMorningStar and morningStarDetected, title="Morning Star", location=location.belowbar, color=color.green, style=shape.labelup, text="Morning")
plotshape(enableThreeWhiteSoldiers and threeWhiteDetected, title="Three White Soldiers", location=location.belowbar, color=color.green, style=shape.labelup, text="3 Soldiers")

// Plot Bearish Patterns
plotshape(enableHangingMan and hangingManDetected, title="Hanging Man", location=location.abovebar, color=color.red, style=shape.labeldown, text="Hanging")
plotshape(enableBearEngulfing and bearEngulfDetected, title="Bearish Engulfing", location=location.abovebar, color=color.red, style=shape.labeldown, text="Engulf")
plotshape(enableDarkCloudCover and darkCloudDetected, title="Dark Cloud Cover", location=location.abovebar, color=color.red, style=shape.labeldown, text="Dark Cloud")
plotshape(enableEveningStar and eveningStarDetected, title="Evening Star", location=location.abovebar, color=color.red, style=shape.labeldown, text="Evening")
plotshape(enableThreeBlackCrows and threeBlackDetected, title="Three Black Crows", location=location.abovebar, color=color.red, style=shape.labeldown, text="3 Crows")

// Strategy Execution
if hammerDetected or bullEngulfDetected or piercingDetected or morningStarDetected or threeWhiteDetected
    strategy.entry("Bullish Entry", strategy.long)

if hangingManDetected or bearEngulfDetected or darkCloudDetected or eveningStarDetected or threeBlackDetected
    strategy.entry("Bearish Entry", strategy.short)

関連性

もっと