Kombinasi Strategi Multi-Faktor

Penulis:ChaoZhang, Tanggal: 2023-10-26 15:18:34
Tag:

img

Berikut adalah artikel analisis strategi yang saya buat berdasarkan kode strategi trading yang Anda berikan:

Gambaran umum

Strategi ini menggabungkan beberapa faktor untuk membentuk strategi perdagangan yang komprehensif.

  1. Stoch.RSI - Stochastic RSI
  2. RSI - Indeks Kekuatan Relatif
  3. Strategi ganda - Kombinasi dari Stochastic dan RSI
  4. CM Williams Vix Fix - Menemukan dasar pasar
  5. DMI - Indeks Gerakan Arah

Dengan menggabungkan beberapa faktor, ia berusaha untuk memanfaatkan kekuatan setiap faktor dan mengurangi risiko yang terkait dengan mengandalkan satu faktor.

Logika Strategi

Indikator teknis utama yang digunakan dalam strategi ini adalah:

  1. Stoch.RSI- Sebuah osilator stokastik diterapkan pada nilai RSI daripada harga.

  2. RSI- Relative Strength Index, pengukur kondisi overbought/oversold.

  3. Strategi Ganda- Menggabungkan Stochastic dan RSI untuk sinyal perdagangan. Beli ketika Stochastic %K melintasi di bawah %D dan RSI melintasi di bawah tingkat oversold. Jual ketika sebaliknya terjadi.

  4. CM Williams Vix Fix- Menghitung rentang persentase volatilitas harga selama periode review.

  5. DMIMenggunakan +DI/-DI diferensial untuk menentukan arah tren / kekuatan.

Dengan mengintegrasikan sinyal dari indikator ini, strategi menyediakan sistem yang lebih kuat untuk mengidentifikasi tren dan titik balik.

Keuntungan

  • Diversifikasi melalui beberapa faktor, mengimbangi kelemahan individu
  • Menyediakan baik sinyal trend-mengikuti dan rata-rata-reversi
  • Mengidentifikasi ekstrim overbought/oversold dan pembalikan
  • Parameter yang dioptimalkan yang disesuaikan dengan sistem pasar yang berbeda
  • Mengintegrasikan arah tren / kekuatan filter

Risiko

  • Kekuatan sistem multifaktor secara keseluruhan masih belum terbukti
  • Potensi redundansi antara beberapa indikator
  • Prioritas yang tidak jelas antara sinyal yang bertentangan
  • Pengaturan parameter membutuhkan backtesting yang ketat
  • Periode penyimpanan yang panjang dapat menghasilkan hasil yang kurang baik

Peningkatan

  • Filter lebih lanjut/optimalkan set indikator
  • Parameter yang disesuaikan dengan pasar target
  • Menetapkan aturan masuk/keluar yang jelas
  • Menggabungkan stop loss, mengambil keuntungan untuk mengendalikan risiko
  • Dampak uji dari periode penyimpanan pada kinerja

Ringkasan

Strategi ini menggabungkan kekuatan Stoch.RSI, RSI, Double Strategy, CM Williams Vix Fix dan DMI. Ini memberikan sinyal yang lebih komprehensif tetapi juga mempersulit optimasi parameter. Peningkatan lebih lanjut di sekitar mengoptimalkan parameter, menyaring faktor unik, dan mendefinisikan aturan perdagangan dapat meningkatkan ketahanan. Kelayakan jangka panjang dan ketahanan masih membutuhkan validasi yang ketat. Secara keseluruhan, ini memberikan contoh yang baik dari sistem multifaktor yang layak dipelajari.


/*backtest
start: 2023-10-18 00:00:00
end: 2023-10-25 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/


     //////////////////////////////////////////////////////////////////////
    ////  STOCHASTIC_RSI+RSI+DOUBLE_STRATEGY+CM_WILLIAMS_VIX_FIX+DMI  ////
   //////////////////////////////////////////////////////////////////////


//  This is a simple combination of integrated and published scripts, useful 
//  if you don't have a PRO account and want to bypass the 3 indicator limit. 
//  It includes:
//  1) Stoch.RSI
//  2) Relative strenght index
//  3) Stochastic + RSI, Double Strategy (by ChartArt)
//  4) CM_Williams_Vix_Fix Finds Market Bottoms (by ChrisMoody)
//  5) Directional Movement Index (DMI)
//  For more details about 3) and 4) check the original scripts.


//@version=3

strategy(title="Stoch.RSI+RSI+DoubleStrategy+CMWilliamsVixFix+DMI", shorttitle="Stoch.RSI+RSI+DoubleStrategy+CMWilliamsVixFix+DMI")


///STOCH.RSI///
smoothK = input(3, minval=1, title="Stochastic %K Smoothing")
smoothD = input(3, minval=1, title="Stochastic %K Moving Average")
lengthRSI = input(14, minval=1, title="RSI Lenght")
lengthStoch = input(14, minval=1, title="Stochastic Lenght")
RSIprice = close
rsi1 = rsi(RSIprice, lengthRSI)
k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
d = sma(k, smoothD)
plot(k, color=blue, linewidth=2)
plot(d, color=silver, linewidth=2)
h0 = hline(80)
h1 = hline(20)
fill(h0, h1, color=purple, transp=78)


///RSI///
up = rma(max(change(RSIprice), 0), lengthRSI)
down = rma(-min(change(RSIprice), 0), lengthRSI)
rsi2 = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
plot(rsi2, color=fuchsia, linewidth=2)
// band0 = hline(70, linestyle=dotted)
// band1 = hline(30, linestyle=dotted)
// fill(band0, band1, color=purple, transp=100)


///OVERBOUGHT-OVERSOLD STRATEGY///
StochOverBought = input(80, title="Stochastic overbought condition")
StochOverSold = input(20, title="Stochastic oversold condition")
ks = sma(stoch(close, high, low, lengthStoch), smoothK)
ds = sma(k, smoothD)
RSIOverBought = input( 70  , title="RSI overbought condition")
RSIOverSold = input( 30  , title="RSI oversold condition")
vrsi = rsi(RSIprice, lengthRSI)
if (not na(ks) and not na(ds))
    if (crossover(ks,ds) and k < StochOverSold)
        if (not na(vrsi)) and (crossover(vrsi, RSIOverSold))
            strategy.entry("LONG", strategy.long, comment="LONG")
if (crossunder(ks,ds) and ks > StochOverBought)
    if (crossunder(vrsi, RSIOverBought))
        strategy.entry("SHORT", strategy.short, comment="SHORT")
 
 
///CM WILLIAMS VIX FIX///
pd = input(22, title="LookBack Period Standard Deviation High")
bbl = input(20, title="Bollinger Band Length")
mult = input(2.0    , minval=1, maxval=5, title="Bollinger Band Standard Devaition Up")
lb = input(50  , title="Look Back Period Percentile High")
ph = input(.85, title="Highest Percentile - 0.90=90%, 0.95=95%, 0.99=99%")
pl = input(1.01, title="Lowest Percentile - 1.10=90%, 1.05=95%, 1.01=99%")
hp = input(false, title="Show High Range (Based on Percentile and LookBack Period)?")
sd = input(false, title="Show Standard Deviation Line?")
wvf = ((highest(close, pd)-low)/(highest(close, pd)))*100
sDev = mult * stdev(wvf, bbl)
midLine = sma(wvf, bbl)
lowerBand = midLine - sDev
upperBand = midLine + sDev
rangeHigh = (highest(wvf, lb)) * ph
rangeLow = (lowest(wvf, lb)) * pl
col = wvf >= upperBand or wvf >= rangeHigh ? lime : gray
plot(hp and rangeHigh ? rangeHigh : na, title="Range High Percentile", style=line, linewidth=4, color=orange)
plot(hp and rangeLow ? rangeLow : na, title="Range High Percentile", style=line, linewidth=4, color=orange)
plot(wvf, title="Williams Vix Fix", style=columns, linewidth = 4, color=col, transp=85)
plot(sd and upperBand ? upperBand : na, title="Upper Band", style=line, linewidth = 3, color=aqua)


///DIRECTIONAL MOVEMENT INDEX///
len3 = input(14, minval=1, title="DI Length")
lensig3 = input(14, title="ADX Smoothing", minval=1, maxval=50)
up3 = change(high)
down3 = -change(low)
plusDM3 = na(up3) ? na : (up3 > down3 and up3 > 0 ? up3 : 0)
minusDM3 = na(down3) ? na : (down3 > up3 and down3 > 0 ? down3 : 0)
trur3 = rma(tr, len3)
plus3 = fixnan(100 * rma(plusDM3, len3) / trur3)
minus3 = fixnan(100 * rma(minusDM3, len3) / trur3)
sum3 = plus3 + minus3
adx3 = 100 * rma(abs(plus3 - minus3) / (sum3 == 0 ? 1 : sum3), lensig3)
plot(plus3, color=green, style=circles, linewidth=2, title="+DI")
plot(minus3, color=red, style=circles, linewidth=2, title="-DI")
plot(adx3, color=aqua, style=circles, linewidth=3, title="ADX")

Lebih banyak