Strategi Penembusan Kawasan Nilai Antara Tempoh

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

img

Ringkasan

Idea utama strategi ini adalah untuk menentukan julat harga semasa dengan menggabungkan penunjuk RSI dari kitaran yang berbeza, dan untuk mengambil tindakan membeli atau menjual yang sepadan dalam kitaran yang lebih kecil apabila terdapat pecah dalam RSI kitaran yang lebih besar.

Logika Strategi

Langkah utama untuk strategi ini untuk menentukan julat harga dan mencari peluang perdagangan adalah:

  1. Hitung RSI Swing High dan Swing Low berdasarkan kitaran yang lebih besar (contohnya harian).
  2. Tentukan sama ada RSI kitaran yang lebih besar membuat tinggi atau rendah baru dalam tempoh melihat kembali.
  3. Jika terdapat penembusan, menilai trend harga (bullish atau bearish) dalam kitaran yang lebih kecil (contohnya 5 minit) dan mengambil tindakan membeli atau menjual yang sepadan.

Sebagai contoh, apabila RSI harian memecahkan paras tertinggi sebelumnya, kita menilai bahawa ia adalah pasaran lembu pada masa ini. dan apabila RSI harian memecahkan di bawah paras terendah sebelumnya, kita menilai ia sebagai pasaran beruang. dalam kedua-dua kes kita mengambil tindakan panjang dan pendek masing-masing dalam carta 5 minit.

Analisis Kelebihan

Berbanding dengan strategi tradisional yang hanya memberi tumpuan kepada satu tempoh, strategi ini mempunyai kelebihan berikut:

  1. Penilaian nilai harga relatif semasa yang lebih tepat. kitaran yang lebih besar seperti harian boleh menapis bunyi pasaran jangka pendek dan menentukan trend keseluruhan dan kawasan nilai.

  2. Menggabungkan penunjuk merentasi tempoh meningkatkan kebolehpercayaan isyarat. Bergantung hanya pada satu indikator tempoh boleh menghasilkan isyarat palsu dengan lebih mudah, sementara isyarat serentak dari beberapa tempoh lebih boleh dipercayai.

  3. Lebih berkesan memanfaatkan peluang jangka pendek. penembusan kitaran besar menunjukkan arah keseluruhan, sementara kita hanya perlu mencari peluang dalam kitaran kecil seperti 5 minit untuk keuntungan.

  4. Peningkatan yang lebih kecil. menggabungkan tempoh silang membantu mengelakkan terperangkap. kita boleh keluar dengan cepat apabila penunjuk kitaran besar mula berbalik.

Analisis Risiko

Risiko utama strategi ini terletak pada:

  1. Penghakiman yang salah dalam penunjuk kitaran besar. Penentuan kawasan nilai yang tidak berkesan dalam RSI harian dan lain-lain boleh menyebabkan isyarat yang rosak. Penyesuaian parameter RSI diperlukan untuk meningkatkan ketepatan.

  2. Perbezaan antara pergerakan harga kitaran kecil dan penentuan kitaran besar. Kadang-kadang pergerakan jangka pendek menghalang trend gambaran besar. Kita perlu menetapkan stop loss yang betul untuk mengawal kerugian.

  3. Pengurusan risiko yang tidak betul. Kerugian yang berlebihan dalam perdagangan tunggal disebabkan oleh saiz kedudukan yang tidak baik boleh membawa kepada pengurangan yang tidak dapat dipulihkan.

Arahan pengoptimuman

Masih ada ruang yang besar untuk meningkatkan strategi ini, terutamanya dari aspek berikut:

  1. Uji lebih banyak kombinasi tempoh untuk mencari parameter optimum.

  2. Penyesuaian parameter RSI. Sesuaikan parameter RSI lookback dll untuk meningkatkan ketepatan penghakiman.

  3. Tambah lebih banyak penunjuk. Bawa lebih banyak penunjuk seperti MA untuk membantu menilai arah trend.

  4. Memperbaiki mekanisme stop loss. Sesuaikan titik stop loss secara dinamik berdasarkan keadaan pengeluaran.

  5. Mengoptimumkan peraturan saiz kedudukan. Mengurus saiz kedudukan tertentu untuk setiap perdagangan lebih saintifik.

Kesimpulan

Strategi ini merealisasikan arbitraj tempoh silang antara dimensi masa yang berbeza dengan menilai keadaan bullish dalam RSI tempoh silang. Idea penilaian tempoh silang seperti itu layak dieksploitasi lebih lanjut. Kita boleh terus memperbaikinya melalui penyesuaian parameter, pengoptimuman stop loss, kombinasi penunjuk untuk menjadikannya lebih menguntungkan. Secara keseluruhan, strategi ini mempunyai idea 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 lanjut