スーパートレンド強化エングルフィングパターン動的リスク管理戦略

ATR SL TP CANDLE supertrend ENGULFING
作成日: 2025-02-20 15:32:32 最終変更日: 2025-02-20 15:32:32
コピー: 6 クリック数: 319
2
フォロー
319
フォロワー

スーパートレンド強化エングルフィングパターン動的リスク管理戦略 スーパートレンド強化エングルフィングパターン動的リスク管理戦略

概要

これは,スーパートレンド指数と吞食形態を組み合わせた高級取引戦略である. この戦略は,市場における吞食形態の図パターンを識別し,スーパートレンド指数と組み合わせたトレンドの方向を確認することで,正確な取引信号のフィルタリングを実現する. この戦略は,ダイナミックな止損と利益の設定を統合し,リスクを効果的に制御しながら,利益を確保する.

戦略原則

戦略は以下の基本原則に基づいています.

  1. ATR (平均リアル波幅) を用いてスーパートレンド指標を計算し,全体的な市場トレンドを決定する.
  2. Boring Candle Threshold と Engulfing Candle Threshold を設定することで有効な吞食形態をフィルターする.
  3. 超トレンドのトレンド方向がスローダウン形状の方向と一致しているときにポジションを開くだけです.
  4. ダイナミックなストップ&レバレッジの設定で,開設価格に基づいて比例的に計算.
  5. 戦略的ポジション管理を使用して,同時に1つの方向での取引のみを確実にします.

戦略的優位性

  1. 信号の質は厳格に制御され,二重確認 ((トレンド+形状) によって精度が向上する.
  2. 偽信号をフィルタリングするために,退屈なと値の概念を導入します.
  3. ATRに基づくダイナミックなSupertrend計算により,戦略は市場適応性が良好である.
  4. リスク管理と利益の確保のための 完ぺきなストップ・ロズ・アンド・リターン・マネジメント
  5. 取引信号,ストップ・ロスト・ポイント,収益目標がはっきりと見えるように,視覚化が完璧です.

戦略リスク

  1. 市場が揺れ動いている時,頻繁に偽のブレイクシグナルが生じることがあります.
  2. 固定ストップ・ロズ・アンド・テイク・セッティングは,すべての市場環境に適していない可能性があります.
  3. 逆転が起こると,大きな後退が起こる可能性があります.
  4. パラメータ設定に敏感で,不適切なパラメータは,戦略の不良なパフォーマンスを引き起こす可能性があります.
  5. 流動性の低い市場では,滑り込みのリスクがあります.

戦略最適化の方向性

  1. 交差量指標を信号確認として導入することができる.
  2. 動的なATR倍数調整メカニズムを考慮する.
  3. 市場変動の動向に基づいてストップ・ロズと利益の比率調整.
  4. タイムフィルターを加え,不適切な時間帯で取引を避ける.
  5. トレンド強度フィルターを追加し,取引の質を向上させることを検討する.

要約する

これは,厳密に設計され,論理的に明確な戦略であり,技術指標と形状分析を組み合わせることで,優れた信号品質制御を実現する.戦略のリスク管理機構は完善し,ビジュアル化効果は優秀で,実地テストと最適化に適している.実際のアプリケーションでパラメータの調整と市場環境の選択に注意するようにトレーダーに推奨する.

ストラテジーソースコード
/*backtest
start: 2024-02-21 00:00:00
end: 2024-06-01 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/

//@version=5
strategy('Strategy Engulfing', overlay=true)

// Inputs
Periods = input(title='ATR Period', defval=5)
src = input(hl2, title='Source')
Multiplier = input.float(title='ATR Multiplier', step=0.1, defval=1.0)
highlighting = input(title='Highlighter On/Off?', defval=true)
boringThreshold = input.int(5, title='Boring Candle Threshold (%)', minval=1, maxval=100, step=1)
engulfingThreshold = input.int(50, title='Engulfing Candle Threshold (%)', minval=1, maxval=100, step=1)
OpenPosisi = input.int(2000, title='OpenPosisi (Pips)', minval=-25000)
stoploss = input.int(10000, title='Stop Loss (Pips)', minval=-25000)
takeprofit = input.int(20000, title='Take Profit (Pips)', minval=-25000)

// ATR Calculation
atr = ta.atr(Periods)

// Supertrend Calculation
up = src - Multiplier * atr
up := close[1] > nz(up[1]) ? math.max(up, nz(up[1])) : up
dn = src + Multiplier * atr
dn := close[1] < nz(dn[1]) ? math.min(dn, nz(dn[1])) : dn
trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn[1] ? 1 : trend == 1 and close < up[1] ? -1 : trend

// Plotting Supertrend
plot(trend == 1 ? up : na, color=color.new(color.green, 0), linewidth=1, style=plot.style_linebr, title='Supertrend Up')
plot(trend == -1 ? dn : na, color=color.new(color.red, 0), linewidth=1, style=plot.style_linebr, title='Supertrend Down')

// Engulfing Candlestick
isBoringCandle = math.abs(open[1] - close[1]) <= (high[1] - low[1]) * boringThreshold / 100
isEngulfingCandle = math.abs(open - close) * 100 / math.abs(high - low) <= engulfingThreshold

bullEngulfing = strategy.opentrades == 0 and trend == 1 and close[1] < open[1] and close > open[1] and not isBoringCandle and not isEngulfingCandle
bearEngulfing = strategy.opentrades == 0 and trend == -1 and close[1] > open[1] and close < open[1] and not isBoringCandle and not isEngulfingCandle

// Calculate Limit Price
limitbull = bullEngulfing ? close + OpenPosisi * syminfo.mintick : na
limitbear = bearEngulfing ? close - OpenPosisi * syminfo.mintick : na

// Calculate Stop Loss
bullishStopLoss = bullEngulfing ? limitbull - stoploss * syminfo.mintick : na
bearishStopLoss = bearEngulfing ? limitbear + stoploss * syminfo.mintick : na

// Calculate Take Profit
bullishTakeProfit = bullEngulfing ? limitbull + takeprofit * syminfo.mintick : na
bearishTakeProfit = bearEngulfing ? limitbear - takeprofit * syminfo.mintick : na


// Alerts for Engulfing Candles (Trigger Immediately)
if bullEngulfing
    alert('Bullish Engulfing Candle Formed!')

if bearEngulfing
    alert('Bearish Engulfing Candle Formed!')

// Plot shapes
plotshape(bullEngulfing, style=shape.triangleup, location=location.abovebar, color=color.new(color.green, 0))
plotshape(bearEngulfing, style=shape.triangledown, location=location.belowbar, color=color.new(color.red, 0))


plot(limitbull, title='Bullish Limit Price', color=color.new(color.purple, 0), style=plot.style_linebr, linewidth=1)
plot(limitbear, title='Bearish Limit Price', color=color.new(color.purple, 0), style=plot.style_linebr, linewidth=1)
plot(bullishStopLoss, title='Bullish Stop Loss', color=color.new(color.red, 0), style=plot.style_linebr, linewidth=1)
plot(bearishStopLoss, title='Bearish Stop Loss', color=color.new(color.red, 0), style=plot.style_linebr, linewidth=1)
plot(bullishTakeProfit, title='Bullish Take Profit', color=color.new(color.blue, 0), style=plot.style_linebr, linewidth=1)
plot(bearishTakeProfit, title='Bearish Take Profit', color=color.new(color.blue, 0), style=plot.style_linebr, linewidth=1)

// Label Stop Loss and Take Profit
label.new(bullEngulfing ? bar_index : na, bullishStopLoss, text='SL: ' + str.tostring(bullishStopLoss), color=color.red, textcolor=color.white, style=label.style_label_up, size=size.tiny)
label.new(bearEngulfing ? bar_index : na, bearishStopLoss, text='SL: ' + str.tostring(bearishStopLoss), color=color.red, textcolor=color.white, style=label.style_label_down, size=size.tiny)
label.new(bullEngulfing ? bar_index : na, bullishTakeProfit, text='TP: ' + str.tostring(bullishTakeProfit), color=color.green, textcolor=color.white, style=label.style_label_down, size=size.tiny)
label.new(bearEngulfing ? bar_index : na, bearishTakeProfit, text='TP: ' + str.tostring(bearishTakeProfit), color=color.green, textcolor=color.white, style=label.style_label_up, size=size.tiny)


// Strategy execution
if bullEngulfing
    strategy.entry('BUY', strategy.long, stop=limitbull)
    strategy.exit('TP/SL', from_entry='BUY', limit=bullishTakeProfit, stop=bullishStopLoss)

if bearEngulfing
    strategy.entry('SELL', strategy.short, stop=limitbear)
    strategy.exit('TP/SL', from_entry='SELL', limit=bearishTakeProfit, stop=bearishStopLoss)