Strategi Pembebasan Momentum

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

img

Ringkasan

Strategi ini adalah strategi trend yang menggunakan penunjuk momentum harga. Ia menilai trend pasaran dengan mengira perubahan harga penutupan dalam tempoh tertentu dan membuat entri panjang atau pendek yang sepadan apabila terdapat trend harga menaik atau menurun yang berterusan.

Logika Strategi

Penunjuk teras strategi ini adalah momentum harga.

momentum = close - close[n] 

di mana n mewakili panjang tempoh momentum. Apabila momentum > 0, ini bermakna harga telah meningkat semasa tempoh semasa. Apabila momentum < 0, ini bermakna harga telah jatuh sepanjang tempoh semasa.

Strategi pertama menetapkan parameter confirmBars, yang mewakili bilangan lilin yang diperlukan untuk penghakiman trend sebelum melaksanakan perdagangan. Dalam julat backtest, jika momentum > 0 berterusan untuk lilin confirmBars, entri panjang dibuat. Jika momentum < 0 berterusan untuk lilin confirmBars, entri pendek dibuat.

Kunci penilaian trend strategi terletak pada mengira bilangan lilin berturut-turut di mana momentum lebih besar daripada atau kurang daripada 0, yang dicapai melalui bcount dan discount variabel. Mereka ditingkatkan dengan 1 apabila syarat yang sesuai dipenuhi dan disetel semula ke 0 apabila syarat tidak dipenuhi. Apabila kiraan mencapai confirmBars, perdagangan panjang atau pendek yang sesuai dilaksanakan.

Kelebihan Strategi

Ini adalah trend yang agak mudah mengikut strategi dengan kelebihan berikut:

  1. Logik yang mudah difahami dan dilaksanakan
  2. Penunjuk momentum sensitif terhadap perubahan harga dan boleh dengan cepat menangkap trend
  3. Parameter yang boleh disesuaikan untuk menyesuaikan kepekaan penilaian
  4. Boleh digunakan dalam pelbagai persekitaran pasaran

Risiko Strategi

Strategi ini juga mempunyai beberapa risiko:

  1. Kecenderungan untuk pelbagai perdagangan berayun dan overtrading
  2. Konfigurasi parameter yang munasabah diperlukan, terutamanya confirmBars untuk menapis getaran
  3. Tidak dapat menangani kesan peristiwa pasaran tiba-tiba dengan berkesan
  4. Perbezaan antara backtest dan perdagangan langsung, data dan pengoptimuman parameter yang diperlukan

Pengoptimuman Strategi

Strategi ini boleh dioptimumkan dalam beberapa aspek:

  1. Tambah logik stop loss untuk kawalan setiap risiko perdagangan
  2. Tambah penapis pecah untuk mengelakkan isyarat palsu dari turun naik harga
  3. Sesuaikan confirmBars dan lain-lain parameter berdasarkan produk yang berbeza dan persekitaran pasaran
  4. Masukkan penunjuk lain untuk mengesahkan entri
  5. Menggunakan kaedah pembelajaran mesin untuk menyesuaikan parameter dan penapis

Ringkasan

Ringkasnya, strategi momentum breakout ini adalah strategi trend berikut yang mudah dan praktikal yang sesuai sebagai strategi perdagangan kuant perkenalan. Dalam penerapan, perhatian diperlukan untuk mengawal kekerapan perdagangan dan mencegah overtrading. Sementara itu, parameter dan penapis perlu disesuaikan dan dioptimumkan berdasarkan produk sebenar dan persekitaran pasaran untuk strategi untuk mencapai prestasi maksimum.


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