How to Write an RSI Strategy in Pine Script v6 (With Working Code)
A complete, copy-paste RSI strategy in Pine Script v6 — entries, exits, stop loss, and alerts. Plus the three mistakes that make most RSI scripts repaint or never trade.
What an RSI strategy actually needs
RSI (Relative Strength Index) measures momentum on a 0–100 scale. The classic strategy buys when RSI is oversold (below 30) and sells when it's overbought (above 70). Simple in theory — but a naive implementation either trades on every bar or repaints after the fact.
A production RSI strategy in Pine Script v6 needs four things: a real entry condition using a cross (not a level), a stop loss stored at entry, a take-profit target, and alerts. Miss any one and the backtest lies to you.
- Use ta.crossover/ta.crossunder, not 'rsi < 30' (which is true on every oversold bar)
- Gate entries with barstate.isconfirmed to avoid intrabar repainting
- Store stop and target in 'var float' at entry — never recalc every bar
- Add alert() inside the entry block with a real message
The Pine Script v6 RSI strategy
Here is a complete, compile-clean RSI mean-reversion strategy. Paste it into the TradingView Pine Editor and click Add to chart.
//@version=6
strategy("RSI Mean Reversion", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10, commission_type=strategy.commission.percent, commission_value=0.04, slippage=1)
rsiLen = input.int(14, "RSI Length", minval=1)
osLevel = input.float(30, "Oversold", minval=1, maxval=50)
obLevel = input.float(70, "Overbought", minval=50, maxval=99)
atrMult = input.float(1.5, "ATR Stop Mult", minval=0.1, step=0.1)
rr = input.float(2.0, "Reward:Risk", minval=0.5, step=0.1)
rsi = ta.rsi(close, rsiLen)
atr = nz(ta.atr(14), ta.tr)
longEntry = ta.crossover(rsi, osLevel)
shortEntry = ta.crossunder(rsi, obLevel)
var float longStop = na
var float longTP = na
if strategy.position_size == 0
longStop := na
longTP := na
if longEntry and barstate.isconfirmed
strategy.entry("Long", strategy.long)
longStop := close - atrMult * atr
longTP := close + atrMult * atr * rr
alert("RSI long " + syminfo.ticker, alert.freq_once_per_bar_close)
strategy.exit("Long X", from_entry="Long", stop=longStop, limit=longTP)
plot(rsi, "RSI", display=display.none)Tip
Want this generated for any indicator in seconds, injected straight into TradingView? That's exactly what TradePilot does — describe it in plain English and get clean v6 code.
Three mistakes that ruin RSI strategies
First: using 'rsi < 30' as the entry. That condition is true on every bar RSI stays oversold, so the strategy fires repeatedly. Use ta.crossover(rsi, 30) so it triggers once, on the bar RSI crosses up.
Second: no barstate.isconfirmed. Without it, signals can appear intrabar and vanish — your backtest shows trades that never would have happened live.
Third: recalculating the stop from current price every bar. Store it once at entry in a var float so it stays fixed for the life of the trade.
TradePilot Team
Traders and engineers building the fastest way to go from idea to live Pine Script strategy, right inside TradingView.
More articles
TradingView Alerts Not Firing? The Pine Script Reasons and Fixes
ReadGuidePine Script for Beginners: Where to Start in 2026
ReadEducationCan AI Write Profitable Trading Strategies? An Honest Answer
ReadTutorialThe EMA Crossover Strategy in Pine Script v6 (Complete Guide + Code)
ReadComparisonPine Script vs MQL vs thinkScript: Which Trading Language Should You Learn?
ReadPine ScriptMulti-Timeframe Pine Script: Using request.security Without Repainting
ReadEducationTradingView Strategy Tester Explained: Reading Your Backtest Like a Pro
ReadTutorialHow to Add a Stop Loss and Take Profit in Pine Script v6
ReadPine ScriptPine Script 'Could Not Find Function' Error: Why It Happens and How to Fix It
ReadStrategy10 Pine Script Indicators Worth Building in 2026 (And How)
ReadPine ScriptPine Script Alerts: alert() vs alertcondition() and When to Use Each
ReadComparisonFree vs Paid Pine Script AI: Is It Worth Paying?
ReadGuidePine Script Generator vs Writing It By Hand: Which Is Faster?
ReadGuideWhy AI Gets Pine Script Wrong (And How to Fix It)
ReadGuideThe Best Pine Script AI for Beginners in 2026
ReadComparisonCan ChatGPT Write Pine Script v6? We Tested It Properly
ReadPine ScriptPine Script Compile Errors: The Most Common Causes and Exact Fixes
ReadEducationTradingView Pine Script Generator: How AI Writes Your Strategy Code
ReadStrategyPine Script Strategy Optimizer: How to Find the Best Parameters for Your Strategy
ReadTutorialHow to Create a Pine Script Strategy with AI: Complete 2026 Guide
ReadPine ScriptPine Script v6 Function Reference: ta.*, strategy.*, input.*, request.*
ReadTutorialHow to Install TradePilot in TradingView (Step-by-Step Guide)
ReadComparisonBest Free AI Tools for Pine Script in 2026 (Honest Comparison)
ReadPine ScriptPine Script v6 Syntax Changes: Everything That Breaks Coming from v5
ReadEducationThe Best TradingView Indicators and Strategy Types in 2025 (And How to Build Them with AI)
ReadEducationHow to Backtest a Trading Strategy in TradingView (The Right Way)
ReadEducationPine Script v6 Complete Guide: Strategies, Indicators, and Alerts That Actually Work
ReadComparisonTradePilot vs ChatGPT for Pine Script: Why a Specialist Wins Every Time
ReadProductEdit Any Pine Script Strategy with Plain English — No Coding Required
ReadProductOne Click to Fix Any Pine Script Error Inside TradingView
ReadProductStop Guessing Parameters. TradePilot's Strategy Optimizer Tests Them All.
ReadProductWe Built the Fastest AI Pine Script Generator Inside TradingView
ReadPine ScriptEMA Crossover Strategy in Pine Script v6: Full Code with RSI Filter, Stop Loss & Alerts
ReadBacktestingTradingView Backtesting Guide 2025: How to Test Any Strategy with Pine Script
ReadAI TradingAI Pine Script Generator: How to Create TradingView Strategies Without Coding in 2025
ReadPine ScriptPine Script Strategy: The Complete 2025 Guide to Writing TradingView Strategies
Read