この戦略は,過剰購入と過剰販売の状況を特定し,トレンドを追跡するために,相対強度指数 (RSI) 指標に基づいて設計されています.RSIが過剰販売線を下回るときはロングになり,RSIが過剰購入線上回るときはショートになり,市場の主要なトレンドに従うことで利益を得ることを目指します.
この戦略は,RSIインジケーターを使用して,市場における過剰購入および過剰販売状態を特定する.RSIは,一定の期間における価格変動に基づいて計算される.30未満のRSIは過売りとみなされ,70を超えるRSIは過買いとみなされる.
具体的には,この戦略は,まずRSIパラメータの長さ=14,オーバーボールド=70,オーバーセール=30を定義し,その後,閉じる価格に基づいてRSI値vrsiを計算します. vrsiがオーバーボールドライン以上またはオーバーセールライン以下を横切ると,それに応じてロングまたはショートトレードをトリガーします.トレードに入ると,etoroStopTicksのストップロスは設定されます.トレードウィンドウ内でストップロスがトリガーされるとポジションは閉鎖されます.
この方法により,戦略は市場の主要な傾向 - 過売り状況でロング,過買い状況でショート - に従うことができます.
解決策:
戦略は以下の側面で最適化できます.
異なるRSI期間と過買い/過売りレベルをテストし,最適なパラメータを見つけ,誤った信号を減らす.
MAとMACDを加えると,トレンド方向を判断し,ターニングポイントで間違った信号を避ける.
ATR を使って,適応型ストップ損失を設定し,市場の変動をよりよく追跡する.
RSI信号にブレイクアウトやボリューム増加などの条件を追加して 入力精度を向上します
この戦略は,RSIを使用して過買い・過売り状況を特定することによってトレンドを把握する.従来の追跡ストップ戦略と比較して,市場を指標でタイミングする利点があります.しかし,RSIのダイバージェンスやトレンド逆転を検出できないような問題は解決する必要があります.パラメータ最適化,トレンド判断,ダイナミックストップ損失のさらなる改善は安定性と収益性を向上させることができます.
/*backtest start: 2023-10-01 00:00:00 end: 2023-10-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("RSI Etoro Strategy", overlay=true, max_bars_back=2000) // To use: // Capital = capital * leverage // Slippage Ticks: 3, 5 ? (Mainly for spread) // etoroStopTicks: Set it accordingly to the stock (to corresponds to etoro default of 50 % for exemple...) // === INPUT BACKTEST RANGE === FromMonth = input(defval = 12, 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 = 1995) ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12) ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) ToYear = input(defval = 9999, title = "To Year", minval = 1995) // === FUNCTION EXAMPLE === start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window window() => time >= start and time <= finish ? true : false // create function "within window of time" length = input( 14 ) overSold = input( 30 ) overBought = input( 70 ) etoroStopTicks = input( 120 ) // 120 because it is approximatively the number of ticks for default SL of 50% at x5 leverage for copper (no fee)... price = close vrsi = rsi(price, length) if (not na(vrsi)) if (crossover(vrsi, overSold)) strategy.entry("RsiLE", strategy.long, comment="RsiLE", when = window()) if (crossunder(vrsi, overBought)) strategy.entry("RsiSE", strategy.short, comment="RsiSE", when = window()) strategy.exit("exit SE", "RsiSE", loss=etoroStopTicks, when = window()) strategy.exit("exit LE", "RsiLE", loss=etoroStopTicks, when = window()) //plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)