スーパートレンドフォロー戦略


作成日: 2023-09-24 13:19:47 最終変更日: 2023-09-24 13:19:47
コピー: 2 クリック数: 723
1
フォロー
1617
フォロワー

概要

この戦略は,スーパートレンド指数に基づいて価格トレンドの方向を判断し,それに基づいて取引信号を生成する.これはトレンド追跡戦略のタイプに属します.この戦略は,特にテスラ (TSLA) 1分線に対してテストされ,パフォーマンスは良好です.

戦略原則

  1. ATRと最高価格,最低価格の平均値を計算し,超トレンドの倍数で上線と下線を決定する.

  2. 超トレンドの方向を判断するために,価格が上線または下線を突破したかどうかを判断する.

  3. 価格が上下軌道に突入するときに多見信号を生成し,価格が下下軌道に突入するときに空見信号を生成する.

  4. 信号の次の日の開盤時に入場する選択はできますが,価格がスーパートレンド軌道に触れたときにすぐに入場する選択もできます.

戦略的優位性

  1. 超トレンド指数は,トレンドを判断し,単純で明快で,プログラムしやすい.

  2. 取引者のニーズに合わせて,入場時間を柔軟に選択できます.

  3. 短線トレンドを素早く捉え,トレンド追跡に適しています.

  4. 戦略取引は頻繁であり,拡張・最適化が可能である.

戦略リスク

  1. 超トレンド指標が遅れているため,入場の最適なタイミングを逃す可能性があります.

  2. 取引の頻度によって,滑点コストが高くなります.

  3. リスク管理手段はなく,

  4. テスラの1分線のみを基にした反射データは,戦略の有効性を証明するのは困難である.

対応方法:

  1. 遅滞の確率を減らすためにパラメータを調整する.

  2. スライドポイントの制御が追加され,取引コストが高くならないようにしました.

  3. 単一損失を抑えるための ストップ・ローツの追加

  4. 戦略の安定性を確認するために,より多くの品種と周期的な再テストを行いました.

戦略最適化の方向性

  1. 超トレンドのパラメータの組み合わせをテストし,遅滞を軽減する.

  2. フィルターを追加して を避ける.

  3. 資金管理戦略の最適化と戦略の効率化

  4. 超トレンドを予測する機械学習の導入.

  5. 他の指標の検証信号と組み合わせた戦略の安定性を向上させる.

要約する

この戦略は,超トレンド指数の中での短線トレンド方向を判断して取引信号を生成し,典型的なトレンド追跡戦略の1つである.全体的な枠組みは簡潔で有効であるが,さらに入場機会,リスク管理,パラメータ選択などの側面を最適化することができる.より多くの品種の歴史的データを取得でき,機械学習などの技術を加えた場合,戦略の安定性と収益性を大幅に向上させることができる.

ストラテジーソースコード
/*backtest
start: 2023-08-24 00:00:00
end: 2023-09-23 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("QuantNomad - SuperTrend - TSLA - 1m", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)

// INPUTS //
st_mult   = input(3,   title = 'SuperTrend Multiplier', minval = 0, maxval = 100, step = 0.01)
st_period = input(120, title = 'SuperTrend Period',     minval = 1)

// CALCULATIONS //
up_lev = hl2 - (st_mult * atr(st_period))
dn_lev = hl2 + (st_mult * atr(st_period))

up_trend   = 0.0
up_trend   := close[1] > up_trend[1]   ? max(up_lev, up_trend[1])   : up_lev

down_trend = 0.0
down_trend := close[1] < down_trend[1] ? min(dn_lev, down_trend[1]) : dn_lev

// Calculate trend var
trend = 0
trend := close > down_trend[1] ? 1: close < up_trend[1] ? -1 : nz(trend[1], 1)

// Calculate SuperTrend Line
st_line = trend ==1 ? up_trend : down_trend

// Plotting
plot(st_line, color = trend == 1 ? color.green : color.red , style = plot.style_line, linewidth = 2, title = "SuperTrend")

plotshape(crossover( close, st_line), location = location.belowbar, color = color.green)
plotshape(crossunder(close, st_line), location = location.abovebar, color = color.red)

// Strategy with "when"
//strategy.entry("long",  true,  when = crossover( close, down_trend[1]))
//strategy.entry("short", false, when = crossunder(close, up_trend[1]))

// Strategy with stop orders
strategy.entry("long",  true,  stop = down_trend[1])
strategy.entry("short", false, stop = up_trend[1])