Strategi perdagangan kuantitatif berdasarkan moving average dan Bollinger Bands

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

img

Gambaran umum

Strategi ini terutama menggunakan moving average dan Bollinger Bands untuk menangkap tren dan volatilitas pasar. Strategi ini menggunakan tiga jenis moving average yang berbeda: Simple Moving Average (SMA), Weighted Moving Average (WMA), dan Exponential Moving Average (EMA). Pada saat yang sama, strategi ini menggunakan Bollinger Bands untuk menetapkan saluran harga, dengan band atas dan bawah berfungsi sebagai sinyal untuk membuka dan menutup posisi.

Prinsip Strategi

  1. Hitung tiga rata-rata bergerak dengan periode yang berbeda: SMA lambat, EMA cepat, dan WMA menengah, yang mencerminkan tren pasar jangka panjang, jangka pendek, dan jangka menengah masing-masing.
  2. Hitung dua set Bollinger Bands berdasarkan deviasi standar 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. Ketika EMA cepat melintasi di atas Bollinger Band entri atas, buka posisi pendek; ketika EMA cepat melintasi di bawah Bollinger Band entri bawah, buka posisi panjang. Ini berarti bahwa harga telah menyimpang secara signifikan dari rata-rata dan tren dapat muncul.
  4. Setelah posisi dibuka, jika harga terus melintasi atas Bollinger Band stop-loss atas, tutup semua posisi panjang; jika harga terus melintasi di bawah Bollinger Band stop-loss bawah, tutup semua posisi pendek.
  5. Proses di atas diulang terus-menerus, memungkinkan strategi untuk menyesuaikan posisi secara fleksibel sesuai dengan tren pasar dan menghentikan kerugian secara tepat waktu, untuk mencapai pengembalian yang kuat.

Keuntungan Strategi

  1. Ini mempertimbangkan tiga rata-rata bergerak dengan kecepatan yang berbeda, menangkap tren pasar secara komprehensif di berbagai tingkat.
  2. Ini memperkenalkan Bollinger Bands sebagai kondisi untuk membuka dan menutup posisi, yang dapat disesuaikan secara dinamis sesuai dengan volatilitas pasar, menyesuaikan secara fleksibel dengan kondisi pasar.
  3. Hal ini menetapkan stop-loss Bollinger Bands untuk mengontrol drawdown dan tegas menutup posisi ketika pasar berfluktuasi secara dramatis, menghindari kerugian yang diperkuat.
  4. Logikanya jelas dan aturannya sederhana, mudah diterapkan dan dioptimalkan.
  5. Ini memiliki berbagai aplikasi dan dapat efektif untuk berbagai pasar dan periode waktu.

Risiko Strategi

  1. Di pasar sisi, pembukaan dan penutupan posisi yang sering dapat menyebabkan biaya transaksi yang substansial, mengikis keuntungan.
  2. Pada tahap awal pembalikan tren, strategi mungkin masih berdagang ke arah tren awal, menghasilkan kerugian tertentu.
  3. Untuk kondisi pasar yang ekstrim, seperti celah harga yang cepat, Bollinger Bands stop-loss mungkin tidak secara efektif mengendalikan risiko.
  4. Pemilihan parameter yang tidak tepat (seperti periode rata-rata bergerak, lebar Bollinger Band, dll.) dapat membatalkan strategi.
  5. Jika pasar terus berfluktuasi, strategi mungkin tidak dapat menangkap peluang tren yang signifikan untuk jangka waktu yang lama.

Arah Optimasi Strategi

  1. Meningkatkan parameter periode rata-rata bergerak dan lebar Bollinger Band dengan tepat untuk mengurangi frekuensi perdagangan dan biaya di pasar lateral.
  2. Memperkenalkan lebih banyak indikator teknis atau indikator sentimen pasar sebagai filter untuk meningkatkan keakuratan sinyal masuk dan menghindari kehilangan perdagangan yang mungkin terjadi pada awal tren.
  3. Menetapkan aturan khusus untuk kondisi pasar yang ekstrim, seperti menangguhkan posisi baru ketika terjadi kesenjangan, untuk mengendalikan risiko.
  4. Mengoptimalkan parameter untuk menemukan kombinasi yang paling cocok untuk pasar saat ini, meningkatkan ketahanan strategi.
  5. Tambahkan aturan manajemen posisi dan manajemen modal, seperti penyesuaian posisi berdasarkan kekuatan tren atau profitabilitas, menetapkan garis stop-loss keseluruhan, dll, untuk lebih mengendalikan risiko strategi.

Ringkasan

Marina Parfenova School Project Bot adalah strategi perdagangan kuantitatif yang didasarkan pada moving average dan Bollinger Bands. Ini mencoba untuk mendapatkan keuntungan dengan menangkap tren pasar sambil mengendalikan penarikan melalui garis stop-loss Bollinger Band. Logika strategi sederhana dan langsung, dengan berbagai aplikasi, dan parameter dapat disesuaikan secara fleksibel sesuai dengan karakteristik pasar. Namun, dalam aplikasi praktis, masih perlu diperhatikan isu-isu seperti pasar sampingan, kondisi ekstrem, optimasi parameter, dll, dan penyempurnaan lebih lanjut dari aturan manajemen modal dan posisi diperlukan. Secara keseluruhan, strategi ini dapat berfungsi sebagai kerangka kerja perdagangan kuantitatif dasar, yang dapat terus dioptimalkan dan ditingkatkan untuk mencapai hasil perdagangan yang lebih kuat.


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