Strategi Penembusan Wilayah Nilai lintas periode

Penulis:ChaoZhang, Tanggal: 2023-12-12 10:58:22
Tag:

img

Gambaran umum

Ide inti dari strategi ini adalah untuk menentukan kisaran harga saat ini dengan menggabungkan indikator RSI dari siklus yang berbeda, dan untuk mengambil tindakan beli atau jual yang sesuai dalam siklus yang lebih kecil ketika ada pecahnya RSI siklus yang lebih besar.

Logika Strategi

Langkah-langkah utama untuk strategi ini untuk menentukan kisaran harga dan menemukan peluang perdagangan adalah:

  1. Menghitung RSI Swing High dan Swing Low berdasarkan siklus yang lebih besar (misalnya harian).
  2. Tentukan apakah RSI siklus yang lebih besar membuat tinggi baru atau rendah dalam periode lookback.
  3. Jika ada penembusan, menilai tren harga (bullish atau bearish) dalam siklus yang lebih kecil (misalnya 5 menit) dan mengambil tindakan beli atau jual yang sesuai.

Sebagai contoh, ketika RSI harian keluar dari level terendah sebelumnya, kita menilai bahwa saat ini pasar bull. dan ketika RSI harian keluar di bawah level terendah sebelumnya, kita menilai sebagai pasar bear. dalam kedua kasus kita mengambil tindakan panjang dan pendek masing-masing dalam grafik 5 menit.

Analisis Keuntungan

Dibandingkan dengan strategi tradisional yang hanya berfokus pada satu periode, strategi ini memiliki keuntungan berikut:

  1. Penilaian yang lebih akurat dari nilai harga relatif saat ini Siklus yang lebih besar seperti harian dapat menyaring kebisingan pasar jangka pendek dan menentukan tren dan area nilai secara keseluruhan.

  2. Menggabungkan indikator di berbagai periode meningkatkan keandalan sinyal. Bergantung hanya pada indikator periode tunggal dapat menghasilkan sinyal palsu dengan lebih mudah, sementara sinyal serentak dari beberapa periode lebih dapat diandalkan.

  3. Lebih efektif memanfaatkan peluang jangka pendek. sementara kita hanya perlu menemukan peluang dalam siklus kecil seperti 5 menit untuk mendapatkan keuntungan.

  4. Peningkatan yang lebih kecil. Menggabungkan periode silang membantu menghindari terjebak. Kita bisa keluar dengan cepat ketika indikator siklus besar mulai berbalik.

Analisis Risiko

Risiko utama dari strategi ini terletak pada:

  1. Penilaian yang salah dalam indikator siklus besar. Penentuan area nilai yang tidak efektif dalam RSI harian dll dapat menyebabkan sinyal yang salah. Penyesuaian parameter RSI diperlukan untuk meningkatkan akurasi.

  2. Divergensi antara pergerakan harga siklus kecil dan penentuan siklus besar. Terkadang pergerakan jangka pendek melawan tren gambaran besar. Kita perlu mengatur stop loss yang tepat untuk mengendalikan kerugian.

  3. Manajemen risiko yang tidak tepat. Kerugian yang berlebihan dalam perdagangan tunggal karena ukuran posisi yang buruk dapat menyebabkan pengurangan yang tidak dapat dipulihkan. Aturan ukuran yang wajar harus diterapkan.

Arahan Optimasi

Masih banyak ruang untuk meningkatkan strategi ini, terutama dari aspek berikut:

  1. Peraturan parameter periode. Uji lebih banyak kombinasi periode untuk menemukan parameter optimal.

  2. Penyesuaian parameter RSI. Sesuaikan RSI lookback dll parameter untuk meningkatkan keakuratan penilaian.

  3. Tambahkan lebih banyak indikator, seperti MA untuk membantu menilai arah tren.

  4. Memperbaiki mekanisme stop loss, secara dinamis menyesuaikan titik stop loss berdasarkan kondisi penarikan.

  5. Mengoptimalkan aturan ukuran posisi. Mengelola ukuran posisi tertentu untuk setiap perdagangan lebih ilmiah.

Kesimpulan

Strategi ini mewujudkan arbitrage lintas periode antara dimensi waktu yang berbeda dengan menilai kondisi bullish di RSI lintas periode. Gagasan penilaian lintas periode semacam itu layak dieksploitasi lebih lanjut. Kita dapat terus memperbaikinya melalui penyesuaian parameter, optimasi stop loss, kombinasi indikator untuk membuatnya lebih menguntungkan. Secara keseluruhan, strategi ini memiliki ide yang unik dan potensi besar untuk ditingkatkan.


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

//@version=3

strategy("Swing MTF", shorttitle="Swing MTF", overlay=false, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital = 10000, slippage = 5)
//
otf_period = input(defval=2, title="Look Back Period (2nd Timeframe)")
otf = input(defval="180", title="Second Momentum Timeframe")

// Function to dectect a new bar
is_newbar(res) =>
    t = time(res)
    change(t) != 0 ? true : false

// Check how many bars are in our upper timeframe
since_new_bar = barssince(is_newbar(otf))
otf_total_bars = na
otf_total_bars := since_new_bar == 0 ? since_new_bar[1] : otf_total_bars[1]

//Calculate RSI Values
ctf_rsi = rsi(open, otf_period)

breakline=input(title="Breaks in lines", defval = true, type=bool)

so = request.security(syminfo.tickerid, otf, rsi(open, otf_period))
sc = request.security(syminfo.tickerid, otf, rsi(close, otf_period))


final_otf_so = na
final_otf_so := barstate.isrealtime ? since_new_bar == otf_total_bars ? so : final_otf_so[1] : so

final_otf_sc = na
final_otf_sc := barstate.isrealtime ? since_new_bar == otf_total_bars ? sc : final_otf_sc[1] : sc

barsback = input(11, title='Bars back to check for a swing')
// showsig = input(false, title='Show Signal Markers')
 
swing_detection(index)=>
    swing_high = false
    swing_low = false
    start = (index*2) - 1 // -1 so we have an even number of
    swing_point_high = final_otf_so[index]
    swing_point_low = final_otf_sc[index]
    
    //Swing Highs
    for i = 0 to start
        swing_high := true
        if i < index 
            if final_otf_so[i] > swing_point_high 
                swing_high := false
                break
        // Have to do checks before pivot and after seperately because we can get
        // two highs of the same value in a row. Notice the > and >= difference
        if i > index
            if final_otf_so[i] >= swing_point_high 
                swing_high := false
                break
        
    //Swing lows
    for i = 0 to start
        swing_low := true
        if i < index
            if final_otf_sc[i] < swing_point_low 
                swing_low := false
                break  
        // Have to do checks before pivot and after seperately because we can get
        // two lows of the same value in a row. Notice the > and >= difference
        if i > index
            if final_otf_sc[i] <= swing_point_low 
                swing_low := false
                break 
        
    [swing_high, swing_low]
 
// Check for a swing
[swing_high, swing_low] = swing_detection(barsback)
 

long =  final_otf_so > final_otf_sc
short = final_otf_so < final_otf_sc

if swing_low and long
    strategy.entry("My Long Entry Id", strategy.long)


if swing_high and short
    strategy.entry("My Short Entry Id", strategy.short)

Lebih banyak