//@version=5 // ============================================================================ // PipAtlas Pine v5 Strategy Template · MIT License · (c) 2026 PipAtlas // Free to use/modify. Education only - NOT financial advice. Demo-first! // Companion guide: pipatlas.com/learn/conversions/mql5-to-pine-v5 // ============================================================================ strategy("PipAtlas ATR-Risk Template", overlay=true, initial_capital=10000, default_qty_type=strategy.fixed, default_qty_value=1, commission_type=strategy.commission.cash_per_order, commission_value=0.0) // ---- Inputs ---------------------------------------------------------------- atrLen = input.int(14, "ATR length", minval=1) atrMult = input.float(2.0, "Stop distance (ATR x)", step=0.1) riskPct = input.float(1.0, "Risk per trade %", minval=0.1, step=0.1) useRsi = input.bool(true, "Require RSI filter") rsiLen = input.int(14, "RSI length") // ---- Core series ----------------------------------------------------------- atr = ta.atr(atrLen) rsi = ta.rsi(close, rsiLen) // ---- Position sizing: risk % of equity / (stop distance in price) ---------- // FX example: convert pip-based risk by sizing on price distance directly. stopDist = atr * atrMult qty = strategy.equity * (riskPct / 100) / stopDist // ---- Entry logic (translate your MQL5/Backtrader signal here) -------------- longSetup = ta.crossover(ta.ema(close, 21), ta.ema(close, 55)) and (not useRsi or rsi > 50) shortSetup = ta.crossunder(ta.ema(close, 21), ta.ema(close, 55)) and (not useRsi or rsi < 50) if longSetup and strategy.position_size == 0 strategy.entry("L", strategy.long, qty=qty) strategy.exit("L-X", from_entry="L", stop=close - stopDist, trail_points=atr * atrMult / syminfo.mintick) if shortSetup and strategy.position_size == 0 strategy.entry("S", strategy.short, qty=qty) strategy.exit("S-X", from_entry="S", stop=close + stopDist) // ---- Visuals --------------------------------------------------------------- plot(strategy.position_size != 0 ? close - stopDist : na, "Stop", color=color.red, style=plot.style_linebr) bgcolor(longSetup ? color.new(color.green, 92) : shortSetup ? color.new(color.red, 92) : na)