複数のインジケーターを組み合わせたATRトレーリングストップロスインテリジェントトレーディング戦略

ATR EMA VWMA SMA JLines Cloud
作成日: 2025-02-21 10:03:26 最終変更日: 2025-02-21 10:03:26
コピー: 1 クリック数: 373
2
フォロー
319
フォロワー

複数のインジケーターを組み合わせたATRトレーリングストップロスインテリジェントトレーディング戦略 複数のインジケーターを組み合わせたATRトレーリングストップロスインテリジェントトレーディング戦略

概要

これは,複数の技術指標を組み合わせたスマート取引戦略で,主にATR指標をベースにストップロスを追跡する機能を実現している.戦略は,均線雲 ((JLines Cloud),取引量分析および日内開場価格などの多次元分析指標を統合している.この戦略は,3分と5分間の時間周期で取引するのに特に適している.この戦略は,ATRを通じてストップロスを動的に調整し,均線システムとトレンド判断方向を組み合わせて,包括的な取引意思決定システムを実現している.

戦略原則

戦略の核心はATR (平均リアル波幅) 指標に基づいて構築された追跡ストップシステムである.これは10周期ATRと2倍ATRの倍数を使用して動的ストップラインを計算する.同時に,二つの時間周期のJLines Cloudシステム (72/89均線組み合わせ) を統合し,選択可能な5/15均線システムである.取引シグナル生成には以下の条件を満たす必要があります.

  1. ATRはストップラインの突破を追跡
  2. JLines Cloudのトレンドは2つの時間周期に一致しています.
  3. 価格の位置は,当日の開場価格に比べて
  4. 異常取引量確認

戦略的優位性

  1. ダイナミック・ストップ・プロテクション - ATR指数による市場の変動に適応し,柔軟なストップ・プロテクションを提供する
  2. 多次元トレンド確認 - 異なる時間周期の均線組み合わせを使用して,トレンド判断の正確性を向上させる
  3. 取引量検証 - 異常取引量分析による取引確認度増加
  4. リスク管理の改善 - 固定ストップと利益目標を含む二重保護機構
  5. 適応性 - 異なる市場条件に応じてパラメータを調整できる

戦略リスク

  1. パラメータの感受性 - ATR周期と倍数の選択は,戦略のパフォーマンスに大きく影響する
  2. 市場条件依存性 - 横盤市場では頻繁に偽信号が生じる可能性がある
  3. 多重条件の制限 - 厳格な入場条件により,一部の取引機会を逃す可能性があります.
  4. スライドポイントの影響 - 高い波動期間の間,実際の実行価格は,シグナル価格と大きく偏っている可能性があります

戦略最適化の方向性

  1. 動的パラメータ調整 - ATRパラメータは市場の変動に応じて自動的に調整できます.
  2. タイムフィルター - 取引時間フィルターを追加し,市場開盤と閉盤の高波動期を回避する
  3. トレンド強度フィルター - トレンド強度指標を導入し,トレンド判断の正確性を向上させる
  4. リスク管理の最適化 - ダイナミックなストップ・ストップ・レートを実現し,異なる市場環境に対応
  5. 取引量分析の強化 - 取引量分析方法の精細化,取引確認の精度向上

要約する

これは,複数の技術指標を統合した完全な取引システムで,ATRのトラッキングストップにより,コアリスク管理を提供し,均等なクラウドと取引量分析を利用して取引確認を提供している.戦略の優位性は,その包括的な市場分析の枠組みと完善したリスク管理システムにあるが,特定の市場環境に対してパラメータの最適化が必要である.推奨された最適化方向によって,戦略の安定性と収益性がさらに向上する見込みである.

ストラテジーソースコード
/*backtest
start: 2025-02-13 00:00:00
end: 2025-02-20 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/

//@version=6
strategy("AI trade Roney nifty value", overlay=true)

// User Inputs
atrPeriod = input.int(10, "ATR Period")
atrMultiplier = input.float(2, "ATR Multiplier")
target = input.float(40, "Target")
stopLoss = input.float(40, "Stop Loss")

// Calculate ATR-based trailing stop
atr = ta.atr(atrPeriod)
nLoss = atrMultiplier * atr
var float xATRTrailingStop = na

if na(xATRTrailingStop)
    xATRTrailingStop := close - nLoss
else
    if close > xATRTrailingStop[1] and close[1] > xATRTrailingStop[1]
        xATRTrailingStop := math.max(xATRTrailingStop[1], close - nLoss)
    else if close < xATRTrailingStop[1] and close[1] < xATRTrailingStop[1]
        xATRTrailingStop := math.min(xATRTrailingStop[1], close + nLoss)
    else
        xATRTrailingStop := close > xATRTrailingStop[1] ? close - nLoss : close + nLoss

// Define position and entry/exit prices
var int pos = na
pos := close[1] < xATRTrailingStop[1] and close > xATRTrailingStop[1] ? 1 : 
       close[1] > xATRTrailingStop[1] and close < xATRTrailingStop[1] ? -1 : pos[1]

var bool isLong = false
var bool isShort = false

var float entryPrice = na
var float exitPrice = na
var float exitStop = na

// JLines Cloud indicator
sl = input.int(72, "Smaller length")
hl = input.int(89, "Higher length")

res = input.timeframe("1", "JLines - Time Frame 1")
res1 = input.timeframe("3", "JLines - Time Frame 2")
enable515 = input.bool(false, "5/15 EMA")
res2 = input.timeframe("5", "5/15 EMA")

ema1_72 = request.security(syminfo.tickerid, res, ta.ema(close, sl))
ema1_89 = request.security(syminfo.tickerid, res, ta.ema(close, hl))
ema2_72 = request.security(syminfo.tickerid, res1, ta.ema(close, sl))
ema2_89 = request.security(syminfo.tickerid, res1, ta.ema(close, hl))
ema3_5 = request.security(syminfo.tickerid, res2, ta.ema(close, 5))
ema3_15 = request.security(syminfo.tickerid, res2, ta.ema(close, 15))

// Plot JLines Cloud
p1_1 = plot(ema1_72, "TimeFrame 1 - SL", color=color.blue, display=display.none)
p1_2 = plot(ema1_89, "TimeFrame 1 - HL", color=color.blue, display=display.none)
p2_1 = plot(ema2_72, "TimeFrame 2 - SL", color=color.yellow, display=display.none)
p2_2 = plot(ema2_89, "TimeFrame 2 - HL", color=color.yellow, display=display.none)
p3_1 = plot(enable515 ? ema3_5 : na, "Late Day Fade - 5 EMA", color=color.yellow, display=display.none)
p3_2 = plot(enable515 ? ema3_15 : na, "Late Day Fade - 15 EMA", color=color.yellow, display=display.none)

fill(p1_1, p1_2, color=ema1_72 > ema1_89 ? color.new(color.green, 30) : color.new(color.red, 30), title="Background 1")
fill(p2_1, p2_2, color=ema2_72 > ema2_89 ? color.new(color.green, 90) : color.new(color.red, 90), title="Background 2")
fill(p3_1, p3_2, color=enable515 ? (ema3_5 > ema3_15 ? color.new(color.blue, 50) : color.new(color.red, 50)) : na, title="Late Day Fade")

// Plot Buy and Sell signals
plotshape(pos == 1, title="Buy", style=shape.triangleup, location=location.belowbar, color=color.green)
plotshape(pos == -1, title="Sell", style=shape.triangledown, location=location.abovebar, color=color.red)

// Volume Analysis
vol_length = input.int(20, "Volume SMA length", minval=1)
vol_avg = ta.sma(volume, vol_length)

unusual_vol_down = volume > vol_avg * 1.2 and close < open
unusual_vol_up = volume > vol_avg * 1.2 and close > open

barcolor(unusual_vol_down or unusual_vol_up ? color.yellow : na)

// ATR Indicator
len2 = input.int(20, minval=1, title="Smooth")
src = input.source(close, title="Source")
out = ta.vwma(src, len2)
avg1 = math.avg(out, xATRTrailingStop) // FIXED: Replaced `ta.avg()` with `math.avg()`

plot(avg1, color=color.aqua, title="ATR")

// Daily Open Line
dl = input.bool(true, "Show daily Open")
dopen = request.security(syminfo.tickerid, "D", open)
plot(dl ? dopen : na, title="Day Open", color=color.orange, style=plot.style_circles, linewidth=2)

// Strategy Entry Conditions
if pos == 1 and not isLong and ema1_72 > ema1_89 and ema2_72 > ema2_89 and ema1_72 > ema2_72 and close > dopen
    entryPrice := close
    exitPrice := close + target
    exitStop := entryPrice - stopLoss
    strategy.entry("Buy", strategy.long)
    strategy.exit("buy_target", "Buy", limit=exitPrice)
    isLong := true
    isShort := false

if pos == -1 and not isShort and ema1_72 < ema1_89 and ema2_72 < ema2_89 and ema1_72 < ema2_72 and close < dopen
    entryPrice := close
    exitPrice := close - target
    exitStop := entryPrice + stopLoss
    strategy.entry("Sell", strategy.short)
    strategy.exit("Sell_target", "Sell", limit=exitPrice)
    isLong := false
    isShort := true

// Stop Loss Handling
if strategy.position_size > 0 and close < entryPrice - stopLoss
    strategy.close("Buy", comment="Buy_Stop Loss")

if strategy.position_size < 0 and close > entryPrice + stopLoss
    strategy.close("Sell", comment="Sell_Stop Loss")