The EMA Crossover Strategy in Pine Script v6 (Complete Guide + Code)
The EMA crossover is the 'hello world' of trading strategies. Here's a proper v6 implementation with a trend filter, stops, and alerts — not the broken version everyone copies.
Why the basic version fails
Search 'EMA crossover Pine Script' and you'll find a dozen three-line scripts: cross the fast EMA over the slow, go long. They compile, but they have no stop, no filter, and trade every whipsaw in a sideways market. That's not a strategy — it's a loss generator.
A real EMA crossover strategy adds a trend filter to skip chop, a stop loss to cap risk, and a target to lock gains.
The complete strategy
//@version=6
strategy("EMA Crossover + Filter", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10, commission_type=strategy.commission.percent, commission_value=0.04, slippage=1)
fast = input.int(9, "Fast EMA")
slow = input.int(21, "Slow EMA")
rsiLen = input.int(14, "RSI Filter Length")
atrMult = input.float(1.5, "ATR Stop Mult", step=0.1)
rr = input.float(2.0, "Reward:Risk", step=0.1)
emaFast = ta.ema(close, fast)
emaSlow = ta.ema(close, slow)
rsi = ta.rsi(close, rsiLen)
atr = nz(ta.atr(14), ta.tr)
crossUp = ta.crossover(emaFast, emaSlow)
var float stopL = na
var float tpL = na
if strategy.position_size == 0
stopL := na
tpL := na
if crossUp and rsi > 50 and barstate.isconfirmed
strategy.entry("Long", strategy.long)
stopL := close - atrMult * atr
tpL := close + atrMult * atr * rr
alert("EMA cross long " + syminfo.ticker, alert.freq_once_per_bar_close)
strategy.exit("Long X", from_entry="Long", stop=stopL, limit=tpL)
plot(emaFast, "Fast", color=color.aqua)
plot(emaSlow, "Slow", color=color.orange)Tip
The RSI > 50 filter keeps you out of crossovers that happen in downtrends — the single biggest improvement over the naive version.
Tuning it
9/21 is a common pairing, but the best periods depend on your market and timeframe. Rather than guess, test ranges systematically — TradePilot's Strategy Optimizer does exactly this across hundreds of combinations.
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
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
ReadTutorialHow to Write an RSI Strategy in Pine Script v6 (With Working Code)
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