
Strategi ini adalah strategi pelacakan tren yang dilakukan dengan menggunakan indikator dinamika harga. Strategi ini menilai tren pasar dengan menghitung perubahan harga penutupan dalam periode tertentu, dan melakukan operasi jual beli atau jual beli yang sesuai ketika harga mengalami tren naik atau turun yang berkelanjutan.
Indikator utama dari strategi ini adalah momentum harga. Formula untuk menghitung momentum adalah:
momentum = close - close[n]
Di mana n mewakili panjang siklus momentum. Ketika momentum > 0, berarti harga telah naik dalam siklus saat ini; Ketika momentum < 0, berarti harga telah turun dalam siklus saat ini.
Strategi ini pertama-tama menetapkan parameter confirmBars, yang mewakili berapa banyak garis K yang diperlukan untuk menilai tren sebelum melakukan perdagangan. Dalam jangkauan pengembalian, jika momentum > 0 terus berlanjut pada garis akar K dari confirmBars, maka masuk lebih banyak; Jika momentum < 0 terus berlanjut pada garis akar K dari confirmBars, maka masuk kosong.
Kunci dari strategi ini untuk menilai tren adalah menghitung jumlah K-line berturut-turut yang memiliki momentum lebih besar atau kurang dari 0, dengan menggunakan variabel bcount dan scount. Mereka akan menjadi +1 jika kondisi yang sesuai terpenuhi, dan 0 jika tidak terpenuhi.
Ini adalah strategi pelacakan tren yang lebih sederhana, dengan keuntungan berikut:
Strategi ini juga memiliki beberapa risiko:
Strategi ini dapat dioptimalkan dalam beberapa hal:
Secara keseluruhan, strategi pemecahan momentum ini adalah salah satu strategi pelacakan tren yang sederhana dan praktis yang cocok sebagai strategi masuk untuk perdagangan kuantitatif. Dalam proses penerapannya, perlu diperhatikan untuk mengontrol frekuensi perdagangan, mencegah over-trading dan biaya transaksi yang terlalu tinggi.
/*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)