Strategi Dagangan Osilasi Momentum

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

img

Ringkasan

Strategi ini berdasarkan pada penunjuk Bollinger Bands, digabungkan dengan penunjuk momentum untuk melaksanakan strategi perdagangan gabungan pembalikan Bollinger Bands dan pecah momentum. Ia pergi lama apabila harga memecahkan garis tengah Bollinger Bands dari bawah dan pergi pendek apabila harga memecahkan garis tengah dari atas. Ia juga mengesan stop loss dan mengambil keuntungan berdasarkan harga kemasukan untuk menutup kedudukan apabila nisbah risiko-balasan sasaran dipenuhi.

Logika Strategi

Strategi ini menggunakan garis tengah Bollinger Bands sma sebagai penunjuk purata bergerak, dan secara dinamik menyesuaikan lebar jalur melalui param mult * stdev. Apabila harga menembusi garis tengah dari bawah, ia menunjukkan momentum menaik dan dengan itu pergi panjang. Apabila harga menembusi garis tengah dari atas, ia menunjukkan momentum menurun dan dengan itu pergi pendek. Selepas memasuki kedudukan panjang / pendek, parameter stop loss dan mengambil keuntungan ditetapkan untuk mengesan keuntungan dan mengawal risiko.

Secara khusus, Bollinger Band dikira dengan dua parameter - panjang dan banyak. Panjang menentukan tempoh garis tengah dan banyak menentukan lebar jalur. enterLong dan enterShort menilai masa pecah. exitLong dan exitShort mengira stop loss dan mengambil harga keuntungan berdasarkan harga masuk dan peratusan sasaran.

Kelebihan

Strategi ini menggabungkan pembalikan kepada purata dan momentum, yang membolehkannya menangkap trend utama pada peringkat awal. Berbanding dengan hanya mengesan purata bergerak, penghakiman momentum tambahan berdasarkan lebar Bollinger Bands dapat menapis beberapa pecah palsu. Hentikan kerugian dan ambil keuntungan ditetapkan secara langsung berdasarkan harga kemasukan tanpa campur tangan manual.

Risiko

  • Lagging dalam Bollinger Bands harga yang sesuai, mungkin terlepas beberapa langkah
  • Stop loss yang terlalu luas boleh meningkatkan risiko kerugian
  • Isyarat pendek dalam pasaran lembu mungkin tidak menjadi baik

Parameter seperti tempoh, lebar jalur dan julat stop loss boleh dioptimumkan untuk menjadikan strategi dapat disesuaikan dengan keadaan pasaran yang berbeza.

Peningkatan

  • Tambah jumlah dagangan atau turun naik untuk mengelakkan pecah palsu jumlah yang rendah
  • Pencarian grid param untuk mengoptimumkan tempoh, pekali lebar dan peratusan stop loss
  • Pergi hanya panjang atau pendek berdasarkan rejim pasaran
  • Tambah model Machine Learning untuk menentukan arah trend

Kesimpulan

Strategi ini menggabungkan kekuatan pembalikan dan momentum Bollinger Bands, yang membolehkannya menangkap beberapa trend pada peringkat awal. Melalui penyesuaian parameter, ia dapat menyesuaikan diri dengan peringkat pasaran yang berbeza. Pengiraan stop loss / take profit langsung mengurangkan campur tangan manual. Masih ada ruang untuk peningkatan, misalnya menggabungkan lebih banyak penunjuk tambahan. Ini akan ditingkatkan secara beransur-ansur dalam penyelidikan dan pengoptimuman 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 lanjut