OPEN-SOURCE SCRIPT
aurora

//version=6
strategy("AURORA PRIME — MAX CAGR v3",
overlay=true,
initial_capital=100000,
pyramiding=2,
process_orders_on_close=true)
//----------------------------------------------------
// INPUTS
//----------------------------------------------------
baseRisk = input.float(0.6, "Base Risk %", step=0.1)
expRisk = input.float(0.9, "Expansion Risk %", step=0.1)
atrLen = input.int(14, "ATR Length")
stopATRmult = input.float(1.5, "Stop ATR Mult")
trailATRmult = input.float(2.0, "Trail ATR Mult")
adxLen = input.int(14, "ADX Length")
adxThresh = input.float(22, "ADX Trend Threshold")
volMult = input.float(1.5, "Volume Expansion Mult")
//----------------------------------------------------
// CORE INDICATORS
//----------------------------------------------------
atr = ta.atr(atrLen)
ema200 = ta.ema(close, 200)
// --- Manual ADX Calculation ---
upMove = high - high[1]
downMove = low[1] - low
plusDM = (upMove > downMove and upMove > 0) ? upMove : 0
minusDM = (downMove > upMove and downMove > 0) ? downMove : 0
trur = ta.rma(ta.tr(true), adxLen)
plusDI = 100 * ta.rma(plusDM, adxLen) / trur
minusDI = 100 * ta.rma(minusDM, adxLen) / trur
dx = 100 * math.abs(plusDI - minusDI) / (plusDI + minusDI)
adx = ta.rma(dx, adxLen)
volPower = volume / ta.sma(volume, 20)
volExpansion = volPower > volMult
trendRegime = adx > adxThresh
expansionRegime = trendRegime and volExpansion
// Structure bias (HTF)
htfClose = request.security(syminfo.tickerid, "60", close)
htfEMA = request.security(syminfo.tickerid, "60", ta.ema(close, 50))
bullBias = htfClose > htfEMA
bearBias = htfClose < htfEMA
//----------------------------------------------------
// ENTRY LOGIC
//----------------------------------------------------
longSignal = bullBias and trendRegime and close > ema200
shortSignal = bearBias and trendRegime and close < ema200
//----------------------------------------------------
// RISK ENGINE
//----------------------------------------------------
riskPct = expansionRegime ? expRisk : baseRisk
riskCash = strategy.equity * riskPct * 0.01
stopDist = atr * stopATRmult
qty = stopDist > 0 ? riskCash / stopDist : 0
//----------------------------------------------------
// EXECUTION
//----------------------------------------------------
longSL = close - stopDist
shortSL = close + stopDist
// 2R partial
longTP1 = close + stopDist * 2
shortTP1 = close - stopDist * 2
// ATR trail
trailLong = atr * trailATRmult
trailShort = atr * trailATRmult
if longSignal and strategy.position_size <= 0
strategy.entry("AURORA", strategy.long, qty)
strategy.exit("TP1", "AURORA", qty_percent=50, limit=longTP1)
strategy.exit("Trail", "AURORA", stop=longSL, trail_points=trailLong)
if shortSignal and strategy.position_size >= 0
strategy.entry("AURORA", strategy.short, qty)
strategy.exit("TP1", "AURORA", qty_percent=50, limit=shortTP1)
strategy.exit("Trail", "AURORA", stop=shortSL, trail_points=trailShort)
// Pyramiding logic
inLong = strategy.position_size > 0
inShort = strategy.position_size < 0
entryPrice = strategy.position_avg_price
unrealRLong = inLong ? (close - entryPrice) / stopDist : 0
unrealRShort = inShort ? (entryPrice - close) / stopDist : 0
if inLong and unrealRLong >= 1 and expansionRegime
strategy.entry("AURORA-ADD", strategy.long, qty)
if inShort and unrealRShort >= 1 and expansionRegime
strategy.entry("AURORA-ADD", strategy.short, qty)
plot(ema200, color=color.orange)
strategy("AURORA PRIME — MAX CAGR v3",
overlay=true,
initial_capital=100000,
pyramiding=2,
process_orders_on_close=true)
//----------------------------------------------------
// INPUTS
//----------------------------------------------------
baseRisk = input.float(0.6, "Base Risk %", step=0.1)
expRisk = input.float(0.9, "Expansion Risk %", step=0.1)
atrLen = input.int(14, "ATR Length")
stopATRmult = input.float(1.5, "Stop ATR Mult")
trailATRmult = input.float(2.0, "Trail ATR Mult")
adxLen = input.int(14, "ADX Length")
adxThresh = input.float(22, "ADX Trend Threshold")
volMult = input.float(1.5, "Volume Expansion Mult")
//----------------------------------------------------
// CORE INDICATORS
//----------------------------------------------------
atr = ta.atr(atrLen)
ema200 = ta.ema(close, 200)
// --- Manual ADX Calculation ---
upMove = high - high[1]
downMove = low[1] - low
plusDM = (upMove > downMove and upMove > 0) ? upMove : 0
minusDM = (downMove > upMove and downMove > 0) ? downMove : 0
trur = ta.rma(ta.tr(true), adxLen)
plusDI = 100 * ta.rma(plusDM, adxLen) / trur
minusDI = 100 * ta.rma(minusDM, adxLen) / trur
dx = 100 * math.abs(plusDI - minusDI) / (plusDI + minusDI)
adx = ta.rma(dx, adxLen)
volPower = volume / ta.sma(volume, 20)
volExpansion = volPower > volMult
trendRegime = adx > adxThresh
expansionRegime = trendRegime and volExpansion
// Structure bias (HTF)
htfClose = request.security(syminfo.tickerid, "60", close)
htfEMA = request.security(syminfo.tickerid, "60", ta.ema(close, 50))
bullBias = htfClose > htfEMA
bearBias = htfClose < htfEMA
//----------------------------------------------------
// ENTRY LOGIC
//----------------------------------------------------
longSignal = bullBias and trendRegime and close > ema200
shortSignal = bearBias and trendRegime and close < ema200
//----------------------------------------------------
// RISK ENGINE
//----------------------------------------------------
riskPct = expansionRegime ? expRisk : baseRisk
riskCash = strategy.equity * riskPct * 0.01
stopDist = atr * stopATRmult
qty = stopDist > 0 ? riskCash / stopDist : 0
//----------------------------------------------------
// EXECUTION
//----------------------------------------------------
longSL = close - stopDist
shortSL = close + stopDist
// 2R partial
longTP1 = close + stopDist * 2
shortTP1 = close - stopDist * 2
// ATR trail
trailLong = atr * trailATRmult
trailShort = atr * trailATRmult
if longSignal and strategy.position_size <= 0
strategy.entry("AURORA", strategy.long, qty)
strategy.exit("TP1", "AURORA", qty_percent=50, limit=longTP1)
strategy.exit("Trail", "AURORA", stop=longSL, trail_points=trailLong)
if shortSignal and strategy.position_size >= 0
strategy.entry("AURORA", strategy.short, qty)
strategy.exit("TP1", "AURORA", qty_percent=50, limit=shortTP1)
strategy.exit("Trail", "AURORA", stop=shortSL, trail_points=trailShort)
// Pyramiding logic
inLong = strategy.position_size > 0
inShort = strategy.position_size < 0
entryPrice = strategy.position_avg_price
unrealRLong = inLong ? (close - entryPrice) / stopDist : 0
unrealRShort = inShort ? (entryPrice - close) / stopDist : 0
if inLong and unrealRLong >= 1 and expansionRegime
strategy.entry("AURORA-ADD", strategy.long, qty)
if inShort and unrealRShort >= 1 and expansionRegime
strategy.entry("AURORA-ADD", strategy.short, qty)
plot(ema200, color=color.orange)
Script de código abierto
Fiel al espíritu de TradingView, el creador de este script lo ha convertido en código abierto, para que los traders puedan revisar y verificar su funcionalidad. ¡Enhorabuena al autor! Aunque puede utilizarlo de forma gratuita, recuerde que la republicación del código está sujeta a nuestras Normas internas.
Exención de responsabilidad
La información y las publicaciones no constituyen, ni deben considerarse como asesoramiento o recomendaciones financieras, de inversión, de trading o de otro tipo proporcionadas o respaldadas por TradingView. Más información en Condiciones de uso.
Script de código abierto
Fiel al espíritu de TradingView, el creador de este script lo ha convertido en código abierto, para que los traders puedan revisar y verificar su funcionalidad. ¡Enhorabuena al autor! Aunque puede utilizarlo de forma gratuita, recuerde que la republicación del código está sujeta a nuestras Normas internas.
Exención de responsabilidad
La información y las publicaciones no constituyen, ni deben considerarse como asesoramiento o recomendaciones financieras, de inversión, de trading o de otro tipo proporcionadas o respaldadas por TradingView. Más información en Condiciones de uso.