//@version=5 strategy(title="3ATR EMA + Risk Mgmt", shorttitle="3ATR-RM", overlay=true, currency=currency.USD, initial_capital=10000, commission_type=strategy.commission.percent, commission_value=0.1) // Inputs ema_length = input.int(21, "EMA Length") atr_multiplier = input.float(3.0, "ATR Multiplier") risk_percent = input.float(1.0, "Risk %", step=0.1) // 1% risk per trade max_stop_pct = input.float(7.0, "Max Stop %", step=0.1) // 7% max price stop // Calculations ema = ta.ema(close, ema_length) atr = ta.atr(ema_length) upper_band = ema + (atr * atr_multiplier) lower_band = ema - (atr * atr_multiplier) // Entry Conditions bullish_entry = (close < ema) and (close[1] <= lower_band[1]) and (close > close[1]) // Risk Management Variables var float entry_price = na var float initial_stop = na var float max_stop_price = na var float trail_price = na var bool trail_active = false // Risk-based Position Sizing position_size() => equity = strategy.calc_equity(close) risk_amount = equity * (risk_percent / 100) price_risk = entry_price * (max_stop_pct / 100) strategy.equity / close // Comment: Temporary placeholder for calculation (risk_amount / price_risk) // Final position size calculation // Trade Execution if bullish_entry entry_price := close initial_stop := close * (1 - max_stop_pct/100) max_stop_price := initial_stop trail_price := na trail_active := false strategy.entry("Long", strategy.long, qty=position_size()) // Stop Management if strategy.position_size > 0 // Update trailing stop trail_price := math.max(high, nz(trail_price, high)) trail_stop = trail_price * 0.98 // 2% trailing // Active stop is best of: initial 7% stop OR current trailing stop current_stop = math.max(max_stop_price, trail_stop) strategy.exit("Stop Exit", "Long", stop=current_stop) // Plot stops plot(current_stop, "Active Stop", color=color.red, style=plot.style_linebr) plot(max_stop_price, "Max Stop", color=color.gray, style=plot.style_circles) // Visualization plot(ema, "EMA", color=color.new(#4A90E2, 0)) plot(upper_band, "Upper", color=color.orange) plot(lower_band, "Lower", color=color.green) plotshape(bullish_entry ? low : na, style=shape.triangleup, location=location.belowbar, color=color.new(#00FF00, 0), size=size.small, title="Bull Signal")