UT Bot ダイナミックトレンドトラッキングとRSI複合戦略

RSI EMA ATR TP SL Trend
作成日: 2025-08-04 10:05:40 最終変更日: 2025-08-04 10:05:40
コピー: 0 クリック数: 218
2
フォロー
319
フォロワー

UT Bot ダイナミックトレンドトラッキングとRSI複合戦略 UT Bot ダイナミックトレンドトラッキングとRSI複合戦略

概要

UT Botのダイナミック・トレンド・トラッキングとRSI複合策略は,自己適応的なトレンド・トラッキングシステムと比較的強い指数 (RSI) を組み合わせた量化取引策略である.この策略の核心は,平均真波幅 (ATR) を利用してダイナミック・サポートとレジスタンス・バンドを構築し,RSIを上回るオーバーバイ・オーバーセール・シグナルと組み合わせて市場の転換点をキャプチャし,同時に200周期指数移動平均線 (EMA200) を統合してトレンド確認を行う.この策略は,ATR倍数に基づいたダイナミック・ストップ・ストップ・メカニズムも設計し,市場の変動に応じて自動でリスク管理パラメータを調整することができる.

戦略原則

この戦略の核心原理は,UT BotトレンドトラッキングシステムとRSI振動指標である2つの主要な技術指標システムに基づいています.

UT Botのトレンドトラッキングシステムは,ATRの指数で価格の波動範囲を計算し,動的な上下軌道を構築します.

  • 上位帯域 (upperBand) = 現時点の価格 + 要素 * ATR
  • 下の軌道 ((lowerBand) = 現在の価格 - factor * ATR

システムでは,現在のトレンドの方向を特定するために,追跡線 (trail) を維持します.

  1. 価格が追跡線を横切ったとき,上昇傾向は ((dir = 1)
  2. 価格がトレッキングラインを下に突破すると,トレンドは下方へ ((dir = -1))
  3. 傾向変化の信号は,dirの変数の変形によって捉えられます.

RSI指標と組み合わせたシグナルフィルタリング:

  • RSI < 40 (超売り領域) とトレンドが下方から上昇すると,買取シグナルが生成されます.
  • RSI > 60 (オーバーバイ地域) とトレンドが上から下へと転じると,売り込みシグナルが生じる

さらに,戦略はEMA200を長期トレンドの基準線として統合し,パーセントベースのストップ・ロスの仕組みを設定した.

  • ストップは入場料の3%に設定されます.
  • スタート価格の1.5%に設定されたストップ損失

戦略的優位性

  1. ダイナミックで適応力がある:ATR指標による取引帯域の自動調整により,戦略はさまざまな市場の変動環境に適応し,高変動市場と低変動市場の両方で効果的に動作します.

  2. トレンドと揺れ: この戦略は,トレンド追跡と振動取引の2つの考え方を融合し,トレンドが明瞭であるときにトレンドをたどり,市場が超買いしているときに逆転の機会を探し,戦略の総合性を向上させる.

  3. 入り口の正確な位置: RSI ((6040) 超買超売レベル拡張設定により,取引信号の周波数が増加し,信号の質を保ち,入場時間を最適化します.

  4. リスク管理の改善: ダイナミックストップ・ストップ・損失機構を統合し,ストップ・損失比率 ((3%) はストップ・損失比率 ((1.5%) よりも大きい),ポジティブな期待値取引原則に適合し,長期にわたる安定した利益に有利である.

  5. 信号は即時警告: 戦略は,取引先が市場機会を把握できるように,買入/売却のシグナルを警告する機能が設定されています.

  6. 構造が明確でモジュール化: コード構造が明確で,各機能モジュールが明記され,後続的なメンテナンスと最適化が容易である.

戦略リスク

  1. 市場を揺るがす偽信号: 明確なトレンドがない振動市場では,戦略は頻繁に交差信号を生じ,連続的な損失を引き起こす可能性があります. 解決策は,ADX指数またはトレンド持続時間要求などのトレンド強度フィルタリング条件を追加することです.

  2. リスクは小さく:現在設定されている1.5%のストップは,一部の高波動市場では過小であり,市場騒音に触発されやすい可能性があります.取引品種特性と時間周期の動向に応じてストップの割合を調整することが推奨されています.

  3. パラメータ感度: 戦略性能はRSI長さ,超買い超売りレベル,ATR因子などのパラメータに敏感であり,異なるパラメータの組み合わせは,異なる市場環境で大きく異なる. 総合的なパラメータの最適化と反測が推奨されている.

  4. 市場状況の認識の欠如: 戦略は,異なる市場状態を明確に区別していない (トレンド,揺れ,収束) で,特定の市場環境下では不良なパフォーマンスを示す可能性があります.

  5. EMA200の基準が不足しているEMA200線が描かれていますが,戦略はそれを取引条件として使用せず,長期トレンド情報も十分に利用していません.

戦略最適化の方向性

  1. トレンド強度フィルター: ADX指標または他のトレンド強度指標を導入し,トレンドが明確であるときにのみ取引することを保証し,揺れ動いている市場の偽信号を回避します. 最適化後の条件は次のとおりです.
   趋势强度 = ta.adx(14) > 25
   买入条件 = 趋势强度 and trendUp and rsi < rsiUnder
  1. ダイナミック・ストップ・メカニズムの改善: 固定パーセンテージストップをATRベースのダイナミックストップに変更し,異なる市場の変動に対応する:
   stopLoss = atr * slFactor
   strategy.exit("TP/SL", from_entry="Buy", profit=tpPercent, loss=stopLoss/close*100)
  1. 添付量確認: 重要なトレンド転換は通常,取引量の顕著な変化に伴い,取引量の確認を加えることで,信号の質が向上します:
   volumeConfirmation = volume > ta.sma(volume, 20) * 1.5
   buy = trendUp and rsi < rsiUnder and volumeConfirmation
  1. 市場状態の分類取引: 波動率とトレンド指標に基づいて市場の状態を分類し,異なる市場の状況で異なる取引戦略とパラメータを使用します:
   isVolatile = atr/close*100 > 历史平均水平
   isTrending = ta.adx(14) > 25
  1. 加入時のフィルター重要な経済データや市場流動性の低い時期に取引を避けるため,意外なリスクを減らす:
   validTradingHour = (hour >= 9 and hour <= 16)
   buy = validTradingHour and trendUp and rsi < rsiUnder

要約する

UT Botのダイナミックトレンド追跡とRSI複合策略は,ダイナミックな波動率チャネルと震動指標を組み合わせた総合的な取引システムである.これはUT Botの自己適応チャネルを通じてトレンドの変化を捉え,RSIの超買超売レベルを利用して入場シグナルを確認し,パーセントベースのリスク管理機構を統合している.この戦略の最大の優点は,そのダイナミックな適応性と,複数の技術指標を統合的に使用する能力であり,異なる市場環境で取引の機会を探す能力である.

しかし,この戦略は,波動的な市場で偽信号を生じさせることができ,パラメータ設定に敏感である.将来の最適化の方向は,トレンド強度フィルタリングを増やし,ダイナミックなリスク管理を改善し,取引量確認および市場状態分類取引を導入することに重点を置くべきである.これらの最適化によって,戦略は,元の優位性の維持に基づいて,安定性と適応性をさらに向上させ,より包括的で安定した量化取引システムになる見込みである.

全体として,これは合理的で論理的に明確な設計された量化戦略であり,技術的分析の基礎のあるトレーダーに適しています.パラメータの適切な調整と最適化方向の実施により,この戦略は実際の取引で安定した収益を期待しています.

ストラテジーソースコード
/*backtest
start: 2024-08-04 00:00:00
end: 2025-08-02 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("✅ BACKTEST: UT Bot + RSI", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

rsiLen      = input.int(14, "RSI Length")
rsiOver     = input.int(60, "RSI Overbought Level")
rsiUnder    = input.int(40, "RSI Oversold Level")
atrLen      = input.int(10, "ATR Length")
factor      = input.float(1.0, "UT Bot Factor", step=0.1)
tpPercent   = input.float(3.0, "Take Profit %")
slPercent   = input.float(1.5, "Stop Loss %")

rsi = ta.rsi(close, rsiLen)
atr = ta.atr(atrLen)
ema200 = ta.ema(close, 200)
upperBand = close + factor * atr
lowerBand = close - factor * atr

var float trail = na
var int dir = 0

if na(trail)
    trail := lowerBand
    dir := 0

if close > trail
    trail := math.max(trail, lowerBand)
    dir := 1
else if close < trail
    trail := math.min(trail, upperBand)
    dir := -1
else
    trail := trail[1]
    dir := dir[1]

trendUp = dir == 1 and dir[1] == -1
trendDown = dir == -1 and dir[1] == 1

buy  = trendUp and rsi < rsiUnder
sell = trendDown and rsi > rsiOver

if (buy)
    strategy.entry("Buy", strategy.long)
    strategy.close("Sell")

if (sell)
    strategy.entry("Sell", strategy.short)
    strategy.close("Buy")

strategy.exit("TP/SL", from_entry="Buy",  profit=tpPercent, loss=slPercent)
strategy.exit("TP/SL", from_entry="Sell", profit=tpPercent, loss=slPercent)

// plotting
plot (ema200, "EMA 200, color=color.orange")

// === ALERT SIGNALS ===
alertcondition(buy, title="Buy Signal", message="BUY")
alertcondition(sell, title="Sell Signal", message="SELL")