2つのATR後継停止戦略

作者: リン・ハーンチャオチャン,日付: 2024-01-31 17:10:32
タグ:

img

概要

デュアルATRトレーリングストップ戦略は,平均真の範囲 (ATR) 指標に基づいた短期間の取引戦略である.この戦略は,2つのストップ損失ライン,高速ATRラインと遅いATRラインを同時に設定し,両ラインのクロスオーバーに基づいてエントリーと出口を決定する.この戦略はシンプルで,応答性があり,高波動性の市場に適している.

戦略原則

この戦略の核心は2つのATRストップ損失線を使用している.一つは短い期間と小さな倍数で速い反応のための速いATRラインである.もう1つは,フィルタリングのための長い期間と大きな倍数で遅いATRラインである.速いATRラインが遅いATRラインの上を横切ると,購入信号を生成する.速いATRラインが遅いATRラインの下を横切ると,販売信号を生成する.したがって,戦略はエントリーと出口を決定するために2つのATRラインのクロスオーバーを使用し,ストップ損失を効果的に制御することができます.

特定の論理は:高速ATR線と遅いATR線を計算する.価格がスローラインを超える場合,高速線を使用してストップ損失を追跡する.そうでなければ,遅い線を使用してストップ損失を追跡する.Klineの色は現在のストップ損失ラインを表します.緑と青は高速線を使用することを意味します.赤と黄色はスローラインを使用することを意味します.市場の価格がストップ損失線に触ると退出します.

利点分析

この戦略の利点は次のとおりです.

  1. シンプルで明快な論理で 分かりやすく実行できます
  2. 市場の変化に迅速に対応し,高変動市場に適しています.
  3. 双重ATRストップ損失制御はリスクを効果的に制御します
  4. ATRインジケーターはストップ損失範囲を調整するためのパラメータです.
  5. 視覚的なKlineの色は,ストップ損失状況を明確に示します.

リスク分析

リスクもあります:

  1. 過剰な取引に 傾向がある
  2. ATRは曲線が不調で 損失を増大させる可能性があります
  3. 横向市場やトレンド市場を効果的にフィルタリングすることはできません

ATR期間を最適化し ATR倍数を調整し フィルタリングのための他の指標を組み合わせることで リスクを減らすことができます

最適化方向

最適化方向は以下のとおりです.

  1. ATRパラメータを最適化して ストップ損失範囲を向上させる
  2. MA のような無効な取引を避けるためにフィルター指標を追加します.
  3. 誤差を避けるために開いた条件を追加します.例えば,ボリュームインジケーターを追加します.
  4. オーバー・トレードを避けるため,保持期間中の出口を追加します.

結論

デュアルATRトレーリングストップ戦略は,理解し実行しやすく,特に高波動性シナリオに適しており,リスクを効果的に制御することができます.最適化にも大きな余地があります.これは試してみる価値のある推奨される短期戦略です.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © ceyhun

//@version=4
strategy("ATR Trailing Stop Strategy by ceyhun", overlay=true)

/////////notes////////////////////////////////////////
// This is based on the ATR trailing stop indicator //
// width addition of two levels of stops and        //
// different interpretation.                        //
// This is a fast-reacting system and is better     //
// suited for higher volatility markets             //
//////////////////////////////////////////////////////

SC = input(close, "Source", input.source)

// Fast Trail //
AP1 = input(5, "Fast ATR period", input.integer)  // ATR Period
AF1 = input(0.5, "Fast ATR multiplier", input.float)  // ATR Factor
SL1 = AF1 * atr(AP1)  // Stop Loss
Trail1 = 0.0
Trail1 := iff(SC > nz(Trail1[1], 0) and SC[1] > nz(Trail1[1], 0), max(nz(Trail1[1], 0), SC - SL1), iff(SC < nz(Trail1[1], 0) and SC[1] < nz(Trail1[1], 0), min(nz(Trail1[1], 0), SC + SL1), iff(SC > nz(Trail1[1], 0), SC - SL1, SC + SL1)))

// Slow Trail //
AP2 = input(10, "Slow ATR perod", input.integer)  // ATR Period
AF2 = input(2, "Slow ATR multiplier", input.float)  // ATR Factor
SL2 = AF2 * atr(AP2)  // Stop Loss
Trail2 = 0.0
Trail2 := iff(SC > nz(Trail2[1], 0) and SC[1] > nz(Trail2[1], 0), max(nz(Trail2[1], 0), SC - SL2), iff(SC < nz(Trail2[1], 0) and SC[1] < nz(Trail2[1], 0), min(nz(Trail2[1], 0), SC + SL2), iff(SC > nz(Trail2[1], 0), SC - SL2, SC + SL2)))

// Bar color for trade signal //
Green = Trail1 > Trail2 and close > Trail2 and low > Trail2
Blue = Trail1 > Trail2 and close > Trail2 and low < Trail2
Red = Trail2 > Trail1 and close < Trail2 and high < Trail2
Yellow = Trail2 > Trail1 and close < Trail2 and high > Trail2

// Signals //
Bull = barssince(Green) < barssince(Red)
Bear = barssince(Red) < barssince(Green)

Buy = crossover(Trail1, Trail2)
Sell = crossunder(Trail1, Trail2)

TS1 = plot(Trail1, "Fast Trail", style=plot.style_line,color=Trail1 > Trail2 ? color.blue : color.yellow, linewidth=2)
TS2 = plot(Trail2, "Slow Trail", style=plot.style_line,color=Trail1 > Trail2 ? color.green : color.red, linewidth=2)
fill(TS1, TS2, Bull ? color.green : color.red, transp=90)

plotcolor = input(true, "Paint color on chart", input.bool)

bcl = iff(plotcolor == 1, Blue ? color.blue : Green ? color.lime : Yellow ? color.yellow : Red ? color.red : color.white, na)
barcolor(bcl)

if Buy
    strategy.entry("Buy", strategy.long, comment="Buy")
    
if Sell
    strategy.entry("Sell", strategy.short, comment="Sell")



もっと