資源の読み込みに... 荷物...

RSI アリガタートレンド戦略

作者: リン・ハーンチャオチャン開催日:2024年1月29日 14:40:07
タグ:

img

概要

RSIアライガタートレンド戦略は,トレンドのエントリーと出口を決定するために,RSIインジケーターとアライガターインジケーターの組み合わせに基づいています.それは異なる期間のRSIによって構築された3つの移動平均線 - アライガターの線,歯の線,唇の線を使用します.歯の線が唇の線を超越し,RSI線が歯の線よりも高くなったときに長くなります.歯の線が唇の線を下り,RSI線が歯の線よりも低いときに短くなります.この戦略はストップ損失と利益を得るために条件も設定します.

戦略の論理

RSI アリガター トレンド戦略は,RSI インディケーターを使用してアリガター インディケーターの 3 つのラインを構築します. 具体的な設定は:

  • 線: 5 期間のRSI線
  • 歯線: 13 期間のRSI線
  • リップライン: 34期RSIライン

入力信号の論理は

長い信号: 歯の線が唇の線の上を横切って の線が歯の線より高くなったら 長い信号です

ショート信号: 歯の線が唇の線を下に横切って の線が歯の線を下に横切ると ショートになります

ストップ・ロスの条件と 収益の条件も設定します

  • ストップ・ロスは入場価格より10%低い
  • 利益は入場価格より90%高い

強度分析

RSI アリガタートレンド戦略には以下の強みがあります.

  1. トレンドを決定するためにアリガターラインを使用することで,効果的に市場の騒音をフィルターし,主要なトレンドをロックすることができます
  2. 多期RSIを組み合わせることで,偽のブレイクを回避し,信号の信頼性を向上させる
  3. 合理的なストップ・ロストと得益条件の設定は,戦略運用を安定させるのに役立ちます
  4. パラメータ設定はシンプルで,それはライブ取引のために実行するのが簡単です
  5. 傾向の両方向を考慮し,長途と短途の両方に行うことができる.

リスク分析

RSI アリガタートレンド戦略には以下のリスクもあります.

  1. 歯線と唇線の交差点で偽ブレイクが発生し,不必要な損失を引き起こす可能性があります. サイクルのパラメータは,偽ブレイクの確率を減らすために調整できます.

  2. ストップ・ロスの設定は,不要なストップ・ロスの高い確率で,あまりにも攻撃的になり得ます.ストップ・ロスの範囲は適切に緩和され,またはストップ・ロスの有効化の前提条件として他の条件を追加することができます.

  3. 市場が急激に動いている場合,ストップ・ロスは,利益保護の適切な役割を果たすことができません. この場合,手動的な介入が時間内に損失を止める必要があります.

  4. ロングとショートポジションが頻繁に切り替わると,取引コストプレッシャーは大きくなります.不必要な往復を減らすために,入場条件を適切に緩和することができます.

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

RSI アリガタートレンド戦略は,次の側面で最適化することができます:

  1. 最適なパラメータ組み合わせを見つけるためにアリガターラインパラメータ設定を最適化します

  2. 入力条件ロジックを最適化します.例えば,シグナルをフィルターする取引量などの指標を追加します.

  3. 利回り・ストップ・ロスの戦略を最適化し,市場状況と利回りレベルに適応できるようにする.

  4. 極端な出来事に対処し,異常な市場状況への曝露を避けるためのメカニズムを追加する

  5. リスクを軽減するために,単一の取引に投資された資本の割合を制御するためのオープンポジションアルゴリズムを追加する

結論

一般的に,RSIアリゲータートレンド戦略は,信頼性と使いやすいトレンドフォロー戦略である.これは,トレンド方向を決定するためにアリゲーター指標を使用し,RSI指標と組み合わせて基準値を設定し,効果的にトレンドをロックし,合理的な出口ポイントを設定することができます.同時に,戦略自体も強い柔軟性と拡張性があり,ライブ取引とさらなる最適化に価値があります.


/*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=3
// RSI Alligator
// Forked from Author: Reza Akhavan
// Updated by Khalid Salomão

strategy("RSI Alligator Strategy", overlay=false, pyramiding=0, default_qty_type=strategy.cash, default_qty_value=25000, initial_capital=25000, commission_type=strategy.commission.percent, commission_value=0.15, slippage=3)

// === TA LOGIC ===
overBought = input(70, minval=0, maxval=100, title="Over bought")
overSold = input(30, minval=0, maxval=100, title="Over sold")
jawPeriods = input(5, minval=1, title="Jaw Periods")
jawOffset = input(0, minval=0, title="Jaw Offset")
teethPeriods = input(13, minval=1, title="Teeth Periods")
teethOffset = input(0, minval=0, title="Teeth Offset")
lipsPeriods = input(34, minval=1, title="Lips Periods")
lipsOffset = input(0, minval=0, title="Lips Offset")

jaws = rsi(close, jawPeriods)
teeth = rsi(close, teethPeriods)
lips = rsi(close, lipsPeriods)
plot(jaws, color=green, offset=jawOffset, title="Jaw")
plot(teeth, color=red, offset=teethOffset, title="Teeth")
plot(lips, color=blue, offset=lipsOffset, title="Lips")

//
// === Signal logic ===
// 
LONG_SIGNAL_BOOLEAN  = crossover(teeth, lips) and jaws > teeth
SHORT_SIGNAL_BOOLEAN = crossunder(teeth, lips) and jaws < teeth

// === INPUT BACKTEST DATE RANGE ===
strategyType = input(defval="Long Only", options=["Long & Short", "Long Only", "Short Only"])

FromMonth = input(defval = 7, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2018, title = "From Year", minval = 2017)
ToMonth   = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 2020, title = "To Year", minval = 2017)

start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        
window()  => true

// === STRATEGY BUY / SELL ENTRIES ===

// TODO: update the placeholder LONG_SIGNAL_BOOLEAN and SHORT_SIGNAL_BOOLEAN to signal
// long and short entries
buy()  => window() and LONG_SIGNAL_BOOLEAN
sell() => window() and SHORT_SIGNAL_BOOLEAN

if buy()
    if (strategyType == "Short Only")
        strategy.close("Short")
    else
        strategy.entry("Long", strategy.long, comment="Long")

if sell()
    if (strategyType == "Long Only")
        strategy.close("Long")
    else
        strategy.entry("Short", strategy.short, comment="Short")
        

// === BACKTESTING: EXIT strategy ===
sl_inp = input(10, title='Stop Loss %', type=float)/100
tp_inp = input(90, title='Take Profit %', type=float)/100

stop_level = strategy.position_avg_price * (1 - sl_inp)
take_level = strategy.position_avg_price * (1 + tp_inp)

strategy.exit("Stop Loss/Profit", "Long", stop=stop_level, limit=take_level)

もっと