Strategi Sistem Pembalikan Osilasi EMA

Penulis:ChaoZhang, Tanggal: 2023-10-18 12:23:13
Tag:

img

Gambaran umum

Strategi ini menggunakan sistem rata-rata bergerak untuk menentukan arah tren dan menggabungkan indeks volatilitas untuk menghindari pasar osilasi volatilitas rendah, dengan exit lampu gantung untuk mengelola perdagangan.

Prinsip

Strategi ini menilai arah tren dengan membandingkan rata-rata bergerak cepat dan lambat. Ini pergi panjang ketika MA cepat melintasi di atas MA lambat, dan pergi pendek ketika MA cepat melintasi di bawah MA lambat. Untuk menghindari pasar berosilasi, strategi ini juga menggabungkan Bollinger Bands. Ini menghasilkan sinyal perdagangan ketika tingkat perubahan lebar BB melebihi ambang batas.

Secara khusus, logika perdagangan adalah sebagai berikut:

  1. Menghitung MA cepat (default 20 hari) dan MA lambat (default 50 hari).

  2. Menghitung tingkat perubahan lebar Bollinger Band (default 40 hari, 2 standar deviasi).

  3. Pergi panjang ketika MA cepat melintasi MA lambat dan tingkat perubahan lebar BB melebihi ambang default 9%.

  4. Berjalan pendek ketika MA cepat melintasi di bawah MA lambat dan tingkat perubahan lebar BB melebihi ambang default 9%.

  5. Menghitung Chandelier berhenti panjang dan pendek.

  6. Long stop adalah tertinggi tinggi - ATR * multiplier. Short stop adalah terendah rendah + ATR * multiplier.

Keuntungan

  1. Sistem MA secara efektif melacak tren.

  2. Perubahan lebar BB menyaring osilasi, mengurangi perdagangan yang tidak perlu.

  3. Chandelier keluar tepat waktu menghentikan kerugian menghindari terjebak.

  4. Beberapa parameter yang dapat disesuaikan untuk optimasi.

  5. Logika yang jelas, mudah dimengerti dan diterapkan.

Risiko

  1. MA lag mungkin tidak mengalami pembalikan yang cepat.

  2. Parameter BB yang tidak benar dapat menyaring sinyal yang valid.

  3. Penarikan lustre yang berlebihan menyebabkan perdagangan berlebihan.

  4. Optimasi parameter yang tidak memadai menyebabkan risiko kepemilikan.

  5. Tidak mampu beradaptasi dengan perubahan pasar yang ekstrim dari peristiwa besar.

Optimalisasi

  1. Uji kombinasi MA yang berbeda untuk menemukan parameter optimal.

  2. Uji periode BB yang berbeda untuk filter volatilitas terbaik.

  3. Tambahkan indikator lain untuk konfirmasi masuk.

  4. Memperkenalkan berhenti dinamis untuk melacak pasar dengan lebih baik.

  5. Menggunakan pembelajaran mesin untuk mengoptimalkan otomatis untuk pasar yang berubah.

Ringkasan

Strategi ini mengintegrasikan sistem MA, indikator BB dan kembang api keluar untuk membentuk sistem trend berikut yang relatif stabil. Optimasi parameter yang tepat dapat mencapai hasil yang baik. Tetapi risiko pembalikan tren dan osilasi tetap ada. Pembelajaran mesin dapat lebih meningkatkan ketahanan. Secara keseluruhan strategi yang baik untuk belajar.


/*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)

Lebih banyak