定量的モメンタムに基づくマイクロリトレースメントブレークスルー戦略

ATR SMA OCA VOLUME
作成日: 2025-02-19 16:32:46 最終変更日: 2025-02-19 17:25:25
コピー: 0 クリック数: 335
2
フォロー
319
フォロワー

定量的モメンタムに基づくマイクロリトレースメントブレークスルー戦略 定量的モメンタムに基づくマイクロリトレースメントブレークスルー戦略

概要

この戦略は,価格の動きと取引量に基づいた取引システムで,強度の上昇後に微小な回調の機会を特定することに焦点を当てている.この戦略は,大幅な上昇の緑の線後の短期的な回調を監視して,価格が反転シグナルが発生したときに取引を開始する.このシステムは,取引量の制限,ATRの変動率,回調幅を含む複数のフィルタリング条件を採用し,取引の正確性を向上させる.

戦略原則

戦略の核心的な論理は,市場動力の継続の原理に基づいている.主に以下の重要な要素が含まれている.

  1. 取引量とATR倍数による強度の上昇を識別し,取引量が平均の1.5倍以上で20万以上であることを要求します.
  2. 薬物中毒後のリコールプロセスを監視し,連続した赤の数を最大3根に制限する
  3. 最大リターン幅を50%に設定し,それ以上の場合は取引を放棄します.
  4. 価格が前期高点を超えると,多信号をトリガーします.
  5. OCOの注文ポートフォリオを使用して,ストップ・ロスと利益目標を含む管理保持
  6. リスクの2倍以上の利潤を目標にするために,リターン・ローンの下にストップ・ロスを設定します.

戦略的優位性

  1. 価格動向と取引量の二重確認を組み合わせ,信号の信頼性を向上させる
  2. 厳格な回帰条件のフィルタリングにより,偽突破の罠を回避
  3. 客観的な技術指標を用いて,主観的な判断の影響を低減する
  4. 明確なリスク制御機構,固定されたリスク/利益比設定
  5. 系統の高度な自動化により,複数の品種を大量に取引できます.
  6. 新しいフィルタリング条件を簡単に追加できる

戦略リスク

  1. 市場が急激に波動する時には,しばしば偽信号を誘発する可能性があります.
  2. 高位強株の回落幅が予期制限を超える可能性
  3. 交付量条件は,異なる市場環境で動的に調整する必要があります
  4. 市場騒音に触れる可能性がある.
  5. 収益目標が極端で,完全に達成できない
  6. 戦略の安定性を検証するには,より大きなサンプルが必要である.

戦略最適化の方向性

  1. 均線システムやトレンド指数などのトレンドフィルターを導入し,主動トレンドの方向に取引を確実にします.
  2. 市場サイクルに合わせて取引量の減少を動的に調整する
  3. ATRの倍数を使用することを考慮するストップ・ローズ設定を最適化
  4. タイムフィルターを追加し,市場開盤と閉盤の波動を回避する
  5. 複数の時間周期の確認を導入し,信号の信頼性を向上させる
  6. 市場状況に応じて戦略パラメータを調整する自己適応パラメータシステムを開発

要約する

これは,合理的に設計されたトレンド追跡戦略であり,厳格な条件選択とリスク管理により,市場内の優れた取引機会を捕捉することができる.戦略の成功の鍵は,パラメータの最適化と市場環境の適応性調整にあります. 实体取引の前に十分な反射検証を行い,特定の取引品種の特徴に応じてパラメータの調整を行うことが推奨されています.

ストラテジーソースコード
/*backtest
start: 2024-02-19 00:00:00
end: 2025-02-17 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"BNB_USDT"}]
*/

//@version=6
strategy(title="Micropullback Detector w/ Stop Buy & Exits", shorttitle="MicroPB Det+Exits", overlay=true)

// USER INPUTS
volLookback = input.int(20, "Volume SMA Period", minval=1)
volMultiplier = input.float(1.5, "Volume Multiplier for High Volume", minval=1.0)
largeCandleATR = input.float(0.5, "Fraction of ATR to define 'Large Candle'", minval=0.1)
maxRedPullback = input.int(3, "Max Consecutive Red Candles in Pullback")
maxRetracementPc = input.float(50, "Max Retracement % for pullback", minval=1.0, maxval=100.0)

// CALCULATIONS
fastAtr = ta.atr(14)
avgVolume = ta.sma(volume, volLookback)
isLargeGreenCandle = (close > open) and ((close - open) > fastAtr * largeCandleATR) and (volume > avgVolume * volMultiplier) and (volume > 200000)

// HELPER FLAGS
isGreen = close >= open
isRed   = close < open

// STATE VARIABLES
var int   state = 0
var float waveStartPrice   = na
var float waveHighestPrice = na
var float largestGreenVol  = na
var int   consecutiveRedPulls = 0
var bool  triggerSignal    = false
var float wavePullbackLow  = na

if barstate.isnew
    triggerSignal:=false
    if state==0
        wavePullbackLow:=na
        if isLargeGreenCandle
            state:=1
            waveStartPrice:=open
            waveHighestPrice:=high
            largestGreenVol:=volume
            consecutiveRedPulls:=0
    else if state==1
        if isGreen
            waveHighestPrice:=math.max(waveHighestPrice,high)
            if volume>largestGreenVol
                largestGreenVol:=volume
        else
            state:=2
            consecutiveRedPulls:=1
            wavePullbackLow:=low
    else if state==2
        if isRed
            if volume>largestGreenVol
                state:=0
            consecutiveRedPulls+=1
            if consecutiveRedPulls>=maxRedPullback+1
                state:=0
            retracementLevel=waveStartPrice+(maxRetracementPc/100.0)*(waveHighestPrice-waveStartPrice)
            wavePullbackLow:=math.min(wavePullbackLow,low)
            if close<retracementLevel
                state:=0
        else
            consecutiveRedPulls:=0
            if high>high[1]
                triggerSignal:=true
                state:=3
    else if state==3
        state:=0

// Plot shapes for signals (last 1440 bars ~ 1 day at 1-min TF)
plotshape(isLargeGreenCandle, title="Large Green Candle", style=shape.diamond, location=location.belowbar, color=color.new(color.blue, 0), offset=0, size=size.small, show_last=1440)
plotshape(triggerSignal, title="MicroPB Entry", style=shape.arrowdown, location=location.abovebar, color=color.new(color.green, 0), offset=0, size=size.large, show_last=1440)

// ENTRY & EXITS
if triggerSignal
    // Stop Buy above the previous bar's high
    entryPrice = high[1]
    strategy.order("MicroPullback Long", strategy.long, limit=entryPrice, oca_name="MicroPullback")

    // Stoploss slightly below pullback low
    stopPrice = wavePullbackLow - 2*syminfo.mintick

    // Risk & take-profit calculations
    risk = entryPrice - stopPrice
    tpPrice = entryPrice + 2 * risk

    // Exit: stop or TP
    strategy.exit("SL+TP", "MicroPullback Long", stop=stopPrice, limit=tpPrice, qty_percent=100)

// ALERT
alertcondition(triggerSignal, title="MicroPullback LONG", message="Micropullback Long Signal Detected!")