Strategi sistem purata bergerak pembalikan berayun


Tarikh penciptaan: 2023-10-18 12:23:13 Akhirnya diubah suai: 2023-10-18 12:23:13
Salin: 2 Bilangan klik: 620
1
fokus pada
1617
Pengikut

Strategi sistem purata bergerak pembalikan berayun

Gambaran keseluruhan

Strategi ini menggunakan sistem garis rata untuk menentukan arah trend, dan digabungkan dengan indikator kadar turun naik untuk mengelakkan pasaran yang bergolak rendah, menggunakan hentian golak untuk pengurusan perdagangan.

Prinsip

Strategi ini menilai arah trend dengan membandingkan hubungan kedudukan antara rata-rata cepat dan rata-rata perlahan. Apabila rata-rata cepat melalui rata-rata perlahan, lihat lebih banyak dan lihat lebih rendah. Untuk mengelakkan pasaran yang bergolak, strategi ini juga memperkenalkan penunjuk Bollinger Bands. Dengan mengira kadar perubahan lebar pita Bollinger Bands, perdagangan dihasilkan apabila kadar perubahan melebihi nilai set.

Secara khusus, logik perdagangan strategi ini adalah seperti berikut:

  1. Hitung garis purata pantas (default 20 hari) dan garis purata perlahan (default 50 hari).

  2. Hitung kadar perubahan lebar jalur Brin (default 40 hari, dua kali perbezaan standard).

  3. Apabila laju rata-rata melintasi laju rata-rata yang perlahan, dan kadar perubahan lebar jalur Brin melebihi nilai set (default 9%) menghasilkan isyarat berbilang kepala.

  4. Apabila laju rata-rata melintasi laju rata-rata perlahan, dan kadar perubahan lebar jalur Brin melebihi nilai set (default 9%) menghasilkan isyarat kosong.

  5. Hitungkan saluran udara Chandeli sebagai titik hentian.

  6. Hentian berbilang kepala adalah harga tertinggi - ATR*Pindaan, Hentikan Hilang dengan Harga Minimum + ATR*Perkalian.

Kelebihan

  1. Menggunakan sistem garis rata untuk menentukan arah trend, anda boleh mengesan trend dengan berkesan.

  2. Memperkenalkan kadar perubahan lebar jalur binari dapat mengelakkan kejatuhan pasaran dan mengurangkan transaksi yang tidak perlu.

  3. Menggunakan penderaan gegaran, anda boleh menghentikan kerosakan pada masa yang tepat untuk mengelakkan terjebak dalam gegaran.

  4. Pelbagai parameter boleh disesuaikan dan boleh dioptimumkan untuk pasaran yang berbeza.

  5. Strategi logiknya jelas dan mudah difahami, mudah untuk dipelajari dan digunakan.

Risiko

  1. Sistem linear mempunyai kelewatan dan mungkin kehilangan peluang untuk berbalik dengan cepat.

  2. Tetapan parameter Brin yang tidak betul boleh menapis isyarat perdagangan yang sah.

  3. Terlalu sensitif terhadap kemusnahan getaran boleh menyebabkan perdagangan terlalu kerap.

  4. Tidak mengoptimumkan parameter boleh menyebabkan risiko pegangan.

  5. Tidak dapat menyesuaikan diri dengan perubahan besar pasaran yang disebabkan oleh peristiwa besar yang tidak dijangka.

Arah pengoptimuman

  1. Anda boleh menguji kombinasi garis rata dari parameter yang berbeza untuk mencari parameter terbaik.

  2. Anda boleh menguji parameter pita Brin untuk tempoh yang berbeza untuk mencari penapis gelombang yang terbaik.

  3. Ia boleh digabungkan dengan petunjuk lain untuk mengesahkan kemasukan dan meningkatkan kualiti isyarat.

  4. Anda boleh memperkenalkan strategi hentian kerugian dinamik untuk memastikan hentian lebih baik mengikut pasaran.

  5. Parameter pengoptimuman automatik boleh digabungkan dengan teknologi pembelajaran mesin untuk menyesuaikan diri dengan perubahan pasaran.

ringkaskan

Strategi ini mengintegrasikan sistem garis sejajar, penunjuk Brin dan teknologi hentian goyah, membentuk sistem pengesanan trend yang agak stabil. Kesan strategi yang baik boleh diperoleh melalui pengoptimuman parameter. Tetapi masih perlu berhati-hati terhadap risiko perubahan trend dan goyah pasaran, selain itu, teknologi seperti pembelajaran mesin dapat meningkatkan lagi kestabilan strategi. Secara keseluruhan, strategi ini sangat sesuai sebagai strategi pelajar.

Kod sumber strategi
/*backtest
start: 2022-10-11 00:00:00
end: 2023-10-17 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/
// © juanchez

//@version=4
strategy("CHI", overlay = true, close_entries_rule = "ANY")

n = input(title= "highest high o lowest low period", defval= 22)
f= input(title= "multiplicador", defval= 4)
long = highest(high, n) - atr(n)*f
short= lowest(low, n) + atr(n)*f
plot(long, color= color.red)
plot(short, color= color.green)

//moving averages
period= input(title= "moving averages period", defval= 50)
period2= input(title= "moving averages period2", defval= 20)
type= input(title= "moving averages type", options= ["sma", "ema"], defval= "ema")

//moving average function
mo(p, t) =>
    if t == "sma"
        sma(close[barstate.islast ? 1: 0], p)
    else  if t== "ema"
        ema(close[barstate.islast ? 1: 0], p)

m= mo(period, type)
m2= mo(period2, type)

trend= m2 > m 

plot(m, color = color.maroon, linewidth = 3)
plot(m2, linewidth= 3)


//BOLLINGER BANDS ENTRIES
bb1_period= input(title= "Bollinger bands 1 period", defval=40, minval=1)
bb1_source=input(title="Bollinger band 1 source", defval=close)
bb1_multi=input(title="Bollinger Bands 1 factor", defval=2, minval=1, step=0.1)
show_bb1= input(title="Show Bollinger bands 1", defval=false)
//BOLLINGER BANDS
_bb(src, lenght, multi)=>
    float moving_avg= sma(src[barstate.islast? 1: 0], lenght)
    float deviation= stdev(src[barstate.islast? 1: 0], lenght)
    float lowerband = moving_avg - deviation*multi
    float upperband = moving_avg + deviation*multi
    
    [moving_avg, lowerband, upperband]
    
[bb1, lowerband1, upperband1]= _bb(bb1_source,  bb1_period, bb1_multi)

//FIRST BAND    
plot(show_bb1? bb1 : na, title="BB1 Moving average", linewidth= 3, color= color.fuchsia)
plot(show_bb1? upperband1 : na, title="BB1 Upper Band", linewidth= 3, color= color.green)
plot(show_bb1? lowerband1 : na, title="BB1 Lower Band", linewidth= 3, color= color.red)

//BB's Width threshold 
thresh= input(title= "widen %", defval= 9, minval = 0, step = 1, maxval= 100)

widht= (upperband1 - lowerband1)/bb1
roc= change(widht)/widht[1]*100
cross=crossover(roc, thresh)

// entry
//long
elong= input(true, title= "enable long")
longcondition= m2 > m and cross and elong

//short
eshort= input(true, title= "enable short")
shortcondition= m2 < m and cross and eshort


plotshape(longcondition? true: false , location= location.belowbar, style= shape.labelup, size= size.small, color= color.green, text= "Buy", textcolor= color.white)
plotshape(shortcondition? true: false , location= location.abovebar, style= shape.labeldown, size= size.small, color= color.red, text= "Sell", textcolor= color.white)

out= crossunder(close, long)
outt= crossover(close, short)

strategy.entry("long", strategy.long, when = longcondition)
strategy.close("long", when = out)

strategy.entry("short", strategy.short, when = shortcondition)
strategy.close("short", when = outt)