Gabungan strategi pelbagai faktor

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

img

Berikut adalah artikel analisis strategi terperinci yang saya tulis berdasarkan kod strategi dagangan yang anda berikan:

Ringkasan

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

  1. Stoch.RSI - Stochastic RSI
  2. RSI - Indeks Kekuatan Relatif
  3. Strategi Berganda - Gabungan Stochastic dan RSI
  4. CM Williams Vix Fix - Menemui pasaran bawah
  5. DMI - Indeks Pergerakan Arah

Dengan menggabungkan pelbagai faktor, ia berusaha untuk memanfaatkan kekuatan setiap faktor dan mengurangkan risiko yang berkaitan dengan bergantung kepada satu faktor.

Logika Strategi

Penunjuk teknikal utama yang digunakan dalam strategi ini ialah:

  1. Stoch.RSI- Osilator stokastik yang digunakan untuk nilai RSI dan bukannya harga.

  2. RSI- Indeks Kekuatan Relatif, mengukur keadaan overbought/oversold.

  3. Strategi Berganda- Menggabungkan Stochastic dan RSI untuk isyarat perdagangan. Beli apabila Stochastic %K melintasi di bawah %D dan RSI melintasi di bawah tahap oversold. Jual apabila sebaliknya berlaku.

  4. CM Williams Vix Fix- Mengira julat percentile turun naik harga dalam tempoh melihat kembali.

  5. DMI- Indeks Pergerakan Arah. Menggunakan +DI/-DI pembezaan untuk menentukan arah trend / kekuatan.

Dengan mengintegrasikan isyarat dari penunjuk ini, strategi menyediakan sistem yang lebih kukuh untuk mengenal pasti trend dan titik perubahan.

Kelebihan

  • Kepelbagaian melalui pelbagai faktor, mengimbangi kelemahan individu
  • Menyediakan kedua-dua isyarat trend-mengikuti dan purata-pembungkusan
  • Mengenali kelebihan beli/lebih jual dan pembalikan
  • Parameter yang dioptimumkan yang disesuaikan dengan rejimen pasaran yang berbeza
  • Menggabungkan penapis arah trend / kekuatan

Risiko

  • Kekuatan keseluruhan sistem pelbagai faktor masih belum dibuktikan
  • Potensi redundansi antara beberapa penunjuk
  • Keutamaan yang tidak jelas antara isyarat yang bertentangan
  • Penyesuaian parameter memerlukan backtesting yang ketat
  • Tempoh pemegangan yang panjang mungkin kurang

Peningkatan

  • Menapis lebih lanjut/mengoptimumkan set penunjuk
  • Parameter yang disesuaikan dengan pasaran sasaran
  • Menetapkan peraturan kemasukan/keluar yang jelas
  • Menggabungkan stop loss, mengambil keuntungan untuk mengawal risiko
  • Kesan ujian tempoh penyimpanan terhadap prestasi

Ringkasan

Strategi ini menggabungkan kekuatan Stoch.RSI, RSI, Double Strategy, CM Williams Vix Fix dan DMI. Ia menyediakan isyarat yang lebih komprehensif tetapi juga menyukarkan pengoptimuman parameter. Peningkatan lanjut di sekitar pengoptimuman parameter, penapisan faktor unik, dan menentukan peraturan perdagangan dapat meningkatkan ketahanan. Daya maju jangka panjang dan ketahanan masih memerlukan pengesahan yang ketat. Secara keseluruhan ia memberikan contoh baik sistem multifaktor yang patut 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 lanjut