optomize the following pinescript version 5 code:
//@version=5
strategy("Swing Trading Strategy with ATR Stop Loss and Take Profit", overlay=true)

// Define Daily Chart EMAs
ema20_length = input.int(title="EMA 20 Length", defval=20, minval=1)
ema50_length = input.int(title="EMA 50 Length", defval=50, minval=1)
ema100_length = input.int(title="EMA 100 Length", defval=100, minval=1)
ema200_length = input.int(title="EMA 200 Length", defval=200, minval=1)
daily_ema20 = ta.ema(close, ema20_length)
daily_ema50 = ta.ema(close, ema50_length)
daily_ema100 = ta.ema(close, ema100_length)
daily_ema200 = ta.ema(close, ema200_length)

// Define 4-Hour Chart EMAs
ema20_4h = ta.ema(close, ema20_length*6)
ema50_4h = ta.ema(close, ema50_length*6)
ema100_4h = ta.ema(close, ema100_length*6)
ema200_4h = ta.ema(close, ema200_length*6)

// Define Trend
daily_trend = daily_ema20 > daily_ema50 and daily_ema50 > daily_ema100 and daily_ema100 > daily_ema200
four_hour_trend = ema20_4h > ema50_4h and ema50_4h > ema100_4h and ema100_4h > ema200_4h

// Define RSI
rsi_length = input.int(title="RSI Length", defval=14, minval=1)
rsi_overbought_level = input.float(title="RSI Overbought Level", defval=70.0, minval=0.0, maxval=100.0)
rsi_oversold_level = input.float(title="RSI Oversold Level", defval=30.0, minval=0.0, maxval=100.0)
rsi = ta.rsi(close, rsi_length)

// Define ATR Multiplier
atr_multiplier = input.float(title="ATR Multiplier", defval=2.0, minval=0.0)
atr_period = input.int(title="ATR Period", defval=14, minval=1)
atr = ta.atr(atr_period)

// Define Additional Entry Criteria
price_action_high_length = input.int(title="Price Action High Length", defval=10, minval=1)
price_action_low_length = input.int(title="Price Action Low Length", defval=10, minval=1)
price_action_signal = ta.highest(high, price_action_high_length) > ta.highest(high, price_action_high_length _ 2) and ta.lowest(low, price_action_low_length) > ta.lowest(low, price_action_low_length _ 2)
supp_tf = input.timeframe(title="Support/Resistance Timeframe", defval="D")
supp_length = input.int(title="Support/Resistance Length", defval=30, minval=1)

buy_condition = daily_trend and four_hour_trend and rsi < rsi_oversold_level and price_action_signal
sell_condition = not four_hour_trend or rsi > rsi_overbought_level

stop_loss = atr _ atr_multiplier
take_profit = atr _ atr_multiplier \* 2

if buy_condition
strategy
strategy.entry("Buy", strategy.long)
strategy.exit("Exit", "Buy", stop=stop_loss, limit=take_profit)
to include the following updates:
Optimizing input parameters: In this code, the input parameters for the EMAs, RSI, ATR, and additional entry criteria are fixed. However, it might be more efficient to optimize these input parameters based on the specific instrument being traded. Using a script that can perform parameter optimization, such as the PineCoders BBands Optimizer, can help improve the performance of the strategy.

Using more advanced indicators: While this strategy uses several popular indicators, there are more advanced technical indicators that could potentially provide better signals. For example, using the Ichimoku Cloud or Bollinger Bands could provide additional information about price trends and support/resistance levels.

Adding a trailing stop: A trailing stop is a stop loss order that can be set at a fixed distance away from the current market price, and it moves up as the price increases. This can help protect profits and potentially maximize gains in a trending market.

Incorporating fundamental analysis: While this code focuses solely on technical analysis, it can be helpful to incorporate fundamental analysis as well. For example, monitoring economic indicators or news events related to the instrument being traded can provide additional context and help identify potential market-moving events.

Backtesting: Before deploying any trading strategy, it's important to backtest it using historical data to see how it would have performed in the past. This can help identify any potential weaknesses in the strategy and allow for modifications before trading with real money. Using a backtesting platform such as TradingView's Strategy Tester can help with this process.
