サポートレベルの突破に基づく動的ATRトレンドフォロー戦略

ATR EMA SMC
作成日: 2024-12-12 17:26:00 最終変更日: 2024-12-12 17:26:00
コピー: 3 クリック数: 399
1
フォロー
1617
フォロワー

サポートレベルの突破に基づく動的ATRトレンドフォロー戦略

概要

これは,支柱値の突破に基づくダイナミックATRトレンド追跡戦略である.この戦略は,EMA平均線システム,ATR波動率指標,スマートファンドコンセプト (SMC) を集約して市場トレンドを捕捉する.この戦略は,ポジションサイズとストップ・ストップの位置を動的に計算することによって,優れたリスク管理を実現する.

戦略原則

戦略は主に以下のいくつかのコアコンポーネントに基づいています.

  1. 50と200周期のEMA平均線システムを使用して,市場のトレンド方向を確認する
  2. ATRの指数を使って,ストップ・ロズとリターンの動的調整
  3. 順序ブロックと不均衡ゾーンの分析により,最適な入場点を探す
  4. 口座リスクの割合に基づいて,自動的に開設額を計算する
  5. 市場が収束状態にあるかどうかを判断するために,約20K線の波動範囲を観察します.

戦略的優位性

  1. リスク管理が完璧で,ダイナミックな計算により,取引のリスクが制御可能であることを保証します.
  2. トレンド判断システムは信頼性があり,市場を整理する際に取引を避ける
  3. ストップ・ストップの設定は合理的で,リスクと利益の比率は1:3です.
  4. 市場変動を十分に考慮し,異なる市場環境に適応する
  5. コード構造は明確で、保守や最適化が容易です。

戦略リスク

  1. EMA指数は遅滞しており,入場時間が遅れる可能性があります.
  2. 市場が急激に波動する中で,誤った信号を誘発する可能性があります.
  3. 戦略はトレンドの持続性に依存し,波動的な市場では不十分である可能性がある
  4. ストップポジションは広いので,場合によっては大きな損失を負う可能性があります.

戦略最適化の方向性

  1. 価格関係分析を導入し,トレンド判断の正確性を向上させる
  2. 市場情緒の指標を向上させ,入場のタイミングを最適化できる
  3. システム安定性を高めるため,多時間周期分析の追加を検討する
  4. オーダーブロックと不均衡領域を細分化できる判断基準
  5. モバイル・ストップを考慮して,ストップの最適化

要約する

この戦略は,合理的なリスク管理と複数のシグナル確認によって取引の安定性を高めるより完全なトレンド追跡システムである.ある程度の遅滞があるものの,全体的に信頼性の高い取引システムである.現場で使用する前に十分なフィットバックテストを推奨し,特定の取引品種と市場環境に応じてパラメータを最適化する.

ストラテジーソースコード
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-10 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// TradingView Pine Script strategy for Smart Money Concept (SMC)
//@version=5
strategy("Smart Money Concept Strategy", overlay=true, default_qty_type=strategy.fixed, default_qty_value=100)

// === Input Parameters ===
input_risk_percentage = input.float(1, title="Risk Percentage", step=0.1)
input_atr_length = input.int(14, title="ATR Length")
input_ema_short = input.int(50, title="EMA Short")
input_ema_long = input.int(200, title="EMA Long")

// === Calculations ===
atr = ta.atr(input_atr_length)
ema_short = ta.ema(close, input_ema_short)
ema_long = ta.ema(close, input_ema_long)

// === Utility Functions ===
// Identify Order Blocks
is_order_block(price, direction) =>
    ((high[1] > high[2] and low[1] > low[2] and direction == 1) or (high[1] < high[2] and low[1] < low[2] and direction == -1))

// Identify Imbalance Zones
is_imbalance() =>
    range_high = high[1]
    range_low = low[1]
    range_high > close and range_low < close

// Calculate Lot Size Based on Risk
calculate_lot_size(stop_loss_points, account_balance) =>
    risk_amount = account_balance * (input_risk_percentage / 100)
    lot_size = risk_amount / (stop_loss_points * syminfo.pointvalue)
    lot_size

// Determine if Market is Consolidating
is_consolidating() =>
    (ta.highest(high, 20) - ta.lowest(low, 20)) / atr < 2

// === Visual Enhancements ===
// Plot Order Blocks
// if is_order_block(close, 1)
//     line.new(x1=bar_index[1], y1=low[1], x2=bar_index, y2=low[1], color=color.green, width=2, extend=extend.right)
// if is_order_block(close, -1)
//     line.new(x1=bar_index[1], y1=high[1], x2=bar_index, y2=high[1], color=color.red, width=2, extend=extend.right)

// Highlight Imbalance Zones
// if is_imbalance()
//     box.new(left=bar_index[1], top=high[1], right=bar_index, bottom=low[1], bgcolor=color.new(color.orange, 80))

// === Logic for Trend Confirmation ===
is_bullish_trend = ema_short > ema_long
is_bearish_trend = ema_short < ema_long

// === Entry Logic ===
account_balance = strategy.equity
if not is_consolidating()
    if is_bullish_trend
        stop_loss = close - atr * 2
        take_profit = close + (math.abs(close - (close - atr * 2)) * 3)
        stop_loss_points = math.abs(close - stop_loss) / syminfo.pointvalue
        lot_size = calculate_lot_size(stop_loss_points, account_balance)
        strategy.entry("Buy", strategy.long, qty=lot_size)
        strategy.exit("TP/SL", "Buy", stop=stop_loss, limit=take_profit)

    if is_bearish_trend
        stop_loss = close + atr * 2
        take_profit = close - (math.abs(close - (close + atr * 2)) * 3)
        stop_loss_points = math.abs(close - stop_loss) / syminfo.pointvalue
        lot_size = calculate_lot_size(stop_loss_points, account_balance)
        strategy.entry("Sell", strategy.short, qty=lot_size)
        strategy.exit("TP/SL", "Sell", stop=stop_loss, limit=take_profit)

// === Plotting Indicators ===
plot(ema_short, color=color.blue, title="EMA 50")
plot(ema_long, color=color.orange, title="EMA 200")
plotshape(series=is_bullish_trend and not is_consolidating(), style=shape.triangleup, location=location.belowbar, color=color.green, text="Buy")
plotshape(series=is_bearish_trend and not is_consolidating(), style=shape.triangledown, location=location.abovebar, color=color.red, text="Sell")