
この戦略は,ADX指標を使用して突破信号をフィルターするショートライン取引戦略である. ADXが下がっていると,Bollinger ブリンが軌道上を突破すると空き; Bollinger ブリンが軌道下を突破し,ADXが上昇しているときに,多めに. この戦略は,ストップとストップを同時に設定し,完全に自動取引する.
この戦略は,ボリンジャー・ブリン帯を主要な突破シグナルとして使用している.ブリン帯の下落は,価格の標準差の2倍を表しており,ブリン帯の破綻は,通常,価格が強いトレンドの段階に入ることを意味する.また,偽の突破を避けるために,この戦略は,ADX指標をフィルタリング条件として新たに追加している.ブリン帯の上落は,ADXが下がったときにのみ考慮され,ブリン帯の下落は,ADXが上がったときにのみ考慮される.
具体的には,この戦略は, 33 サイクルの長さの閉盘価格をブリン帯で計算する. ブリン帯の中央軌道線は閉盘価格の 33 サイクルのシンプル移動平均であり,上下軌道は中軌道上の下2 スタンダード差である.指標パラメータは,閉盘価格が上軌道に転落し, 8 サイクルの ADX が 15 サイクルの ADX よりも小さいときに空白に設定され,閉盘価格が下軌道に突破し, 8 サイクルの ADX が 15 サイクルの ADX よりも大きいときに空白に設定されます.平仓設定は800 ストップポイント,400 ストップポイントです.
これは,トレンドと周波数指標のフィルタリング信号を組み合わせた突破策で,以下の利点があります.
この戦略にはいくつかのリスクがあります.
これらのリスクを低減するために,ブリン帯のパラメータを調整してブリン帯の範囲を縮小し,ADX周期パラメータを調整して過度な回信号を回避し,止損距離を適切に縮小して単一損失を制御することができます.もちろん,これらの最適化は,過度な適合を避けるために,反テストで検証する必要があります.
この戦略は,さらに改善できる余地があります.
この戦略は,全体として,シンプルで実用的な突破フィルタリング戦略である. ブリン帯によってトレンドを判断し,ADXフィルタリング信号は,震動市場の騒音を一定程度に回避し,トレンドの機会を掴むことができる. 最適化の余地はまだ十分であり,さらなるテストと改善に値する.
/*backtest
start: 2023-12-27 00:00:00
end: 2024-01-03 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Hizbullah XAUUSD Sniper", overlay=true)
Price = close
Length = input(33)
Mult = input(2)
Basis = sma(Price, Length)
StdDev = Mult * stdev(Price, Length)
Upper = Basis + StdDev
Lower = Basis - StdDev
ADX_Length = input(4)
TrueRange = max(max(high-low, abs(high-nz(close[1]))), abs(low-nz(close[1])))
SmoothedTrueRange = sma(TrueRange, ADX_Length)
DirectionalMovementPlus = high-nz(high[1]) > nz(low[1])-low ? max(high-nz(high[1]), 0): 0
DirectionalMovementMinus = nz(low[1])-low > high-nz(high[1]) ? max(nz(low[1])-low, 0): 0
SmoothedDirectionalMovementPlus = sma(DirectionalMovementPlus, ADX_Length)
SmoothedDirectionalMovementMinus = sma(DirectionalMovementMinus, ADX_Length)
DIPlus = SmoothedDirectionalMovementPlus / SmoothedTrueRange * 100
DIMinus = SmoothedDirectionalMovementMinus / SmoothedTrueRange * 100
DX = abs(DIPlus - DIMinus) / (DIPlus + DIMinus)*100
SmoothedADX1 = ema(DX, input(8))
SmoothedADX2 = ema(DX, input(15))
Condition1 = crossunder(Price, Upper) and SmoothedADX1 < SmoothedADX2
Take_Profit = input(800)
Stop_Loss = input(400)
strategy.entry("ShortEntry", true, when = Condition1)
strategy.exit("ShortExit", "ShortEntry", profit = Take_Profit, loss = Stop_Loss)