RSIアライガタートレンド戦略は,トレンドのエントリーと出口を決定するために,RSIインジケーターとアライガターインジケーターの組み合わせに基づいています.それは異なる期間のRSIによって構築された3つの移動平均線 - アライガターの
RSI アリガター トレンド戦略は,RSI インディケーターを使用してアリガター インディケーターの 3 つのラインを構築します. 具体的な設定は:
入力信号の論理は
長い信号: 歯の線が唇の線の上を横切って
ショート信号: 歯の線が唇の線を下に横切って
ストップ・ロスの条件と 収益の条件も設定します
RSI アリガタートレンド戦略には以下の強みがあります.
RSI アリガタートレンド戦略には以下のリスクもあります.
歯線と唇線の交差点で偽ブレイクが発生し,不必要な損失を引き起こす可能性があります. サイクルのパラメータは,偽ブレイクの確率を減らすために調整できます.
ストップ・ロスの設定は,不要なストップ・ロスの高い確率で,あまりにも攻撃的になり得ます.ストップ・ロスの範囲は適切に緩和され,またはストップ・ロスの有効化の前提条件として他の条件を追加することができます.
市場が急激に動いている場合,ストップ・ロスは,利益保護の適切な役割を果たすことができません. この場合,手動的な介入が時間内に損失を止める必要があります.
ロングとショートポジションが頻繁に切り替わると,取引コストプレッシャーは大きくなります.不必要な往復を減らすために,入場条件を適切に緩和することができます.
RSI アリガタートレンド戦略は,次の側面で最適化することができます:
最適なパラメータ組み合わせを見つけるためにアリガターラインパラメータ設定を最適化します
入力条件ロジックを最適化します.例えば,シグナルをフィルターする取引量などの指標を追加します.
利回り・ストップ・ロスの戦略を最適化し,市場状況と利回りレベルに適応できるようにする.
極端な出来事に対処し,異常な市場状況への曝露を避けるためのメカニズムを追加する
リスクを軽減するために,単一の取引に投資された資本の割合を制御するためのオープンポジションアルゴリズムを追加する
一般的に,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)