Supertrend BarUpDn Fusion戦略は,Supertrend指標とBarUpDn指標を融合させる戦略である.SupertrendまたはBarUpDn指標が長信号を出せば戦略は長回し,いずれかの指標が短信号を出せば戦略は短回しする.
この戦略は主に2つの指標を利用しています.
スーパートレンドインジケーター: この指標は,平均的な真の範囲と要因に基づいてトレンド方向を決定します.価格は上昇傾向チャネルにあり,価格がダウントレンドチャネルにあるとき,長い信号を表示します.
BarUpDn インディケーター: このインディケーターは,現在のバーがバリーッシュバー (オープンよりも高い閉じる) またはベアッシュバー (オープンより高い閉じる) であるかどうかを判断します.バリーッシュバーでは1とベアッシュバーでは-1を返します.
戦略の主な論理は
スーパートレンドがロングで BarUpDnが上昇しているときにロングに行く.
超トレンドがショートで BarUpDnが下落しているときにショートする.
スーパートレンドが方向を変えるときに ポジションをタイミングで閉じる
この合併により,戦略は,スーパートレンドのトレンド判断能力と,BarUpDnの短期判断能力を利用し,より良いエントリータイミングを達成することができます.
この戦略の主な利点は以下の通りです.
複数の指標を融合することで精度が向上した.スーパートレンドのトレンド判断とBarUpDnの短期判断の両方を利用することで,エントリータイムリングの精度が向上する.
時間通りにストップ・ロスをします 主な指標が方向を変えたときに 損失を素早く削減することで 損失を拡大させないことができます
シンプルで使いやすい この戦略は2つの共通指標の組み合わせのみを使用し,非常にシンプルで使いやすい.
優れた適応性.スーパートレンド自体は,異なる製品と時間枠に適応するために調整可能なパラメータを持っています.
この戦略にはいくつかのリスクもあります:
不適切な融合から誤った判断は誤った判断を引き起こす可能性があります インジケーターが不一致な信号を与えるときに,タイムリーストップ損失
パラメータの調節が不適切である場合,パフォーマンスに影響を与えます.スーパートレンドのATR長さと因子は,異なる製品に対して調整する必要があります.
短期的な反転は小規模な損失を引き起こす可能性があります.スーパートレンドが方向転換する前に短期的な価格反転中に小規模な損失が発生することがあります.
戦略は以下の側面から最適化できます.
リスクをさらに制御するために,移動ストップ損失,タイムストップ損失,ブレイクストップ損失などのストップ損失戦略を追加します.
Supertrend のパラメータを最適化し,異なる製品と時間枠に最適なパラメータの組み合わせを見つけます.例えば,機械学習を用います.
投票メカニズムを構築し 判断の安定性を向上させるため,より多くの指標融合を追加します.
信号の信頼性を判断し,誤解を招く信号をフィルタリングするために,ボリューム変化,スプレッド変化などより多くの市場要因を組み込む.
Supertrend BarUpDn Fusion Strategyは,シンプルな指標を組み合わせてトレンド判断と短期判断を融合させ,シンプルさと使いやすさを保ちながらエントリータイミングの精度を向上させ,パラメータ最適化,ストップ損失最適化,指標投票などにより戦略をさらに強化することができます.
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Supertrend and BarUpDn Indicator Fusion", overlay=true) // Supertrend indicator atrLength = input(10, title="ATR Length") factor = input(3.0, title="Factor") [supertrend, direction] = ta.supertrend(factor, atrLength) lastBar = 0 // BarUpDn indicator barUpDn = close > open and open > close[1] ? 1 : close < open and open < close[1] ? -1 : 0 if (barUpDn == 1) lastBar := 1 else if barUpDn == -1 lastBar := -1 // Determine long or short position longCondition = (direction > 0 and barUpDn > 0) or (direction > 0 and lastBar == 1) shortCondition = (direction < 0 and barUpDn < 0) or (direction < 0 and lastBar == -1) // Enter long or short position if (longCondition) strategy.entry("Long", strategy.long) lastBar := 1 else if (shortCondition) strategy.entry("Short", strategy.short) lastBar := -1 if (direction < 0 and barUpDn > 0) strategy.entry("Long", strategy.long) // Exit long or short position if (direction > 0 and barUpDn < 0) strategy.entry("Short", strategy.short) // Exit long or short position // if (direction < 0 and barUpDn > 0 or direction > 0 and barUpDn < 0) // strategy.close_all()