
Strategi ini adalah sistem pemantauan trend multi-faktor yang menggabungkan indikator peralihan garis paralisis (SAR), purata bergerak indeks (EMA), indeks kekuatan relatif (RSI) dan indeks trend purata (ADX). Ia mengenal pasti arah trend yang berpotensi melalui sinergi pelbagai petunjuk teknikal dan melancarkan perdagangan apabila trend disahkan. Strategi isyarat juga menggunakan kaedah pengurusan risiko dinamik berdasarkan purata gelombang sebenar (ATR), pengiraan stop loss dan tahap stop loss secara automatik.
Strategi trend berbilang faktor ini berprestasi dalam pasaran yang sedang tren melalui sinergi penunjuk dan pengurusan risiko yang ketat. Kelebihan utamanya adalah pengesahan berulang isyarat dan kawalan risiko dinamik, tetapi perhatikan sensitiviti parameter dan risiko ketinggalan. Pengoptimuman masa depan harus memberi tumpuan kepada mekanisme penyesuaian parameter dan pengenalan keadaan pasaran untuk meningkatkan ketahanan 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)