This strategy is based on the Relative Strength Index (RSI) technical indicator, making trading decisions by analyzing the overbought and oversold conditions of an asset. When the RSI falls below the oversold threshold, a buy signal is triggered, and when the RSI rises above the overbought threshold, a sell signal is triggered. Additionally, the strategy employs a percentage-based take profit and stop loss mechanism, controlling risk and locking in profits by setting fixed profit and loss percentages. The strategy aims to capture short-term market fluctuations and promptly close positions when the trend reverses, achieving steady returns.
The RSI-based trading strategy with percentage-based take profit and stop loss captures overbought and oversold market conditions, combined with a fixed percentage take profit and stop loss mechanism, promptly closing positions when the trend reverses to achieve steady returns. The strategy’s principle is simple and easy to understand, with controllable risk and strong adaptability. However, it also faces issues such as parameter sensitivity, poor performance in oscillating markets, and trend adjustment risks. By dynamically adjusting parameters, introducing trend filters, optimizing take profit and stop loss mechanisms, incorporating position sizing, and combining with other indicators, the strategy’s robustness and profitability can be further enhanced to better adapt to changing market environments.
/*backtest start: 2024-05-01 00:00:00 end: 2024-05-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("RSI Strategy with Adjustable TP and SL", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10, initial_capital=100000, currency=currency.USD, commission_type=strategy.commission.percent, commission_value=0.1) // RSI settings rsiPeriod = input.int(14, title="RSI Period") rsiOverbought = input.int(70, title="RSI Overbought Level", minval=50, maxval=100) rsiOversold = input.int(30, title="RSI Oversold Level", minval=0, maxval=50) // Fixed TP and SL settings takeProfitPct = input.float(20, title="Take Profit Percentage", step=0.1) / 100 stopLossPct = input.float(5, title="Stop Loss Percentage", step=0.1) / 100 // Calculate RSI rsiValue = ta.rsi(close, rsiPeriod) // Plot RSI hline(rsiOverbought, "RSI Overbought", color=color.red) hline(rsiOversold, "RSI Oversold", color=color.green) plot(rsiValue, title="RSI", color=color.purple) // Entry conditions buyCondition = ta.crossunder(rsiValue, rsiOversold) sellCondition = ta.crossover(rsiValue, rsiOverbought) // Calculate stop loss and take profit prices var float entryPrice = na var float stopLossLevel = na var float takeProfitLevel = na if (buyCondition) entryPrice := close stopLossLevel := entryPrice * (1 - stopLossPct) takeProfitLevel := entryPrice * (1 + takeProfitPct) strategy.entry("Buy", strategy.long) // Close positions when TP or SL is hit if (strategy.position_size > 0) if (close <= stopLossLevel) strategy.close("Buy", comment="Stop Loss Hit") if (close >= takeProfitLevel) strategy.close("Buy", comment="Take Profit Hit") // Close positions when RSI crosses above overbought level if (sellCondition) strategy.close("Buy", comment="RSI Overbought") // Optional: Add alerts alertcondition(buyCondition, title="Buy Alert", message="RSI crossed below oversold level") alertcondition(sellCondition, title="Sell Alert", message="RSI crossed above overbought level")template: strategy.tpl:40:21: executing "strategy.tpl" at <.api.GetStrategyListByName>: wrong number of args for GetStrategyListByName: want 7 got 6