Strategi SMA Pembalikan Purata HYE

Penulis:ChaoZhang, Tarikh: 2023-12-15 16:51:23
Tag:

img

Ringkasan

HYE Mean Reversion SMA Strategy adalah strategi perdagangan reversyen yang menggunakan purata bergerak mudah dan indeks kekuatan relatif (RSI). Ia menghasilkan isyarat beli dan jual apabila harga menyimpang dari purata bergerak dengan peratusan tertentu, digabungkan dengan penapisan penunjuk RSI. Ia adalah strategi perdagangan jangka pendek.

Logika Strategi

Strategi ini terutamanya berdasarkan peraturan berikut:

  1. Apabila purata bergerak mudah 2 tempoh jatuh 3% di bawah purata bergerak mudah 5 tempoh, ia dianggap harga menyimpang dari purata dan isyarat beli dihasilkan.

  2. Apabila SMA 2 tempoh melintasi SMA 5 tempoh, ia dianggap harga kembali ke purata dan isyarat jual dihasilkan.

  3. Digabungkan dengan purata bergerak eksponensial RSI 5 tempoh, isyarat beli hanya dihasilkan apabila RSI di bawah 30 dan isyarat jual apabila RSI di atas 70, untuk mengelakkan perdagangan yang tidak perlu.

Idea utama adalah untuk menangkap peluang pembalikan purata dengan menggunakan turun naik harga jangka pendek. Beli apabila harga turun dengan peratusan tertentu, jual apabila harga kembali berhampiran purata bergerak, untuk membuat keuntungan. Sementara itu, penunjuk RSI dapat mengenal pasti keadaan overbought dan oversold untuk menapis beberapa isyarat perdagangan yang bising.

Analisis Kelebihan

Strategi ini mempunyai kelebihan berikut:

  1. Mudah dilaksanakan dengan kos pemantauan yang rendah.

  2. Mengambil peluang pembalikan purata jangka pendek menggunakan penyimpangan harga dari purata bergerak. prestasi backtest yang baik secara sejarah.

  3. Penunjuk RSI dapat menapis bunyi bising perdagangan dengan berkesan dan mengelakkan mengejar puncak dan lembah pembunuhan.

  4. Penyesuaian parameter yang fleksibel yang dapat disesuaikan dengan persekitaran pasaran yang berbeza.

  5. Menyokong perdagangan panjang sahaja, pendek sahaja atau kedua-dua arah untuk memenuhi pilihan yang berbeza.

Analisis Risiko

Terdapat juga beberapa risiko:

  1. Kembalikan purata bergantung pada harga yang kembali ke purata bergerak. Terdapat risiko kehilangan berhenti yang tinggi jika perubahan harga yang drastik berlaku.

  2. Tetapan parameter yang tidak betul boleh menyebabkan perdagangan berlebihan atau peluang yang hilang.

  3. Prestasi sangat berkorelasi dengan pasaran.

Tindakan balas:

  1. Tetapkan stop loss yang betul untuk mengawal kerugian perdagangan tunggal.

  2. Secara beransur-ansur mengoptimumkan parameter dan menilai pulangan yang disesuaikan dengan risiko.

  3. Gabungkan dengan indeks saham untuk meningkatkan daya adaptasi.

Arahan pengoptimuman

Strategi ini boleh dioptimumkan dalam aspek berikut:

  1. Uji kombinasi purata bergerak yang berbeza untuk mencari parameter optimum.

  2. Cuba menggabungkan penunjuk lain untuk mengenal pasti trend dan meningkatkan kadar kemenangan.

  3. Tambahkan mekanisme stop loss untuk mengurangkan pengeluaran maksimum.

  4. Mengoptimumkan peraturan kemasukan dan keluar untuk meningkatkan faktor keuntungan.

  5. Menggunakan teknik pembelajaran mesin untuk membina parameter adaptif.

Kesimpulan

HYE Mean Reversion SMA Strategy adalah strategi pembalikan purata jangka pendek yang mudah dan praktikal. Ia menggunakan penyimpangan harga dari purata bergerak untuk menjana isyarat perdagangan, menapis bunyi bising dengan penunjuk RSI. Ia menunjukkan prestasi backtest yang baik. Strategi ini mudah dilaksanakan dengan parameter yang boleh disesuaikan dengan persekitaran pasaran yang berbeza. Tetapi ketidakpastian risiko pembalikan dan stop loss harus diperhatikan, memerlukan pengoptimuman yang betul untuk keadaan pasaran yang berbeza. Secara keseluruhan, ia menyediakan templat strategi pembalikan purata rujukan yang baik untuk perdagangan kuantitatif.


/*backtest
start: 2022-12-08 00:00:00
end: 2023-12-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// @version=4

strategy("HYE Mean Reversion SMA [Strategy]", overlay = true )
  
//Strategy inputs
source = input(title = "Source", defval = close)
tradeDirection = input(title="Trade Direction", type=input.string,
     options=["Long Only", "Short Only", "Both"], defval="Long Only") 
smallMAPeriod = input(title = "Small Moving Average", defval = 2)
bigMAPeriod = input(title = "Big Moving Average", defval = 5)
percentBelowToBuy = input(title = "Percent below to buy %", defval = 3)
percentAboveToSell = input(title = "Percent above to sell %", defval = 3)
rsiPeriod = input(title = "Rsi Period", defval = 2)
rsiLevelforBuy = input(title = "Maximum Rsi Level for Buy", defval = 30)
rsiLevelforSell = input(title = "Minimum Rsi Level for Sell", defval = 70)
     
longOK  = (tradeDirection == "Long Only") or (tradeDirection == "Both")
shortOK = (tradeDirection == "Short Only") or (tradeDirection == "Both")

// Make input options that configure backtest date range
startDate = input(title="Start Date", type=input.integer,
     defval=1, minval=1, maxval=31)
startMonth = input(title="Start Month", type=input.integer,
     defval=1, minval=1, maxval=12)
startYear = input(title="Start Year", type=input.integer,
     defval=2020, minval=1800, maxval=2100)

endDate = input(title="End Date", type=input.integer,
     defval=31, minval=1, maxval=31)
endMonth = input(title="End Month", type=input.integer,
     defval=12, minval=1, maxval=12)
endYear = input(title="End Year", type=input.integer,
     defval=2021, minval=1800, maxval=2100)
     
inDateRange = true

//Strategy calculation 
rsiValue = rsi(source, rsiPeriod)
rsiEMA   = ema(rsiValue, 5)
smallMA = sma(source, smallMAPeriod)
bigMA =  sma(source, bigMAPeriod) 
buyMA = ((100 - percentBelowToBuy) / 100) * sma(source, bigMAPeriod)[0]
sellMA = ((100 + percentAboveToSell) / 100) * sma(source, bigMAPeriod)[0]

if(crossunder(smallMA, buyMA) and rsiEMA < rsiLevelforBuy and inDateRange and longOK)
    strategy.entry("BUY", strategy.long) 

if(crossover(smallMA, bigMA) or not inDateRange)
    strategy.close("BUY")

if(crossover(smallMA, sellMA) and rsiEMA > rsiLevelforSell and inDateRange and shortOK)
    strategy.entry("SELL", strategy.short)

if(crossunder(smallMA, bigMA) or not inDateRange)
    strategy.close("SELL")



Lebih lanjut