
This strategy is a momentum-based approach that utilizes the Relative Strength Index (RSI) indicator in combination with manual take profit (TP) and stop loss (SL) levels. The main idea behind the strategy is to capture overbought and oversold market conditions using the RSI indicator, while also considering the position of the daily closing price relative to the highest and lowest prices in the recent past. Once the predefined TP or SL levels are reached, the strategy automatically closes the position.
This strategy offers a trading framework based on the RSI momentum indicator while incorporating manual take profit and stop loss functionality, allowing traders to manage their positions according to their risk preferences and market outlook. However, the strategy’s performance largely depends on parameter selection and market conditions. Therefore, traders should exercise caution when using this strategy, conduct thorough backtesting and optimization, and combine it with other forms of analysis and risk management techniques to achieve more robust trading results.
//@version=5
strategy("RSI Strategy with Manual TP and SL", overlay=true)
// Strategy Parameters
length = input(14, title="RSI Length")
overSold = input(30, title="Oversold Level")
overBought = input(70, title="Overbought Level")
trail_profit_pct = input.float(20, title="Trailing Profit (%)")
// RSI Calculation
vrsi = ta.rsi(close, length)
// Entry Conditions for Long Position
rsi_crossed_below_30 = vrsi > overSold and ta.sma(vrsi, 2) <= overSold // RSI crossed above 30
daily_close_above_threshold = close > (ta.highest(close, 50) * 0.7) // Daily close above 70% of the highest close in the last 50 bars
// Entry Conditions for Short Position
rsi_crossed_above_70 = vrsi < overBought and ta.sma(vrsi, 2) >= overBought // RSI crossed below 70
daily_close_below_threshold = close < (ta.lowest(close, 50) * 1.3) // Daily close below 130% of the lowest close in the last 50 bars
// Entry Signals
if (rsi_crossed_below_30 and daily_close_above_threshold)
strategy.entry("RsiLE", strategy.long, comment="RsiLE")
if (rsi_crossed_above_70 and daily_close_below_threshold)
strategy.entry("RsiSE", strategy.short, comment="RsiSE")
// Manual Take Profit and Stop Loss
tp_percentage = input.float(1, title="Take Profit (%)")
sl_percentage = input.float(1, title="Stop Loss (%)")
long_tp = strategy.position_avg_price * (1 + tp_percentage / 100)
long_sl = strategy.position_avg_price * (1 - sl_percentage / 100)
short_tp = strategy.position_avg_price * (1 - tp_percentage / 100)
short_sl = strategy.position_avg_price * (1 + sl_percentage / 100)
strategy.exit("TP/SL Long", "RsiLE", limit=long_tp, stop=long_sl)
strategy.exit("TP/SL Short", "RsiSE", limit=short_tp, stop=short_sl)