
Strategi ini merupakan sistem pelacakan tren multi-faktor yang menggabungkan indikator parallax shift (SAR), indeks moving average (EMA), indeks relative strength (RSI), dan indeks trend rata-rata (ADX). Strategi ini mengidentifikasi arah tren potensial melalui sinergi dari beberapa indikator teknis, dan melakukan perdagangan ketika tren dikonfirmasi. Strategi sinyal juga menggunakan metode manajemen risiko dinamis berdasarkan rata-rata amplitudo gelombang nyata (ATR), penghitungan stop loss otomatis, dan level stop loss.
Strategi tren multi-faktor ini berkinerja baik di pasar tren melalui sinkronisasi indikator dan manajemen risiko yang ketat. Keunggulan utamanya adalah verifikasi ganda sinyal dan kontrol risiko dinamis, tetapi perhatikan sensitivitas parameter dan risiko keterlambatan. Pengoptimalan di masa depan harus berfokus pada mekanisme penyesuaian parameter dan identifikasi status pasar untuk meningkatkan kehandalan strategi.
/*backtest
start: 2024-04-23 00:00:00
end: 2024-12-31 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"DOGE_USDT"}]
*/
//@version=5
strategy("π Estrategia SAR+EMA+RSI con Alertas", overlay=true)
// ββββ PARΓMETROS ββββ
riskPerTrade = input.float(2.0, title="Riesgo por operaciΓ³n (%)", minval=0.5, step=0.5)
sarStart = input.float(0.02, title="SAR Start", minval=0.001)
sarIncrement = input.float(0.02, title="SAR Increment", minval=0.001)
sarMax = input.float(0.2, title="SAR Max", minval=0.1)
rsiLength = input.int(6, title="RSI Length", minval=3, maxval=10)
emaFastLength = input.int(2, title="EMA RΓ‘pida", minval=1, maxval=5)
adxThreshold = input.int(30, title="ADX mΓnimo", minval=20, maxval=50)
atrMultiplier = input.float(1.5, title="Multiplicador ATR para SL", step=0.1)
// ββββ INDICADORES ββββ
sar = ta.sar(sarStart, sarIncrement, sarMax)
emaFast = ta.ema(close, emaFastLength)
rsi = ta.rsi(close, rsiLength)
[diplus, diminus, adx] = ta.dmi(14, 14) // Ahora pasamos length y adxSmoothing
atr = ta.atr(14)
// ββββ CONDICIONES ββββ
longCondition = ta.crossover(close, sar) and close > emaFast and rsi > 60 and adx >= adxThreshold
shortCondition = ta.crossunder(close, sar) and close < emaFast and rsi < 40 and adx >= adxThreshold
// ββββ FUNCIΓN MENSAJE ALERTA ββββ
getAlertMessage(isLong) =>
slPoints = atr * atrMultiplier
message = (isLong ? "π COMPRA " : "π» VENTA ") + syminfo.ticker + "\n" +
"Precio: " + str.tostring(math.round(close, 2)) + "\n" +
"SL: " + str.tostring(math.round(isLong ? (close - slPoints) : (close + slPoints), 2)) + "\n" +
"TP: " + str.tostring(math.round(isLong ? (close + slPoints * 2) : (close - slPoints * 2), 2)) + "\n" +
"RSI: " + str.tostring(math.round(rsi, 1)) + "\n" +
"ADX: " + str.tostring(math.round(adx, 1))
message
// ββββ ALERTAS ββββ
if (longCondition)
alert(getAlertMessage(true), alert.freq_once_per_bar_close)
if (shortCondition)
alert(getAlertMessage(false), alert.freq_once_per_bar_close)
if (longCondition)
alert(getAlertMessage(true), alert.freq_once_per_bar_close)
if (shortCondition)
alert(getAlertMessage(false), alert.freq_once_per_bar_close)
// ββββ ENTRADAS DE ESTRATEGIA ββββ
riskAmount = strategy.equity * (riskPerTrade / 100)
slPoints = atr * atrMultiplier
qty = riskAmount / close
if (longCondition)
strategy.entry("Long", strategy.long, qty=qty)
strategy.exit("Exit Long", "Long", stop=close - slPoints, limit=close + slPoints * 2)
if (shortCondition)
strategy.entry("Short", strategy.short, qty=qty)
strategy.exit("Exit Short", "Short", stop=close + slPoints, limit=close - slPoints * 2)
// ββββ VISUALIZACIΓN ββββ
plot(sar, title="SAR", color=color.red, style=plot.style_cross)
plot(emaFast, title="EMA RΓ‘pida", color=color.blue)
bgcolor(longCondition ? color.new(color.green, 90) : shortCondition ? color.new(color.red, 90) : na)