Strategi penembusan zon nilai kitaran silang


Tarikh penciptaan: 2023-12-12 10:58:22 Akhirnya diubah suai: 2023-12-12 10:58:22
Salin: 0 Bilangan klik: 355
1
fokus pada
1212
Pengikut

Strategi penembusan zon nilai kitaran silang

Gambaran keseluruhan

Idea teras strategi ini adalah untuk menilai kawasan harga semasa dengan menggabungkan RSI dari pelbagai kitaran, dan mengambil tindakan pembelian atau penjualan yang sesuai pada kitaran yang lebih kecil apabila terdapat penembusan pada RSI kitaran yang lebih besar. Strategi ini menggabungkan kelebihan indikator teknikal dari pelbagai kitaran untuk menilai nilai relatif harga semasa melalui pelbagai dimensi masa untuk mencari tempat masuk yang lebih baik.

Prinsip Strategi

Strategi ini bertujuan untuk menilai kawasan harga dan mencari peluang perdagangan melalui beberapa langkah berikut:

  1. Mengira titik tertinggi (Swing High) dan titik terendah (Swing Low) dalam RSI untuk tempoh yang lebih besar (contohnya, garis matahari)
  2. Menentukan sama ada RSI kitaran besar mempunyai titik tertinggi atau terendah dalam kitaran semakan semula yang diberikan
  3. Jika berlaku penembusan, maka pada kitaran yang lebih kecil (contohnya 5 minit garis) menilai pergerakan harga (polyhead atau kosong), mengambil pembelian atau penjualan yang sesuai dengan operasi

Sebagai contoh, apabila RSI pada hari itu menembusi tinggi baru, kita menilai bahawa ia berada dalam keadaan bertopeng, dan jika RSI pada hari itu menembusi rendah baru, kita menilai bahawa ia berada dalam keadaan kosong. Dalam kedua-dua kes, kita melakukan pembelian dan penjualan pada garis 5 minit.

Analisis kelebihan

Strategi ini mempunyai beberapa kelebihan berbanding strategi tradisional yang hanya memberi tumpuan kepada satu kitaran masa:

  1. Penilaian nilai relatif harga semasa lebih tepat. Indikator kitaran besar seperti garis matahari dapat menyaring kebisingan pasaran jangka pendek dan menentukan trend kitaran besar dan kawasan nilai.

  2. Gabungan dengan pelbagai indikator kitaran masa meningkatkan kebolehpercayaan isyarat. Isyarat yang bergantung kepada satu indikator kitaran mudah mengalami isyarat yang salah, dan beberapa indikator kitaran yang menghantar isyarat secara serentak lebih dipercayai.

  3. Lebih berkesan dalam mengambil peluang jangka pendek. Pergerakan besar seperti Sunshine menunjukkan kepada kita arah yang lebih besar, dan kita hanya perlu mencari peluang dalam jangka pendek seperti 5 minit untuk mendapat keuntungan.

  4. Pengunduran yang lebih kecil. Gabungan jangka masa membantu untuk mengelakkan terikat. Apabila indikator jangka masa besar bertukar, kita akan menghentikan kerugian dengan tepat.

Analisis risiko

Risiko utama strategi ini ialah:

  1. Indikator kitaran besar membuat kesalahan. Indikator seperti RSI hari tidak dapat menentukan kawasan nilai dengan berkesan, menyebabkan isyarat membuat kesalahan. Ini memerlukan parameter RSI yang dioptimumkan.

  2. Pergerakan kitaran kecil tidak sesuai dengan penilaian kitaran besar. Kadang-kadang pergerakan harga kitaran kecil akan menentang trend kitaran besar, dan ketika itu anda perlu menetapkan hentian untuk mengawal kerugian.

  3. Pengurusan wang yang tidak betul. Jika pengurusan risiko yang tidak betul, kerugian sekali adalah terlalu besar dan akan menyebabkan sukar untuk pulih. Ini memerlukan pengurusan kedudukan yang munasabah.

Arah pengoptimuman

Terdapat banyak ruang untuk pengoptimuman strategi ini, terutamanya dari segi berikut:

  1. Pengoptimuman parameter kitaran. Anda boleh menguji lebih banyak kombinasi kitaran untuk mencari parameter terbaik.

  2. Optimumkan parameter RSI. Anda boleh menyesuaikan parameter RSI untuk melihat sama ada anda dapat meningkatkan ketepatan penghakiman.

  3. Menambah petunjuk lain. Anda boleh menambah lebih banyak petunjuk untuk kombinasi, seperti menambah garis purata untuk menentukan arah trend.

  4. Mekanisme pengoptimuman hentian kerugian. Titik hentian boleh disesuaikan secara dinamik mengikut keadaan penarikan balik.

  5. Mengoptimumkan pengurusan kedudukan. Anda boleh menguruskan kedudukan tertentu setiap transaksi dengan lebih saintifik dan munasabah.

ringkaskan

Strategi ini mencapai nilai arbitraj antara dimensi masa yang berbeza dengan menilai penanda RSI yang lebih baik dari tempoh yang berlainan. Pemikiran ini untuk penilaian jangka panjang bernilai digali lebih jauh, dan kita boleh terus menyempurnakan strategi ini dengan cara optimasi parameter, pengoptimuman henti kerugian, pengoptimuman kombinasi, dan sebagainya.

Kod sumber strategi
/*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)