Strategi sistem rata-rata pergerakan pembalikan osilasi


Tanggal Pembuatan: 2023-10-18 12:23:13 Akhirnya memodifikasi: 2023-10-18 12:23:13
menyalin: 2 Jumlah klik: 620
1
fokus pada
1617
Pengikut

Strategi sistem rata-rata pergerakan pembalikan osilasi

Ringkasan

Strategi ini menggunakan sistem garis rata untuk menentukan arah tren, dan dikombinasikan dengan indikator volatilitas untuk menghindari pasar bergoyang dengan fluktuasi rendah, menggunakan stop loss bergoyang untuk manajemen perdagangan.

Prinsip

Strategi ini menilai arah tren dengan membandingkan hubungan posisi antara rata-rata cepat dan rata-rata lambat. Lihat lebih banyak ketika melewati rata-rata lambat pada rata-rata cepat, dan lihat lebih rendah ketika melewati rata-rata cepat. Untuk menghindari pasar yang bergoyang, strategi ini juga memperkenalkan indikator Brin-band.

Secara khusus, logika transaksi strategi adalah sebagai berikut:

  1. Perhitungan rata-rata cepat (default 20 hari) dan rata-rata lambat (default 50 hari)

  2. Hitung perubahan lebar pita Brin (default 40 days, 2x standar deviasi).

  3. Ketika kecepatan rata-rata melewati kecepatan rata-rata pada kecepatan rata-rata, dan tingkat perubahan bandwidth Brin melebihi set threshold (default 9%), menghasilkan sinyal multihead.

  4. Ketika kecepatan rata-rata melewati kecepatan rata-rata yang lambat, dan tingkat perubahan bandwidth Brin lebih dari batas yang ditetapkan (default 9%), menghasilkan sinyal kosong.

  5. Perhitungan saluran udara Chandeli sebagai stop loss.

  6. Stop loss multihead adalah harga tertinggi - ATR*Kalibrasi, stop loss adalah harga minimum + ATR*Perkalian.

Keunggulan

  1. Menggunakan sistem garis rata untuk menentukan arah tren, dapat secara efektif melacak tren.

  2. Dengan memperkenalkan variabel bandwidth Brin, pasar tidak akan terguncang dan transaksi yang tidak perlu dapat dikurangi.

  3. Dengan menggunakan shock-stop, Anda dapat menghentikan kerusakan pada waktu yang tepat dan menghindari terjebak di dalam getaran.

  4. Ada banyak parameter yang dapat disesuaikan dan dioptimalkan untuk pasar yang berbeda.

  5. Logika strategi jelas dan mudah dipahami, sehingga mudah dipelajari.

Risiko

  1. Sistem linier mengalami keterlambatan dan mungkin kehilangan kesempatan untuk berbalik dengan cepat.

  2. Setelan parameter Brin yang tidak tepat dapat memfilter sinyal perdagangan yang valid.

  3. Terlalu sensitif terhadap shock stop dapat menyebabkan perdagangan yang terlalu sering.

  4. Optimasi parameter yang tidak tepat dapat menyebabkan risiko kepemilikan.

  5. Tidak dapat beradaptasi dengan perubahan pasar yang drastis akibat peristiwa besar yang tiba-tiba.

Arah optimasi

  1. Anda dapat menguji kombinasi rata-rata dari parameter yang berbeda untuk mencari parameter yang optimal.

  2. Anda dapat menguji parameter pita Brin dari periode yang berbeda untuk menemukan efek penyaringan fluktuasi yang optimal.

  3. Ini dapat dikombinasikan dengan indikator lain untuk konfirmasi masuk, meningkatkan kualitas sinyal.

  4. Strategi Stop Loss Dinamis dapat diperkenalkan, sehingga Stop Loss dapat lebih baik melacak pasar.

  5. Parameter pengoptimalan otomatis dapat digabungkan dengan teknologi pembelajaran mesin untuk menyesuaikan diri dengan perubahan pasar.

Meringkaskan

Strategi ini mengintegrasikan sistem garis rata, indikator Brin dan teknologi shock stop untuk membentuk sistem pelacakan tren yang relatif stabil. Efek strategi yang baik dapat diperoleh melalui pengoptimalan parameter. Namun, tetap waspada terhadap risiko pembalikan tren dan guncangan pasar, selain itu, teknologi seperti pembelajaran mesin dapat meningkatkan stabilitas strategi lebih lanjut. Secara keseluruhan, strategi ini sangat cocok sebagai strategi belajar.

Kode 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)