Momentum Breakout Strategi

Penulis:ChaoZhang, Tanggal: 2024-01-17 13:58:19
Tag:

img

Gambaran umum

Strategi ini adalah strategi trend following yang menggunakan indikator momentum harga. Strategi ini menilai tren pasar dengan menghitung perubahan harga penutupan selama periode tertentu dan membuat entri panjang atau pendek yang sesuai ketika ada tren harga yang terus meningkat atau menurun.

Logika Strategi

Indikator inti dari strategi ini adalah momentum harga.

momentum = close - close[n] 

dimana n adalah panjang periode momentum. Ketika momentum > 0, itu berarti bahwa harga telah meningkat selama periode saat ini. Ketika momentum < 0, itu berarti harga telah turun selama periode saat ini.

Strategi pertama menetapkan parameter confirmBars, yang mewakili jumlah lilin yang diperlukan untuk penilaian tren sebelum melakukan perdagangan. Dalam rentang backtest, jika momentum > 0 bertahan untuk lilin confirmBars, entri panjang dibuat. Jika momentum < 0 bertahan untuk lilin confirmBars, entri pendek dibuat.

Kunci dari penilaian tren strategi terletak pada menghitung jumlah lilin berturut-turut di mana momentum lebih besar atau kurang dari 0, yang dicapai melalui variabel bcount dan discount. Mereka ditingkatkan dengan 1 ketika kondisi yang sesuai terpenuhi dan diset ulang menjadi 0 ketika kondisi tidak terpenuhi. Ketika hitungan mencapai confirmBars, perdagangan panjang atau pendek yang sesuai dilaksanakan.

Keuntungan Strategi

Ini adalah tren yang relatif sederhana mengikuti strategi dengan keuntungan berikut:

  1. Logika sederhana yang mudah dimengerti dan diterapkan
  2. Indikator momentum sensitif terhadap perubahan harga dan dapat dengan cepat menangkap tren
  3. Parameter yang dapat disesuaikan untuk menyesuaikan sensitivitas penilaian
  4. Dapat digunakan di berbagai lingkungan pasar

Risiko Strategi

Strategi ini juga memiliki beberapa risiko:

  1. Cenderung melakukan beberapa transaksi berosilasi dan overtrading
  2. Konfigurasi parameter yang wajar diperlukan, terutama confirmBars untuk menyaring osilasi
  3. Tidak dapat secara efektif mengatasi dampak dari peristiwa pasar mendadak
  4. Perbedaan antara backtest dan live trading, data dan optimasi parameter yang diperlukan

Optimasi Strategi

Strategi dapat dioptimalkan dalam beberapa aspek:

  1. Tambahkan logika stop loss untuk mengendalikan risiko per perdagangan
  2. Tambahkan filter keluar untuk menghindari sinyal palsu dari osilasi harga
  3. Sesuaikan confirmBars dll parameter berdasarkan produk yang berbeda dan lingkungan pasar
  4. Masukkan indikator lain untuk mengkonfirmasi entri
  5. Menggunakan metode pembelajaran mesin untuk menyesuaikan parameter dan filter

Ringkasan

Secara singkat, strategi momentum breakout ini adalah strategi tren sederhana dan praktis yang sesuai sebagai strategi perdagangan kuantitas pendahuluan. Dalam penerapannya, perhatian diperlukan untuk mengontrol frekuensi perdagangan dan mencegah overtrading. Sementara itu, parameter dan filter perlu disesuaikan dan dioptimalkan berdasarkan produk dan lingkungan pasar yang sebenarnya agar strategi mencapai kinerja maksimal.


/*backtest
start: 2024-01-09 00:00:00
end: 2024-01-16 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Momentum Strategy [TS Trader]", overlay=true)

confirmBars = input(1)
momentumLength = input(14, title="Momentum Length")

price = close
momentum = close - close[momentumLength]

// === INPUT BACKTEST RANGE ===
fromYear = input.int(2019, title="Backtest Start Year")
fromMonth = input.int(1, title="Backtest Start Month", minval=1, maxval=12)
fromDay = input.int(1, title="Backtest Start Day", minval=1, maxval=31)
toYear = input.int(2023, title="Backtest End Year")
toMonth = input.int(12, title="Backtest End Month", minval=1, maxval=12)
toDay = input.int(31, title="Backtest End Day", minval=1, maxval=31)

startTimestamp = timestamp(fromYear, fromMonth, fromDay, 00, 00)
endTimestamp = timestamp(toYear, toMonth, toDay, 23, 59)

inBacktestRange = true

// === STRATEGY LOGIC ===
bcond = momentum > 0
bcount = 0
bcount := bcond ? nz(bcount[1]) + 1 : 0
if (bcount == confirmBars and inBacktestRange)
    strategy.entry("Buy", strategy.long, comment="Long")

scond = momentum < 0
scount = 0
scount := scond ? nz(scount[1]) + 1 : 0
if (scount == confirmBars and inBacktestRange)
    strategy.entry("Sell", strategy.short, comment="Short")

// Plotting Momentum
plot(momentum, title="Momentum", color=color.purple)


Lebih banyak