資源の読み込みに... 荷物...

平均本格的な範囲をフォローするトレンドストップ戦略

作者: リン・ハーンチャオチャン,日付: 2024-05-24 18:12:01
タグ:ATRTS

img

概要

この戦略は,トレイルストップ (TS) の基礎として平均真差 (ATR) を使用し,トレンドをフォローするためにストップロスのポジションを動的に調整する.価格が有利な方向に動くと,ストップロスのポジションは相応に調整され,利益をロックする.価格が不利な方向に動くと,ストップロスのポジションは変化せず,価格がストップロスの価格に達すると,ポジションは閉鎖される.この戦略の鍵は,ストップロスのポジションの動的調整にあります.これは,利益を保護し,トレンドが継続するにつれて利益が拡大することを可能にする.

戦略原則

  1. ATRは後続停止の基礎として計算する.ATRは市場の変動を反映し,価格変動の平均規模を測定するために使用されます.
  2. ストップ・ロスの距離 nLoss を ATR と KeyValue パラメータに基づいて計算する.KeyValue はユーザー定義の倍数で,nLoss は KeyValue と ATR の積で,ストップ・ロスの距離が ATR の何倍であることを示します.
  3. 動的トレーリングストップポジション xATRTrailingStopを計算する.ロングポジションでは,前回のキャンドルの最高価格と (close - nLoss) のうち大きい値に設定され,ショートポジションでは,前回のキャンドルの最低価格と (close + nLoss) のうち小さい値に設定される.
  4. 入場信号を生成します.閉じる価格がxATRTrailingStopを超えると,ロング;閉じる価格がxATRTrailingStopを下回ると,ショートします.

利点分析

  1. ストップ・ロスのポジションは,価格変動に動的に調整され,利益が固定され,傾向が続くにつれて利益が拡大することを可能にします.
  2. ストップ・ロスは,市場変動を客観的に反映できるATR計算に基づい,主観的に設定された固定ストップ・ロスよりも柔軟かつ効果的です.
  3. ATRをKeyValueパラメータで増幅することで,リスクの優先順位に基づいて適切なストップ・ロスの距離を設定できます.より大きなKeyValueは,より広いストップ・ロスのスペースと,より少ないストップ・ロスの発生をもたらします.

リスク分析

  1. トレンドフォロー戦略は不安定な市場では不具合で,一方的なトレンドが明確でない場合,頻繁なストップロスは資金の迅速な損失につながります.
  2. 入場タイミングは,閉じる価格と動的ストップ・ロスの間のクロス信号に依存し,不安定な市場で連続した小さなストップ・ロスを引き起こす可能性があります.
  3. トレイリングストップ戦略は,大幅な下落や上昇のニュースが引き起こしたギャップを回避できず,ストップ・ロスの調整速度は価格変動速度と追いつけないため,実際の損失は予想される制御可能な損失よりもはるかに大きい.

最適化方向

  1. トレンド判断指標,例えば移動平均システムやモメント指標は,トレンドが明確であるときにのみ市場に参入するために戦略に追加され,不安定な市場で頻繁な取引を避けることができます.
  2. ケリー式に基づいてポジションサイズを計算し,トレンド終了時に潜在的な利益返還の可能性を減らすため,リターセインストップ利益等に固定利益ポイントを設定するような利益返済戦略を考慮することができる.
  3. ギャップ・オープニングでは,固定金額や固定パーセントなどの最大ストップ・ロスの制限を設定できます.この制限に達すると,ダイナミックストップ・ロスの価格がどこにあるかにかかわらず,ポジションは即座に停止されます.

概要

ATRトレーリングストップ戦略は,価格変動の大きさに基づいてストップロスのポジションを動的に調整し,トレンド市場で良い結果を達成することができる.しかし,この戦略には,不安定な市場に対処できないこと,過剰なストップロスの頻度,ギャップオープニングを回避する困難などのリスクもあります.これらの欠陥に対処するために,戦略はトレンド判断,利益を得る戦略,最大ストップロスの制限の観点から最適化および改善することができます.これらの調整により,戦略の適応性と収益性が向上することが望ましい.


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

//@version=5
strategy("Long TAP", overlay=true)

// Constants
keyValueDefault = 3.0
keyValueStep = 0.5
atrPeriodDefault = 10

// Inputs
keyValue = input.float(keyValueDefault, title="Key Value")
atrPeriod = input.int(atrPeriodDefault, title="ATR Period")

// Calculations
xATR = ta.atr(atrPeriod)
nLoss = keyValue * xATR

// Trailing Stop Calculation
var float xATRTrailingStop = 0.0
xATRTrailingStop := ta.highest(math.max(nz(xATRTrailingStop[1], 0), close - nLoss), 1)
xATRTrailingStop := ta.lowest(math.min(nz(xATRTrailingStop, 0), close + nLoss), 1)

// Position Calculation
var int pos = 0
pos := nz(pos[1], 0)
if (close[1] < nz(xATRTrailingStop, 0) and close > nz(xATRTrailingStop, 0))
    pos := 1
else if (close[1] > nz(xATRTrailingStop, 0) and close < nz(xATRTrailingStop, 0))
    pos := -1

// Plotting Trailing Stop
var color xcolor = na
if (pos == -1)
    xcolor := color.red
else if (pos == 1)
    xcolor := color.green
plot(xATRTrailingStop, color=xcolor, title="Trailing Stop")

// Buy/Sell Signals
buySignal = ta.crossover(close, xATRTrailingStop)
sellSignal = ta.crossunder(close, xATRTrailingStop)

// Strategy
if (buySignal)
    strategy.entry("Long", strategy.long)
    label.new(bar_index, xATRTrailingStop, text="Buy Signal", color=color.green, style=label.style_label_up, yloc=yloc.belowbar)
if (sellSignal)
    strategy.entry("Short", strategy.short)
    label.new(bar_index, xATRTrailingStop, text="Sell Signal", color=color.red, style=label.style_label_down, yloc=yloc.abovebar)

// Alerts
alertcondition(buySignal, title='UT BOT Buy', message='UT BOT Buy')
alertcondition(sellSignal, title='UT BOT Sell', message='UT BOT Sell')


関連性

もっと