Beli rendah dan jual tinggi strategi perdagangan kuantitatif jangka pendek berdasarkan rata-rata pergerakan RSI


Tanggal Pembuatan: 2023-12-01 16:59:26 Akhirnya memodifikasi: 2023-12-01 16:59:26
menyalin: 0 Jumlah klik: 706
1
fokus pada
1621
Pengikut

Beli rendah dan jual tinggi strategi perdagangan kuantitatif jangka pendek berdasarkan rata-rata pergerakan RSI

Ringkasan

Strategi ini digunakan untuk menentukan titik jual dan beli melalui persilangan indikator RSI dengan garis rata-ratanya, dan merupakan strategi perdagangan garis pendek. Strategi ini akan membeli ketika indikator RSI berada di bawah garis rata-ratanya, dan menjual ketika berada di atas garis rata-ratanya, dan merupakan strategi jual beli tinggi yang khas.

Prinsip Strategi

  1. Hitung nilai RSI dengan panjang siklus 40 garis K
  2. Untuk RSI, perhitungkan garis rata-rata MA, dengan panjang siklus 10 garis K
  3. Sinyal beli dihasilkan ketika indikator RSI berada di bawah garis rata-rata dengan faktor ((1-interval jual-beli/100)
  4. Sinyal jual dihasilkan ketika indikator RSI lebih tinggi dari garis rata-rata dengan faktor ((1 + interval jual beli / 100)
  5. Jarak antara zona beli dan jual default 5, menunjukkan jarak dari garis rata-rata positif negatif 5%.
  6. Posisi kosong dinilai sebagai RSI di atas rata-rata dan di atas level 50

Analisis Keunggulan

Ini adalah tipikal strategi trend reversal yang menggunakan RSI untuk menentukan kapan tepat untuk membeli dan menjual. Strategi ini memiliki beberapa keuntungan:

  1. Menggunakan indikator RSI untuk menilai struktur pasar, indikator itu sendiri lebih dapat diandalkan
  2. Filter linear menghindari transaksi yang tidak perlu dan meningkatkan stabilitas
  3. Parameter jarak antara zona jual beli dapat menyesuaikan frekuensi transaksi
  4. Kode yang mudah dipahami, logika yang jelas

Secara keseluruhan, ini adalah strategi perdagangan garis pendek yang sederhana dan praktis.

Analisis risiko

Strategi ini juga memiliki beberapa risiko yang perlu diperhatikan:

  1. Indikator RSI mungkin memberi sinyal yang salah, perlu diperhatikan bentuk kurva indikator
  2. Penetapan jarak yang salah dapat menyebabkan terlalu banyak transaksi atau kehilangan peluang.
  3. Tingkat frekuensi transaksi yang tinggi, perlu dipertimbangkan dampak dari biaya transaksi
  4. Berbasis pada satu indikator saja, rentan terhadap ketidaknormalan pasar

Risiko ini dapat diminimalkan dengan mengoptimalkan parameter, menambahkan kondisi penyaringan, dan sebagainya.

Arah optimasi

Strategi ini dapat dioptimalkan dari beberapa dimensi:

  1. Menambahkan lebih banyak indikator penyaringan, seperti volume perdagangan, untuk memastikan sinyal hanya dihasilkan pada titik-titik perubahan tren
  2. Menambahkan strategi stop loss untuk mengendalikan kerugian tunggal
  3. Optimalkan jarak perdagangan, seimbang frekuensi perdagangan dan tingkat keuntungan
  4. Menggunakan algoritma pembelajaran mesin untuk menemukan kombinasi parameter optimal secara otomatis
  5. Menambahkan model agregasi untuk mengintegrasikan hasil dari beberapa substrategi

Performa strategi dapat ditingkatkan secara signifikan melalui kombinasi multi-indikator, manajemen stop loss, dan pengoptimalan parameter.

Meringkaskan

Strategi ini secara keseluruhan adalah strategi perdagangan garis pendek yang sangat khas dan praktis. Strategi ini menggunakan indikator RSI untuk menentukan kapan membeli dan menjual, ditambah dengan filter rata. Logika strategi sederhana dan jelas, penyesuaian parameter fleksibel, mudah diterapkan.

Kode Sumber Strategi
/*backtest
start: 2022-11-24 00:00:00
end: 2023-11-30 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © I11L

//@version=5
strategy("I11L - Meanreverter 4h", overlay=false, pyramiding=3, default_qty_value=10000, initial_capital=10000, default_qty_type=strategy.cash,process_orders_on_close=false, calc_on_every_tick=false)
 
frequency = input.int(10)
rsiFrequency = input.int(40)
buyZoneDistance = input.int(5)
avgDownATRSum = input.int(3)
useAbsoluteRSIBarrier = input.bool(true)
barrierLevel = 50//input.int(50)

momentumRSI = ta.rsi(close,rsiFrequency)
momentumRSI_slow = ta.sma(momentumRSI,frequency)
 
isBuy = momentumRSI < momentumRSI_slow*(1-buyZoneDistance/100) and (strategy.position_avg_price - math.sum(ta.atr(20),avgDownATRSum)*strategy.opentrades > close or strategy.opentrades == 0 ) //and (momentumRSI < barrierLevel or not(useAbsoluteRSIBarrier))
isShort = momentumRSI > momentumRSI_slow*(1+buyZoneDistance/100) and (strategy.position_avg_price - math.sum(ta.atr(20),avgDownATRSum)*strategy.opentrades > close or strategy.opentrades == 0 ) and (momentumRSI > barrierLevel or not(useAbsoluteRSIBarrier))
momentumRSISoftClose = (momentumRSI > momentumRSI_slow) and (momentumRSI > barrierLevel or not(useAbsoluteRSIBarrier))

isClose = momentumRSISoftClose

plot(momentumRSI,color=isClose ? color.red :  momentumRSI < momentumRSI_slow*(1-buyZoneDistance/100) ? color.green : color.white)
plot(momentumRSI_slow,color=color.gray)
plot(barrierLevel,color=useAbsoluteRSIBarrier ? color.white : color.rgb(0,0,0,0))
plot(momentumRSI_slow*(1-buyZoneDistance/100),color=color.gray)
plot(momentumRSI_slow*(1+buyZoneDistance/100),color=color.gray)
plot(momentumRSI_slow*(1+(buyZoneDistance*2)/100),color=color.gray)

// plot(strategy.wintrades - strategy.losstrades)

 
 
if(isBuy)
    strategy.entry("Buy",strategy.long, comment="#"+str.tostring(strategy.opentrades+1))

// if(isShort)
//     strategy.entry("Sell",strategy.short, comment="#"+str.tostring(strategy.opentrades+1))

if(isClose)
    strategy.exit("Close",limit=close)