ATR トレンド 戦略

作者: リン・ハーンチャオチャン, 日時: 2023-09-21 15:13:47
タグ:

概要

この戦略では,平均値のトレンド (ATR) を利用し,トレンドをフォローするためにATRに基づいてストップを設定します.

働き方

  1. ATR値を計算する.

  2. ATRに基づいてストップ損失レベルを決定する.

  3. 価格がストップレベルを突破するときに長/短を入力します.

  4. ストップを動的に調整することで 利益を固定します

利点

  • ATRは自動で停止を調整し,手動介入は必要ありません.
  • シンプルで直感的な論理,実行が簡単
  • 罠にはまらないようにする タイムリーストップ損失
  • 騎乗のトレンドからの利益
  • ATR パラメータによって制御される取引頻度

リスク

  • 悪いATRパラメータは,ストップがあまりにも緩やかまたは緊密な原因になる可能性があります
  • トレンドエンドを効果的に特定できない
  • ある程度の時間遅れがある
  • 逆転は利益を削減する

オプティマイゼーションの方向性

  • 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)



もっと