ATRベースのスーパートレンド戦略

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

img

概要

この戦略は,価格がチャネルを突破したときの購入・売却信号を生成するために,平均真差 (ATR) 指標に基づいてスーパートレンドチャネルを構築する.トレンドフォローとストップ損失管理の利点を組み合わせます.

戦略の論理

スーパートレンドチャネルの上下帯は以下のように計算されます.

上部帯 = (最高価格 + 最低価格) / 2 + ATR ((n) * 因数 下帯 = (最高価格 + 最低価格) / 2 - ATR (n) * 因数

ATR (n) は n 期間の真平均範囲であり,ファクターは調整可能なパラメータで,デフォルトは 3 です.

閉じる価格が上位帯を超えると上昇信号が生成される.閉じる価格が下位帯を超えると下位信号が生成される.この戦略は,これらの信号に基づいてエントリーと出口を決定する.

利点分析

  • 市場変動に基づいてチャンネル範囲を決定するためにATRを使用し,効果的にトレンドを追跡します
  • 入り口のタイミングを決定するためにチャネルのブレイクを探し,偽のブレイクを避ける
  • 変動が異なる市場に対応できる要素パラメータによる調整可能なチャネル範囲
  • トレンドフォローとストップ損失管理の利点を統合

リスク分析

  • 誤った要素パラメータ設定は,不十分な利益取得または過剰なストップ損失につながる可能性があります.
  • 市場統合中に頻繁に取引信号が発生し,過剰取引が起こる可能性があります.
  • ATR 期間と因子パラメータのマッチを最適化する必要があります

リスク解決方法

  • 過剰なストップ損失を減らすために,異なる市場に基づいて要素パラメータを調整する
  • コンディション・フィルタリングを追加し,統合中に頻繁な取引を避ける
  • ATR期間の変動,保持期間等を総合的に考慮し,ATR期間に適合する

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

  • 信号をフィルターし,エントリを最適化するために他の指標を組み込む
  • 移動ストップ損失追跡を追加し,より多くの利益をロックします
  • 異なる製品と時間枠のためのパラメータ最適化
  • ATR 期間と因子パラメータのマッチを最適化

概要

この戦略は,トレンドトラッキングとストップ損失管理のためにスーパートレンドチャネルを使用する.ATR期間のマッチとファクタルパラメータは極めて重要です.次のステップは,パラメータチューニング,シグナルフィルタリングなどを通じて戦略をさらに最適化し,より複雑な市場環境に適応できるようにすることです.


/*backtest
start: 2023-01-11 00:00:00
end: 2024-01-17 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Supertrend Backtest", shorttitle="STBT", overlay=true)

// Input for ATR Length
atrLength = input.int(10, title="ATR Length", minval=1)
atrFactor = input.float(3.0, title="Factor", minval=0.01, step=0.01)

// Calculate SuperTrend
[supertrend, direction] = ta.supertrend(atrFactor, atrLength)
supertrend := barstate.isfirst ? na : supertrend

// Define entry and exit conditions
longCondition = ta.crossover(close, supertrend)
shortCondition = ta.crossunder(close, supertrend)

// Plot the SuperTrend
plot(supertrend, color=color.new(color.blue, 0), title="SuperTrend")

// Plot Buy and Sell signals
plotshape(series=longCondition, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small, title="Buy Signal")
plotshape(series=shortCondition, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small, title="Sell Signal")

// Strategy Entry and Exit
strategy.entry("Long", strategy.long, when=longCondition)
strategy.entry("Short", strategy.short, when=shortCondition)



もっと