複数期間を組み合わせたKラインパターン認識取引戦略

JSC CP TS
作成日: 2024-12-11 11:04:35 最終変更日: 2024-12-11 11:04:35
コピー: 0 クリック数: 480
1
フォロー
1617
フォロワー

複数期間を組み合わせたKラインパターン認識取引戦略

概要

この戦略は,K線形状の認識に基づく自動取引システムである.これは,五つの看板形状 ((線,多頭吞食,刺す線,朝星,三白兵) と五つの看板形状 ((上線吊り,空頭吞食,雲の頂上,夕星,三黒) を含む,十のクラシックなK線形状を統合している.これらの形状のリアルタイム認識と分析によって,戦略は,トレーダーに潜在的な市場逆転信号と取引機会を提供します.

戦略原則

戦略の核心は,様々なK線形状の精密な識別をプログラミングすることによって実現することである.各形状は,独自の数学的な定義と条件判断を有する:

  1. 単根K線形 (線,吊り線など) は,主体と影線の比率関係に基づいて判断する.
  2. 2つのK線形状 (例えば,吸収線,貫通線) に対して,隣接する2つのK線の開閉価格位置関係を比較することによって判断する
  3. 三つのK線形状 (例えば三白兵,三黒) の場合,連続した三つのK線の走行方向と位置関係を同時に満たす必要がある. ポリシーは,ユーザがパラメータを設定することで,特定の形状の識別を有効または無効にすることを柔軟に選択できるようにします.

戦略的優位性

  1. 全面性:最も代表的な10のK線形状をカバーし,さまざまなタイプの市場逆転信号を捉える
  2. 柔軟性: 市場環境や個人の取引スタイルに応じて,ユーザが認識する必要がある形態の組み合わせを自由に選択できます.
  3. ビジュアル化:明確な標識システムによって,様々な形態の出現場所とタイプを直観的に示す
  4. 自動化: 判断を完全にプログラムし,主観性や感情的判断を避ける
  5. 実用性:戦略の論理が明確で,他の技術指標または取引システムと組み合わせて使用できます.

戦略リスク

  1. 遅延リスク:K線形状の確認はK線閉店まで待たされ,入場時間が少し遅れる可能性がある
  2. 偽信号の危険: 揺れ動いている市場では,K線形状のみに頼ると偽信号が多く発生する可能性があります.
  3. 市場環境依存: 戦略は傾向が顕著な市場ではうまく機能しますが,横断市場ではうまく機能しない可能性があります.
  4. パラメータ設定のリスク:形状認識が過度に有効である場合,信号が過密になり,判断に影響を与える
  5. ストップ・ロズ・コントロール・リスク: ストップ・ロズ・メカニズムは戦略自体には含まれていないため,追加のリスク・コントロールが必要である.

戦略最適化の方向性

  1. トレンドフィルタを導入: 移動平均値またはトレンド指標を組み合わせて逆転信号をフィルターする
  2. 取引量の増加の確認:取引量の変化による形式の検証の有効性
  3. リスク管理の改善:ダイナミックなストップ損失と利益目標設定機能を追加
  4. 形状パラメータの最適化:異なる市場と時間周期に対応して形状識別のパラメータ基準を調整する
  5. 形状重量を追加:異なる形状の信頼性に応じて異なる信号重量システムを設定する

要約する

これは合理的で論理的に明確に設計されたK線形状認識取引戦略である.これは,従来の技術分析で最も一般的に使用されるK線形状判断をプログラム化して実現し,トレーダーに客観的で体系的な取引ツールを提供します.いくつかの固有の限界があるものの,適切な最適化と他の技術ツールと連携することにより,この戦略は,取引意思決定に価値ある参照信号を提供することができます.戦略のモジュール化設計はまた,後の機能拡張と性能最適化に優れた基盤を提供します.

ストラテジーソースコード
/*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)