ピボットポイントに基づく出来高加重ブレイクアウト/反転戦略

Pivot VOLUME SMA BREAKOUT Reversal STOP LOSS TAKE PROFIT
作成日: 2025-04-24 17:08:39 最終変更日: 2025-04-24 17:08:39
コピー: 0 クリック数: 353
2
フォロー
319
フォロワー

ピボットポイントに基づく出来高加重ブレイクアウト/反転戦略 ピボットポイントに基づく出来高加重ブレイクアウト/反転戦略

概要

この戦略は,サポート/レジスタンス (S/R) のブレイク/リバース,取引量フィルタリングおよびアラートシステムを組み合わせて,市場の重要な転換点を捕捉することを目的としています. 戦略は,価格のブレイクまたはリバースシグナルを識別し,異常取引量確認と組み合わせて,取引シグナルの信頼性を向上させます. 戦略は,固定2%のストップ損失と調整可能なストップ割合 (デフォルト3%) を採用して,リスクを管理します.

戦略原則

  1. サポート/レジスタンス識別使用する:ta.pivothigh()そしてta.pivotlow()この関数は,指定された周期 ((pivotLen) 内の重要な価格レベルを識別します. 価格が抵抗点 (上方1%) を破るとか,サポートから反発すると (下方探査後に引き戻すと) 信号を触発します.
  2. 交付量フィルター取引量のSMA ((volSmaLength周期) を計算し,現在の取引量がSMAのvolMultiplier倍 ((デフォルトの1.5倍) を上回ると有効確認とみなす.
  3. 多空論理
    • 多頭条件価格がレジスタンスゾーンを突破*1.01) と,高取引量,または価格がサポートエリアに近い ((±1%の範囲内) に伴って”偽下落”が発生する ((low ≤ supZone しかし,收盘は戻る) と取引量が増加する.
    • 空頭条件価格がサポートゾーンから下落した.*0.99),高取引量,または価格がレジスタンスゾーン ((±1%範囲) に近い”偽突破”が発生 ((high ≥ resZoneが閉盘後退) 取引量が増加する.
  4. リスク管理: 固定2%のストップと調整可能な止まり ((デフォルト3%) 通過strategy.exit()成し遂げる。

優位分析

  1. 多要素検証価格構造 ((S/R),取引量と市場行動 ((偽の突破/偽の破綻) を組み合わせて,偽の信号の確率を大幅に低下させる.
  2. 動的適応: 市場変化に合わせてサポート/レジスタンス位置を自動更新する.
  3. リスク管理が厳格です: 固定ストップは,単一取引の過度の損失を防止し,ストップの比率は,異なる波動的市場に対応するために調整できます.
  4. 視覚化サポート/レジスタンスラインをリアルタイムで描き,取引シグナルを明確に表示する.
  5. アラームの統合: 配列可能な自動取引システム,異なる取引シナリオに適合する.

リスク分析

  1. 震災のリスク解決策: ADXまたはEMAのようなトレンドフィルター指標を増やす.
  2. パラメータに敏感:pivotLenとvolMultiplierは市場に応じて調整する必要があります. 解決策:パラメータ最適化とウォーク・フォワードテストを行う.
  3. 落第している: 異常な取引量が価格変動の後に現れる可能性があります. 解決方法:口コミデータを組み合わせたり,volSmaLengthを短縮したり.
  4. 飛び降りるリスク:開盤空跳はストップレジを飛ばす可能性があります. 解決策:制限単価を使用するか,高波動の時間を回避してください.

最適化の方向

  1. トレンドフィルター:ADX>25条件または200EMA方向のフィルタを追加し,逆転取引を避ける.
  2. 動的パラメータ:市場の変動率 (ATRなど) に応じてピボットレンとvolMultiplierを自動的に調整する.
  3. 分級停止: 2行ストップを設定する (例えば2%平半ポジション,残りはストップを追跡する),損失比率を上げる.
  4. 機械学習の最適化: 過去データ訓練モデルを使用してvolMultiplierとtpPercのパラメータを最適化します.
  5. クロスサイクル検証:より高い時間枠のS/R確認を導入し,信号品質を向上させる.

要約する

この戦略は,三重検証 (価格位置,取引量,価格行動) を通じて,高確率取引の枠組みを設計し,特にトレンドの初期に適したキャプチャに適しています. 核心的な優位性は,論理的透明性,リスクの制御性であり,しかし,波動的な市場でその限界を注意してください. 将来の最適化は,パラメータの自己適応とトレンドのフィルタリングに焦点を当てて,さらに安定性を向上させることができます.

ストラテジーソースコード
/*backtest
start: 2024-04-24 00:00:00
end: 2024-12-31 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"DOGE_USDT"}]
*/

//@version=5
strategy("S/R Breakout/Reversal + Volume + Alerts", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// === INPUTS ===
pivotLen       = input.int(10, "Pivot Lookback for S/R")
volSmaLength   = input.int(20, "Volume SMA Length")
volMultiplier  = input.float(1.5, "Volume Multiplier")
tpPerc         = input.float(3.0, "Take Profit %", step=0.1)
slPerc         = 2.0  // Stop Loss fixed at 2%

// === S/R ZONES ===
pivotHigh = ta.pivothigh(high, pivotLen, pivotLen)
pivotLow  = ta.pivotlow(low, pivotLen, pivotLen)

var float resZone = na
var float supZone = na
if not na(pivotHigh)
    resZone := pivotHigh
if not na(pivotLow)
    supZone := pivotLow

plot(supZone, title="Support", color=color.green, linewidth=2, style=plot.style_linebr)
plot(resZone, title="Resistance", color=color.red,   linewidth=2, style=plot.style_linebr)

// === VOLUME FILTER ===
volSma     = ta.sma(volume, volSmaLength)
highVolume = volume > volSma * volMultiplier

// === LONG LOGIC ===
priceAboveRes     = close > resZone * 1.01
nearSupport       = close >= supZone * 0.99 and close <= supZone * 1.01
rejectSupport     = low <= supZone and close > supZone
longBreakoutCond  = priceAboveRes and highVolume
longReversalCond  = nearSupport and rejectSupport and highVolume
longCondition     = longBreakoutCond or longReversalCond

// === SHORT LOGIC ===
priceBelowSup     = close < supZone * 0.99
nearResistance    = close >= resZone * 0.99 and close <= resZone * 1.01
rejectResistance  = high >= resZone and close < resZone
shortBreakoutCond = priceBelowSup and highVolume
shortReversalCond = nearResistance and rejectResistance and highVolume
shortCondition    = shortBreakoutCond or shortReversalCond

// === ENTRIES WITH LABELS ===
if (longCondition)
    strategy.entry("Long", strategy.long)
    label.new(bar_index, low * 0.995, "BUY", style=label.style_label_up, color=color.green, textcolor=color.white)

if (shortCondition)
    strategy.entry("Short", strategy.short)
    label.new(bar_index, high * 1.005, "SELL", style=label.style_label_down, color=color.red, textcolor=color.white)

// === TP/SL ===
longTP  = close * (1 + tpPerc / 100)
longSL  = close * (1 - slPerc / 100)
shortTP = close * (1 - tpPerc / 100)
shortSL = close * (1 + slPerc / 100)

strategy.exit("Long TP/SL",  from_entry="Long",  limit=longTP,  stop=longSL)
strategy.exit("Short TP/SL", from_entry="Short", limit=shortTP, stop=shortSL)

// === ALERT CONDITIONS ===
alertcondition(longCondition,  title="Buy Alert",  message="🔔 BUY signal: S/R + Volume breakout/reversal")
alertcondition(shortCondition, title="Sell Alert", message="🔔 SELL signal: S/R + Volume breakout/reversal")