Strategi Dagangan Kuantitatif Berdasarkan Purata Bergerak dan Bollinger Bands

Penulis:ChaoZhang, Tarikh: 2024-04-26 11:45:05
Tag:SMAWMAEMA

img

Ringkasan

Strategi ini terutamanya menggunakan purata bergerak dan Bollinger Bands untuk menangkap trend dan turun naik pasaran. Ia menggunakan tiga jenis purata bergerak yang berbeza: Purata Bergerak Sederhana (SMA), Purata Bergerak Berimbang (WMA), dan Purata Bergerak Eksponensial (EMA). Pada masa yang sama, ia menggunakan Bollinger Bands untuk menetapkan saluran harga, dengan jalur atas dan bawah berfungsi sebagai isyarat untuk membuka dan menutup kedudukan. Apabila harga menembusi Bollinger Band atas, ia membuka kedudukan pendek; apabila ia menembusi band bawah, ia membuka kedudukan panjang. Ia juga menetapkan Bollinger Bands yang lebih luas sebagai tahap stop-loss, menutup kedudukan apabila harga melanggar jalur ini.

Prinsip Strategi

  1. Mengira tiga purata bergerak dengan tempoh yang berbeza: SMA perlahan, EMA pantas, dan WMA sederhana, yang mencerminkan trend pasaran jangka panjang, jangka pendek, dan jangka sederhana masing-masing.
  2. Hitung dua set Bollinger Band berdasarkan deviasi standard harga: entry Bollinger Bands (dengan jarak yang lebih sempit antara band atas dan bawah) dan stop-loss Bollinger Bands (dengan jarak yang lebih luas).
  3. Apabila EMA pantas melintasi di atas Bollinger Band kemasukan atas, buka kedudukan pendek; apabila EMA pantas melintasi di bawah Bollinger Band kemasukan bawah, buka kedudukan panjang. Ini menunjukkan bahawa harga telah menyimpang dengan ketara dari purata dan trend mungkin muncul.
  4. Setelah kedudukan dibuka, jika harga terus melintasi Band Bollinger Stop-Loss atas, tutup semua kedudukan panjang; jika harga terus melintasi Band Bollinger Stop-Loss bawah, tutup semua kedudukan pendek. Ini adalah untuk mengawal kerugian dan menghentikan kerugian dengan tegas apabila trend berbalik.
  5. Proses di atas diulang secara berterusan, yang membolehkan strategi menyesuaikan kedudukan dengan fleksibel mengikut trend pasaran dan menghentikan kerugian dengan tepat pada masanya, untuk mencapai pulangan yang kukuh.

Kelebihan Strategi

  1. Ia mengkaji tiga purata bergerak dengan kelajuan yang berbeza, yang merangkumi kecenderungan pasaran di pelbagai peringkat.
  2. Ia memperkenalkan Bollinger Bands sebagai syarat untuk membuka dan menutup kedudukan, yang boleh diselaraskan secara dinamik mengikut turun naik pasaran, menyesuaikan dengan fleksibel dengan keadaan pasaran.
  3. Ia menetapkan Stop-Loss Bollinger Bands untuk mengawal pengeluaran dan menutup kedudukan dengan tegas apabila pasaran turun naik secara dramatik, mengelakkan kerugian yang diperkuat.
  4. Logiknya jelas dan aturannya mudah, mudah dilaksanakan dan dioptimumkan.
  5. Ia mempunyai pelbagai aplikasi dan mungkin berkesan untuk pelbagai pasaran dan tempoh masa.

Risiko Strategi

  1. Dalam pasaran sampingan, pembukaan dan penutupan kedudukan yang kerap boleh membawa kepada kos transaksi yang besar, mengikis keuntungan.
  2. Pada peringkat awal pembalikan trend, strategi masih boleh berdagang ke arah trend asal, mengakibatkan kerugian tertentu.
  3. Untuk keadaan pasaran yang melampau, seperti jurang harga yang cepat, Bollinger Band stop-loss mungkin tidak mengawal risiko dengan berkesan.
  4. Pilihan parameter yang tidak betul (seperti tempoh purata bergerak, lebar Bollinger Band, dan lain-lain) boleh membatalkan strategi.
  5. Jika pasaran terus turun naik, strategi mungkin tidak dapat menangkap peluang trend yang signifikan untuk tempoh yang panjang.

Arahan Pengoptimuman Strategi

  1. Meningkatkan parameter tempoh purata bergerak dan lebar Bollinger Band dengan sewajarnya untuk mengurangkan kekerapan perdagangan dan kos dalam pasaran sampingan.
  2. Memperkenalkan lebih banyak penunjuk teknikal atau penunjuk sentimen pasaran sebagai penapis untuk meningkatkan ketepatan isyarat kemasukan dan mengelakkan kehilangan perdagangan yang mungkin berlaku pada permulaan trend.
  3. Menetapkan peraturan khas untuk keadaan pasaran yang melampau, seperti menggantung kedudukan baru apabila jurang berlaku, untuk mengawal risiko.
  4. Mengoptimumkan parameter untuk mencari gabungan yang paling sesuai untuk pasaran semasa, meningkatkan ketahanan strategi.
  5. Tambahkan peraturan pengurusan kedudukan dan pengurusan modal, seperti menyesuaikan kedudukan berdasarkan kekuatan trend atau keuntungan, menetapkan garis stop-loss keseluruhan, dan lain-lain, untuk mengawal risiko strategi.

Ringkasan

Marina Parfenova School Project Bot adalah strategi perdagangan kuantitatif berdasarkan purata bergerak dan Bollinger Bands. Ia cuba untuk mendapat keuntungan dengan menangkap trend pasaran sambil mengawal penarikan melalui garis stop-loss Bollinger Band. Logik strategi adalah mudah dan mudah, dengan pelbagai aplikasi, dan parameter boleh diselaraskan dengan fleksibel mengikut ciri pasaran. Walau bagaimanapun, dalam aplikasi praktikal, perhatian masih perlu dibayar kepada isu-isu seperti pasaran sampingan, keadaan ekstrem, pengoptimuman parameter, dan lain-lain, dan penyempurnaan lanjut peraturan pengurusan modal dan kedudukan diperlukan. Secara keseluruhan, strategi ini boleh berfungsi sebagai kerangka kerja perdagangan kuantitatif asas, yang dapat terus dioptimumkan dan dipertingkatkan untuk mencapai hasil perdagangan yang lebih mantap.


/*backtest
start: 2024-03-01 00:00:00
end: 2024-03-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy ("Marina Parfenova School Project Bot", overlay = true)

sma(price, n) =>
    result = 0.0
    for i = 0 to n - 1
        result := result + price [i] / n    
    result

wma(price, n) =>
    result = 0.0
    sum_weight = 0.0
    weight = 0.0
    for i = 0 to n - 1
        weight := n - 1
        result := result + price [i]*weight
        sum_weight := sum_weight + weight
    result/sum_weight

ema(price, n) =>
    result = 0.0
    alpha = 2/(n + 1)
    prevResult = price 
    if (na(result[1]) == false)
        prevResult := result[1]
    result := alpha * price + (1 - alpha) * prevResult

/// Настройки
n_slow = input.int(50, "Период медленной скользящей средней", step=5)
n_fast = input.int(4, "Период быстрой скользящей средней")
n_deviation = input.int(30, "Период среднеквадратического отклонения", step=5)
k_deviation_open = input.float(1.2, "Коэффициент ширины коридора покупки", step=0.1)
k_deviation_close = input.float(1.6, "Коэффициент ширины коридора продажи", step=0.1)

// ----- Линии индикаторов -----

// Медленная скользящая 
sma = sma(close, n_slow)
plot(sma, color=#d3d3d3)

// Линии Боллинджера, обозначающие коридор цены
bollinger_open = k_deviation_open * ta.stdev(close, n_deviation)
open_short_line = sma + bollinger_open
plot(open_short_line, color=#ec8383)
open_long_line = sma - bollinger_open
plot(open_long_line, color=#6dd86d)

bollinger_close = k_deviation_close * ta.stdev(close, n_deviation)
close_short_line = sma + bollinger_close
plot(close_short_line, color=#e3e3e3)
close_long_line = sma - bollinger_close
plot(close_long_line, color=#e3e3e3)

// Быстрая скользящая
ema = ema(close, n_fast)
plot(ema, color = color.aqua, linewidth = 2)

// ----- Сигналы для запуска стратегии -----

// если ema пересекает линию open_short сверху вниз - сигнал на создание ордера в short
if(ema[1] >= open_short_line[1] and ema < open_short_line)
    strategy.entry("short", strategy.short)

// если ema пересекает линию open_long снизу вверх - сигнал на создание ордера в long
if(ema[1] <= open_long_line[1] and ema > open_long_line)
    strategy.entry("long", strategy.long)

// если свеча пересекает верхнюю линию коридора продажи - закрываем все long-ордера 
if (high >= close_short_line)
    strategy.close("long")

// если свеча пересекает нижнюю линию коридора продажи - закрываем все short-ордера
if (low <= close_long_line)
    strategy.close("short")

Berkaitan

Lebih lanjut