Strategi kuantitatif mengikut arah aliran berbilang faktor

SAR EMA RSI ADX ATR
Tarikh penciptaan: 2025-04-24 17:23:29 Akhirnya diubah suai: 2025-04-24 17:23:29
Salin: 0 Bilangan klik: 355
2
fokus pada
319
Pengikut

Strategi kuantitatif mengikut arah aliran berbilang faktor Strategi kuantitatif mengikut arah aliran berbilang faktor

Gambaran keseluruhan

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.

Prinsip Strategi

  1. Penegasan trend: Apabila harga menembusi paras paras paras (SAR) dan harga penutupan lebih tinggi daripada EMA pantas, mengesahkan trend naik; apabila harga jatuh di bawah SAR dan harga penutupan lebih rendah daripada EMA pantas, mengesahkan trend turun.
  2. Penapis tenagaPenggunaan penapis isyarat penunjuk RSI, yang memerlukan RSI lebih tinggi daripada 60 dan RSI lebih rendah daripada 40 untuk memastikan perdagangan dilakukan pada arah yang lebih kuat.
  3. Pengesahan kekuatan trendPerdagangan dalam pasaran yang bergolak: Periksa kekuatan trend dengan indikator ADX ((terendah 30), dan elakkan berdagang dalam pasaran yang bergolak.
  4. Pengurusan RisikoBerasaskan ATR: stop loss dinamik ((1.5 kali ATR) dan stop loss ((2 kali ATR), dan saiz kedudukan berdasarkan peratusan tetap dana akaun ((2 peratus secara lalai)).

Kelebihan Strategik

  1. Pengesahan pelbagai faktorPeningkatan kualiti isyarat yang ketara melalui pengesahan pelbagai empat penunjuk SAR, EMA, RSI dan ADX.
  2. Pengurusan risiko dinamik: ATR-based Stop Loss Brake mampu menyesuaikan diri secara automatik dengan perubahan turun naik pasaran.
  3. Penapis kekuatan trendPerdagangan hanya berlaku di pasaran trend yang kuat.
  4. Pengiraan kedudukan automatikPengurusan kedudukan berasaskan risiko memastikan risiko setiap urus niaga adalah sama.
  5. Maklumat visual yang jelas: Tanda perdagangan dipaparkan dengan latar belakang berwarna.

Risiko Strategik

  1. Risiko ketinggalan zamanSAR dan EMA adalah penunjuk trend, yang mungkin terlewat apabila trend berbalik.
  2. Sensitiviti parameterPengaturan kitaran pendek: RSI panjang ((6) dan kitaran EMA ((2) boleh menyebabkan perdagangan berlebihan.
  3. Risiko penurunan ADX: Had ADX tetap ((30) mungkin tidak stabil dalam keadaan pasaran yang berbeza.
  4. Ketidaktentuan meningkatkan risikoPendahuluan ATR boleh menyebabkan stop loss yang terlalu luas semasa turun naik yang melampau.
    Penyelesaian:
  • Pengoptimuman dinamik ADX dan parameter RSI
  • Menambah penapis turun naik (seperti penunjuk VIX)
  • Pengurusan kedudukan beransur-ansur menggantikan peratusan tetap

Arah pengoptimuman

  1. Dinamika parameter: mengubah parameter tetap menjadi parameter dinamik berdasarkan keadaan pasaran, seperti menggunakan kadar turun naik untuk menyesuaikan ATR.
  2. Integrasi Pembelajaran Mesin: Mengoptimumkan set parameter penunjuk dengan model latihan data sejarah.
  3. Pengesahan pelbagai kerangka masa: Menyedari trend untuk menyertai tempoh masa yang lebih tinggi.
  4. Penapis gelombang yang tidak normalβ€œSaya tidak tahu apa-apa mengenai apa yang berlaku pada hari ini.
  5. Strategi keluar gabunganIa adalah satu-satunya cara yang boleh anda gunakan untuk keluar dari akaun anda.

ringkaskan

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.

Kod sumber 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)