
Strategi ini adalah strategi pengesanan trend yang dilaksanakan menggunakan indikator pergerakan harga. Ia menilai trend pasaran dengan mengira perubahan harga penutupan dalam tempoh tertentu, dan melakukan operasi jual beli atau jual beli yang sesuai apabila harga menunjukkan trend kenaikan atau penurunan yang berterusan.
Indikator utama strategi ini adalah momentum harga. Rumus untuk mengira momentum ialah:
momentum = close - close[n]
Di mana n mewakili panjang kitaran momentum. Apabila momentum > 0, menunjukkan bahawa harga telah meningkat dalam kitaran semasa; Apabila momentum < 0, menunjukkan bahawa harga telah menurun dalam kitaran semasa.
Strategi ini mula-mula menetapkan parameter ConfirmBars, yang mewakili beberapa garis K yang diperlukan untuk membuat keputusan trend sebelum melakukan perdagangan. Dalam jangka masa, jika momentum > 0 berterusan pada garis K, masuk lebih banyak; jika momentum < 0 berterusan pada garis K, masuk kosong.
Kunci strategi ini untuk menentukan trend adalah dengan mengkaji jumlah K baris yang berturut-turut momentum lebih besar atau kurang dari 0, dilakukan dengan bcount dan scount. Mereka akan + 1 apabila syarat yang sesuai dipenuhi, dan 0 jika tidak dipenuhi.
Ini adalah strategi trend-following yang lebih mudah dan mempunyai kelebihan berikut:
Strategi ini mempunyai beberapa risiko:
Strategi ini boleh dioptimumkan dalam beberapa aspek:
Secara keseluruhannya, strategi pemecahan dinamik adalah strategi trend yang mudah dan praktikal, yang sesuai sebagai salah satu strategi permulaan perdagangan kuantitatif. Dalam proses penerapan, perhatian perlu diberikan untuk mengawal frekuensi perdagangan, mencegah perdagangan berlebihan dan kos perdagangan yang terlalu tinggi. Pada masa yang sama, parameter dan peraturan penapisan perlu disesuaikan dan dioptimumkan mengikut varieti dan persekitaran pasaran sebenar, agar strategi dapat memberikan kesan 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)