Dix stratégies classiques avec leur code Pine Script v5 complet, et cinq stratégies de tendance exportées et jugées par la Lab. Copiez-en une dans TradingView, puis testez-la sur des données jamais vues dans la Lab gratuite.
Les scripts gratuits restent ouverts pour inspection TradingView et tests rapides.
Builder transforme les idées en ArenaScript lisible avec backtests privés et export Pine.
Operator montre où une stratégie survit, meurt, reste cash, ou bat le Buy & Hold et un filtre 200 jours.
La sortie publique reste TradingView ; la Lab gratuite valide avant cette sortie.
//@version=5
strategy("RSI Mean Reversion", overlay=true, pyramiding=0, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.1, process_orders_on_close=true, margin_long=0)
rsiLen = input.int(14)
rsiVal = ta.rsi(close, rsiLen)
if (ta.crossover(rsiVal, 30))
strategy.entry("Long", strategy.long)
if (ta.crossunder(rsiVal, 70))
strategy.close("Long")//@version=5
strategy("EMA Crossover 9/21", overlay=true, pyramiding=0, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.1, process_orders_on_close=true, margin_long=0)
fast = ta.ema(close, 9)
slow = ta.ema(close, 21)
if (ta.crossover(fast, slow))
strategy.entry("Long", strategy.long)
if (ta.crossunder(fast, slow))
strategy.close("Long")//@version=5
strategy("EMA Ribbon", overlay=true)
ema1 = ta.ema(close, 8)
ema2 = ta.ema(close, 21)
ema3 = ta.ema(close, 55)
if (ema1 > ema2 and ema2 > ema3)
strategy.entry("Long", strategy.long)
if (ema1 < ema2)
strategy.close("Long")//@version=5
strategy("BB Bounce", overlay=true, pyramiding=0, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.1, process_orders_on_close=true, margin_long=0)
length = input.int(20)
mult = input.float(2.0)
[middle, upper, lower] = ta.bb(close, length, mult)
if (close < lower)
strategy.entry("Long", strategy.long)
if (close > upper)
strategy.close("Long")//@version=5
// MACD 12/26/9 : long tant que la ligne MACD est au-dessus de sa signal, plat sinon.
// Le croisement haussier ouvre, le croisement baissier ferme : ces etats en sont la lecture.
strategy("MACD Momentum", overlay=true, pyramiding=0, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.1, process_orders_on_close=true, margin_long=0)
[macdLine, signalLine, hist] = ta.macd(close, 12, 26, 9)
longSignal = macdLine > signalLine
exitSignal = macdLine < signalLine
if longSignal
strategy.entry("Long", strategy.long)
if exitSignal
strategy.close("Long")//@version=5
// SuperTrend (facteur 3, ATR 10) : long en tendance haussiere, plat sinon.
strategy("SuperTrend", overlay=true, pyramiding=0, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.1, process_orders_on_close=true, margin_long=0)
// direction vaut -1 en hausse, +1 en baisse.
[supertrend, direction] = ta.supertrend(3.0, 10)
longSignal = direction < 0
exitSignal = direction > 0
if longSignal
strategy.entry("Long", strategy.long)
if exitSignal
strategy.close("Long")//@version=5
strategy("Stoch RSI", overlay=true)
rsi1 = ta.rsi(close, 14)
k = ta.sma(ta.stoch(rsi1, rsi1, rsi1, 14), 3)
d = ta.sma(k, 3)
if (ta.crossover(k, d) and k < 20)
strategy.entry("Long", strategy.long)
if (ta.crossunder(k, d) and k > 80)
strategy.close("Long")//@version=5
strategy("ATR Breakout", overlay=true)
atr = ta.atr(14)
upper = ta.highest(high, 20)
if (close > upper[1] and atr > ta.sma(atr, 20))
strategy.entry("Long", strategy.long)
strategy.exit("Exit", "Long", stop=close - atr * 2)//@version=5
strategy("VWAP Bounce", overlay=true)
vwapVal = ta.vwap(hlc3)
if (close > vwapVal and close[1] < vwapVal[1])
strategy.entry("Long", strategy.long)
if (close < vwapVal and close[1] > vwapVal[1])
strategy.close("Long")//@version=5
strategy("RSI + EMA Combo", overlay=true)
rsiVal = ta.rsi(close, 14)
ema50 = ta.ema(close, 50)
if (ta.crossover(rsiVal, 30) and close > ema50)
strategy.entry("Long", strategy.long)
if (rsiVal > 70 or close < ema50)
strategy.close("Long")//@version=5
strategy("Faber 10-Month Timing", overlay=true, pyramiding=0, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.1, process_orders_on_close=true, margin_long=0)
smaVal = ta.sma(close, 10)
if (close > smaVal)
strategy.entry("Long", strategy.long)
if (close < smaVal)
strategy.close("Long")Réglages d'origine de la source, jugés en walk-forward (4 plis, 2019-2025, deux marchés jamais ouverts par la famille, frais 10 pb). Aucune ne bat l'achat-conservation sur plusieurs cycles. Chaque Pine est l'export TradingView exact de la règle jugée, produit par la Lab (sans inputs, journal des trades dans les Pine Logs).
Recherche sur données publiques passées ; ni preuve scellée ni conseil d'investissement. Méthode et limites : l'article complet.
entry: ROC(12, 1M) > 0 · short: ROC(12, 1M) < 0 · size: vol_target 40% window 60entry: price > SMA(10, 1M) · exit: price < SMA(10, 1M) · monthlyentry: VOTE(DONCHIAN_TREND(5…360)) >= 5 of 9 · size: vol_target 25% window 90entry: price > SMA(200, 1d) · exit: price < SMA(200, 1d) · size: vol_target 40% window 360long: EMA(50) > EMA(200) · short: EMA(50) < EMA(200) · size: 100%Une stratégie qui bat le cash, le Buy & Hold et un filtre 200 jours sur un holdout scellé ? Soumettez-la. Battre le HODL YouTube en bear ne suffit pas.
Soumettre & Tester Votre ScriptEn soumettant, vous acceptez que votre strategie puisse etre analysee pour améliorer nos systèmes IA.
Une stratégie Pine ne sert qu'une fois visible sur un graphique live. Voici l'ordre exact qui évite les pièges habituels.
Le compte web gratuit suffit pour tracer un script et créer quelques alertes. Les plans payants ajoutent des indicateurs, alertes et dispositions — ils se décident sur TradingView et ne changent jamais un verdict Strategy Arena. Strategy Arena n'est pas un courtier et ne place aucun ordre réel.
Un backtest naïf surestime presque toujours une stratégie. Le Lab utilise un holdout chronologique scellé et des diagnostics d'incertitude pour réduire le sur-apprentissage avant qu'un script n'atteigne un graphique live.