Strategi momentum adalah strategi yang digunakan untuk melakukan perdagangan berdasarkan tren perubahan harga. Strategi ini menghasilkan sinyal perdagangan dengan menghitung perubahan harga dalam periode tertentu, menilai tren pergerakan harga, dan kemudian menghasilkan sinyal perdagangan.
Strategi ini menilai dinamika harga dengan menghitung perubahan harga penutupan dalam periode tertentu. Secara khusus, menghitung perubahan harga penutupan terhadap harga penutupan sebelum periode N.
Pertama, perhitungkan indikator momentum pertama, MOM0, dengan rumus:
MOM0 = CLOSE - CLOSE[N]
Di antaranya, CLOSE menunjukkan harga penutupan siklus saat ini, CLOSE[N] menunjukkan harga penutupan sebelum siklus N. Dengan demikian, MOM0>0 menunjukkan kenaikan harga penutupan sebelum siklus N relatif terhadap siklus saat ini, dan MOM0 menunjukkan penurunan harga penutupan sebelum siklus N relatif terhadap siklus saat ini.
Kemudian menghitung indikator momentum kedua, MOM1, dengan rumus:
MOM1 = MOM0 - MOM0[1]
MOM1>0 berarti MOM0 naik, dan MOM1 berarti MOM0 turun.
Pada saat yang sama menghitung indikator momentum ketiga MOM2, rumus adalah:
MOM2 = CLOSE - CLOSE[1]
MOM2>0 menunjukkan kenaikan harga penutupan, dan MOM2 menunjukkan penurunan harga penutupan.
Ketika MOM0>0 dan MOM1>0, menunjukkan momentum terus naik, menghasilkan sinyal beli; ketika MOM0 dan MOM2, menunjukkan momentum terus turun, menghasilkan sinyal jual.
Kode ini juga menambahkan kondisi waktu time_cond, yang hanya akan menghasilkan sinyal transaksi dalam jangka waktu pengembalian yang ditetapkan. Selain itu, sebelum memasang pesanan, periksa lagi apakah kondisi masih berlaku, dan hindari situasi yang masih dipesan setelah sinyal hilang.
Risiko dapat dikurangi dengan mengurangi siklus volume, menginstruksikan penilaian tren, atau mengkonfigurasi stop loss. Anda juga dapat mempertimbangkan untuk memasukkan indikator volume perdagangan untuk melakukan penyaringan.
Strategi momentum dapat secara efektif menentukan arah titik panas pasar, menangkap peluang kenaikan dan penurunan harga dengan melacak tren perubahan harga, bukan harga itu sendiri. Namun, momentum memiliki keterbelakangan, pilihan parameter dan pengoptimalan kombinasi sangat penting untuk efektivitas strategi. Strategi ini didasarkan pada penyeberangan indikator dua-dinamis, dapat menyaring sebagian dari kebisingan.
/*backtest
start: 2022-09-25 00:00:00
end: 2023-02-03 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Momentum Strategy", overlay = false, precision = 2, initial_capital = 10000, default_qty_value = 10000, default_qty_type = strategy.cash, commission_type = strategy.commission.percent, commission_value = 0, calc_on_every_tick = true)
// Calculate start/end date and time condition
startDate = input(timestamp("2021-01-02T00:00:00"), title = "Start Date", type = input.time)
finishDate = input(timestamp("2021-12-31T00:00:00"), title = "End Date",type = input.time)
time_cond = true
i_len = input(defval = 12, title = "Length", minval = 1)
i_src = input(defval = close, title = "Source")
i_percent = input(defval = true, title = "Percent?")
i_mom = input(defval = "MOM2", title = "MOM Choice", options = ["MOM1", "MOM2"])
momentum(seria, length, percent) =>
_mom = percent ? ( (seria / seria[length]) - 1) * 100 : seria - seria[length]
_mom
mom0 = momentum(i_src, i_len, i_percent)
mom1 = momentum(mom0, 1, i_percent)
mom2 = momentum(i_src, 1, i_percent)
momX = mom1
if i_mom == "MOM2"
momX := mom2
if (mom0 > 0 and momX > 0 and time_cond)
strategy.entry("MomLE", strategy.long, stop = high + syminfo.mintick, comment = "MomLE")
else
strategy.cancel("MomLE")
if (mom0 < 0 and momX < 0 and time_cond)
strategy.entry("MomSE", strategy.short, stop = low - syminfo.mintick, comment = "MomSE")
else
strategy.cancel("MomSE")
plot(mom0, color = #00bcd4, title = "MOM")
plot(mom1, color = #00FF00, title = "MOM1", display = display.none)
plot(mom2, color = #00FF00, title = "MOM2")