Strategi Perdagangan Osilasi Momentum

Penulis:ChaoZhang, Tanggal: 2023-11-21 16:57:07
Tag:

img

Gambaran umum

Strategi ini didasarkan pada indikator Bollinger Bands, dikombinasikan dengan indikator momentum untuk menerapkan strategi perdagangan kombinasi reversi Bollinger Bands dan momentum breakout.

Logika Strategi

Strategi ini menggunakan garis tengah Bollinger Bands sma sebagai indikator rata-rata bergerak, dan secara dinamis menyesuaikan lebar band melalui param mult * stdev. Ketika harga menembus garis tengah dari bawah, ini menunjukkan momentum ke atas diperoleh dan dengan demikian pergi panjang. Ketika harga menembus garis tengah dari atas, ini menunjukkan momentum ke bawah diperoleh dan dengan demikian pergi pendek. Setelah memasuki posisi panjang / pendek, parameter stop loss dan take profit diatur untuk melacak keuntungan dan mengendalikan risiko.

Secara khusus, Bollinger Bands dihitung dengan dua parameter - panjang dan mult. Panjang menentukan periode garis tengah dan mult menentukan lebar band. enterLong dan enterShort menilai waktu breakout. exitLong dan exitShort menghitung stop loss dan mengambil harga profit berdasarkan harga masuk dan persentase target.

Keuntungan

Strategi ini menggabungkan kemunduran ke rata-rata dan momentum, yang memungkinkan untuk menangkap tren utama sejak awal. Dibandingkan dengan hanya melacak rata-rata bergerak, penilaian momentum tambahan berdasarkan lebar Bollinger Bands dapat menyaring beberapa breakout palsu. Stop loss dan take profit ditetapkan langsung berdasarkan harga masuk tanpa intervensi manual.

Risiko

  • Meninggal di Bollinger Bands harga yang cocok, mungkin kehilangan beberapa gerakan
  • Stop loss yang diatur terlalu luas dapat meningkatkan risiko kerugian
  • Sinyal pendek di pasar bull mungkin tidak berujung baik

Parameter seperti periode, lebar pita dan stop loss range dapat dioptimalkan untuk membuat strategi dapat disesuaikan dengan kondisi pasar yang berbeda.

Peningkatan

  • Menambahkan volume perdagangan atau volatilitas untuk menghindari low volume false breakouts
  • Pencarian grid param untuk mengoptimalkan periode, koefisien lebar dan persentase stop loss
  • Hanya pergi panjang atau pendek berdasarkan rezim pasar
  • Tambahkan model Machine Learning untuk menentukan arah tren

Kesimpulan

Strategi ini menggabungkan kekuatan reversi dan momentum Bollinger Bands, yang memungkinkannya untuk menangkap beberapa tren sejak awal. Melalui penyesuaian parameter dapat beradaptasi dengan tahap pasar yang berbeda. Perhitungan stop loss / take profit langsung mengurangi intervensi manual. Masih ada ruang untuk perbaikan, misalnya menggabungkan lebih banyak indikator bantu. Ini akan ditingkatkan secara bertahap dalam penelitian dan optimalisasi lebih lanjut.


/*backtest
start: 2023-11-13 00:00:00
end: 2023-11-20 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("BURATINO", overlay=true)

// Входные параметры
length = input(20, minval=1, title="Length")
mult = input(2.0, minval=0.1, maxval=5, title="Multiplier")
target_percent = input(0.5, minval=0.1, title="Target Percent")
stop_loss_percent = input(95, minval=0.1, title="Stop Loss Percent")

// Расчет полос Боллинджера
basis = sma(close, length)
dev = mult * stdev(close, length)
upper = basis + dev
lower = basis - dev

// Переворот снизу вверх через среднюю линию Боллинджера для открытия лонга
enterLong = cross(close, basis) and close[1] < basis[1]

// Переворот сверху вниз через среднюю линию Боллинджера для открытия шорта
enterShort = cross(basis, close) and close[1] > basis[1]

// Закрытие лонга после роста цены на указанный процент или падения на указанный процент
exitLong = close >= strategy.position_avg_price * (1 + (target_percent / 100)) or close <= strategy.position_avg_price * (1 - (stop_loss_percent / 100))

// Закрытие шорта после падения цены на указанный процент или роста на указанный процент
exitShort = close <= strategy.position_avg_price * (1 - (target_percent / 100)) or close >= strategy.position_avg_price * (1 + (stop_loss_percent / 100))

// Управление позициями и ограничениями на открытие противоположных позиций
strategy.entry("Long", strategy.long, when = enterLong and strategy.position_size == 0)
strategy.entry("Short", strategy.short, when = enterShort and strategy.position_size == 0)

strategy.close("Long", when = exitLong)
strategy.close("Short", when = exitShort)

// Визуализация полос Боллинджера
plot(basis, color=color.blue, title="Basis")
plot(upper, color=color.red, title="Upper")
plot(lower, color=color.green, title="Lower")

Lebih banyak