ATRトレンドフォロー戦略


作成日: 2023-09-21 15:13:47 最終変更日: 2023-09-21 15:13:47
コピー: 0 クリック数: 770
1
フォロー
1617
フォロワー

概要

この戦略は,平均真波幅 (ATR) を利用して価格のトレンドを捉え,ATRでストップ・ロスを設定してトレンドを追跡する.

戦略原則

  1. ATRを計算する

  2. ATR値に基づいてストップ・ローズを決定する.

  3. 価格がストップラインを突破すると,空白を多めにします.

  4. ストップ・ロスを動的に調整して利益をロックする.

戦略的優位性

  • ATRを使って自動で止損調整し,人工の介入を必要としない
  • 戦略はシンプルで直感的で実行しやすい
  • を避けるため,時効を止めてください
  • トレンドを利用して収益を上げることができる
  • ATRパラメータの調整により取引頻度を制御できます.

戦略リスク

  • ATRパラメータを正しく設定しない場合,Loose または Tight になります.
  • 傾向の終わりを 効果的に識別できない
  • 遅延がある
  • 損失の逆転による部分的利益

最適化の方向

  • ATR周期パラメータを最適化する
  • ATRの異なる倍数を止距離としてテストする
  • 他の指標と組み合わせると 傾向の逆転が確認されました
  • 機械学習のパラメータを最適化する
  • 追加ストップ戦略を考える

要約する

この戦略はATRを利用してトレンドを効果的にキャプチャし,動的にストップ・ロスを調整して利益のロックを実現する.最適化パラメータの設定は,戦略のパフォーマンスを向上させることができる.しかしATRの遅れの問題を完全に回避することはできません.全体的に,この戦略は,シンプルで実用的なトレンド追跡ソリューションである.

ストラテジーソースコード
/*backtest
start: 2022-09-14 00:00:00
end: 2023-09-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

strategy(title="ATR Strategy", overlay = true,  commission_type=strategy.commission.percent,commission_value=0.075)
//credits to HPotter for the orginal code
nATRPeriod = input(5)
nATRMultip = input(3.5)
xATR = ta.atr(nATRPeriod)
nLoss = nATRMultip * xATR
xATRTrailingStop = iff(close > nz(xATRTrailingStop[1], 0) and close[1] > nz(xATRTrailingStop[1], 0), math.max(nz(xATRTrailingStop[1]), close - nLoss),
                    iff(close < nz(xATRTrailingStop[1], 0) and close[1] < nz(xATRTrailingStop[1], 0), math.min(nz(xATRTrailingStop[1]), close + nLoss), 
                        iff(close > nz(xATRTrailingStop[1], 0), close - nLoss, close + nLoss)))
pos =	iff(close[1] < nz(xATRTrailingStop[1], 0) and close > nz(xATRTrailingStop[1], 0), 1,
	    iff(close[1] > nz(xATRTrailingStop[1], 0) and close < nz(xATRTrailingStop[1], 0), -1, nz(pos[1], 0))) 
color = pos == -1 ? color.red: pos == 1 ? color.green : color.blue 
plot(xATRTrailingStop, color=color, title="ATR Trailing Stop")

barbuy = close > xATRTrailingStop 
barsell = close < xATRTrailingStop 

strategy.entry("Long", strategy.long, when = barbuy) 
strategy.entry("Short", strategy.short, when = barsell) 

barcolor(barbuy? color.green:color.red)