高度なレンジブレイクアウトマルチタイムフレーム取引戦略

HTF SMA PIN BAR RSI EMA VOL
作成日: 2025-02-18 18:08:09 最終変更日: 2025-02-18 18:08:09
コピー: 0 クリック数: 530
1
フォロー
1617
フォロワー

高度なレンジブレイクアウトマルチタイムフレーム取引戦略

概要

これは,グラフの区間理論に基づく多時間周期取引戦略である.この戦略は,グラフの形状と価格の区間を分析することで,潜在的な取引機会を識別する.この戦略は,取引量フィルターとダイナミック・ストップ・ペアの仕組みを統合し,前期の高低の突破によってトレンドの機会を捉える.

戦略原則

戦略の核心は,価格が前期区間を突破する状況を監視するより高い時間周期 (デフォルトは4時間) です.具体的には:

  1. 戦略は,前2つの高時間周期K線の高低点データを継続的に追跡し,保存します.
  2. 現在のK線のクローズオフ価格が前高より低く,現在のK線の創新高であるとき,空調信号が形成される.
  3. 現在のK線のクローズオフ価格が前低より高く,現在のK線のイノベーションが低であるとき,多信号が形成される.
  4. 入場料はK線を触発する高低点位置に設定される
  5. 利益目標の設定は,前期に相当する高低点位置に設定されます.
  6. ストップ距離は,区間サイズに応じて動的に調整

戦略的優位性

  1. 多時間周期分析により,より信頼できる信号が提供されます.
  2. ダイナミックなストップ損失設定,市場の変動に応じて自律的に調整
  3. オプションのトランザクション量フィルターにより,取引の確認度が増加
  4. トリガー・価格,ターゲット・価格,ストップ・価格のマークを含む,明確なビジュアルなインタフェース
  5. 戦略の論理はシンプルで明快で,理解し実行しやすい.
  6. 各種取引種と市場環境に適用される

戦略リスク

  1. 区間振動市場では頻繁に偽のブレイクシグナルが生じる可能性があります.
  2. ストップダストの倍数が大きい場合,単発損失が大きすぎる可能性があります.
  3. 歴史的な価格データに依存し,急速に変化する市場環境で遅滞する可能性があります.
  4. 根本的な要因の影響を考慮していない
  5. 流動性の低い市場では,効率的に実行することが困難である

戦略最適化の方向性

  1. 移動平均やADXのようなトレンドフィルターを導入する
  2. 市場環境の判断条件を増やすこと
  3. ストップ・ストップ戦略の最適化,移動ストップの導入を検討
  4. トランザクション管理モジュールへの追加
  5. タイムサイクル配合分析の追加を検討する
  6. 波動率指標を導入して区間判断を最適化

要約する

これは,構造が整った,論理が明確で,複数のタイムサイクルを伴う取引戦略である. リスク管理とフィルタリングの仕組みを統合しながら,より高いタイムサイクルでの価格行動を分析することで,潜在的トレンドの機会を探している. 戦略の核心的な優点は,その適応性と拡張性であり,単純なパラメータ調整で異なる市場環境に適応することができる.

ストラテジーソースコード
/*backtest
start: 2025-01-18 00:00:00
end: 2025-02-17 00:00:00
period: 6h
basePeriod: 6h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("Candle Range Theory Strategy", overlay=true)

// Input parameters
var string HTF = input.timeframe("240", "Higher Timeframe (Minutes)")  // 4H default
var float stopLossMultiplier = input.float(1.5, "Stop Loss Multiplier", minval=0.5)
var bool useVolFilter = input.bool(false, "Use Volume Filter")
var float volThreshold = input.float(1.5, "Volume Threshold Multiplier", minval=1.0)

// Function to get higher timeframe data
getHtfData(src) =>
    request.security(syminfo.tickerid, HTF, src)

// Calculate volume condition once per bar
var bool volCondition = true
if useVolFilter
    float vol = getHtfData(volume)
    float avgVol = ta.sma(vol, 20)
    volCondition := vol > avgVol * volThreshold

// Get HTF candle data
htf_open = getHtfData(open)
htf_high = getHtfData(high)
htf_low = getHtfData(low)
htf_close = getHtfData(close)

// Store previous candle data
var float h1 = na  // High of Candle 1
var float l1 = na  // Low of Candle 1
var float h2 = na  // High of Candle 2
var float l2 = na  // Low of Candle 2
var float prevClose = na

// Track setup conditions
var string setupType = na
var float triggerLevel = na
var float targetLevel = na
var float stopLevel = na

// Update candle data - fixed time function usage
var bool isNewBar = false
isNewBar := ta.change(request.security(syminfo.tickerid, HTF, time)) != 0

if isNewBar
    h1 := h2
    l1 := l2
    h2 := htf_high[1]
    l2 := htf_low[1]
    prevClose := htf_close[1]

    // Identify setup conditions
    if not na(h1) and not na(h2) and not na(prevClose)
        if (h2 > h1 and prevClose < h1)  // Short setup
            setupType := "short"
            triggerLevel := l2
            targetLevel := l1
            stopLevel := h2 + (h2 - l1) * stopLossMultiplier
        else if (l2 < l1 and prevClose > l1)  // Long setup
            setupType := "long"
            triggerLevel := h2
            targetLevel := h1
            stopLevel := l2 - (h1 - l2) * stopLossMultiplier
        else
            setupType := na
            triggerLevel := na
            targetLevel := na
            stopLevel := na

// Entry conditions using pre-calculated volume condition - fixed line breaks
bool longCondition = setupType == "long" and high > triggerLevel and not na(triggerLevel) and volCondition
bool shortCondition = setupType == "short" and low < triggerLevel and not na(triggerLevel) and volCondition

// Execute trades
if longCondition
    strategy.entry("Long", strategy.long, comment="Long Entry")
    strategy.exit("Long Exit", "Long", limit=targetLevel, stop=stopLevel)

if shortCondition
    strategy.entry("Short", strategy.short, comment="Short Entry")
    strategy.exit("Short Exit", "Short", limit=targetLevel, stop=stopLevel)

// Plot signals - fixed plotshape parameters
plotshape(series=longCondition, title="Long Signal", location=location.belowbar, color=color.green, style=shape.triangleup)
plotshape(series=shortCondition, title="Short Signal", location=location.abovebar, color=color.red, style=shape.triangledown)

plot(triggerLevel, "Trigger Level", color=color.yellow, style=plot.style_circles)
plot(targetLevel, "Target Level", color=color.blue, style=plot.style_circles)
plot(stopLevel, "Stop Level", color=color.red, style=plot.style_circles)