Strategi momentum adalah strategi perdagangan yang mengikuti tren harga berdasarkan pergerakan harga. Strategi ini menghasilkan sinyal perdagangan dengan menghitung perubahan harga selama periode tertentu. Ketika tren kenaikan harga diidentifikasi, itu akan memicu sinyal beli. Ketika tren penurunan harga diidentifikasi, itu akan memicu sinyal jual. Strategi ini menggunakan crossover indikator momentum ganda untuk menghasilkan sinyal perdagangan.
Strategi ini menghitung momentum harga dengan mengukur perubahan harga penutupan dibandingkan dengan harga penutupan N periode yang lalu.
Indikator momentum pertama MOM0 dihitung sebagai berikut:
MOM0 = CLOSE - CLOSE[N]
dimana CLOSE adalah harga penutupan periode saat ini
Indikator momentum kedua MOM1 dihitung sebagai berikut:
MOM1 = MOM0 - MOM0[1]
Ini menghitung perbedaan antara MOM0 saat ini dan periode sebelumnya MOM0. MOM1 > 0 menunjukkan MOM0 meningkat, sementara MOM1 < 0 menunjukkan MOM0 menurun.
Indikator momentum ketiga MOM2 dihitung sebagai berikut:
MOM2 = CLOSE - CLOSE[1]
Ini menghitung perbedaan antara harga penutupan saat ini dan harga penutupan periode sebelumnya.
Ketika MOM0 > 0 dan MOM1 > 0, ini menunjukkan momentum terus meningkat dan memicu sinyal beli. Ketika MOM0 < 0 dan MOM2 < 0, ini menunjukkan momentum terus menurun dan memicu sinyal jual.
Kode ini juga mencakup kondisi waktu time_cond untuk hanya menghasilkan sinyal selama rentang waktu backtesting yang ditentukan.
Risiko dapat dikurangi dengan memperpendek periode momentum, menambahkan penentuan tren, atau mengkonfigurasi stop loss.
Strategi momentum mengikuti tren perubahan harga bukan tingkat harga, secara efektif mengidentifikasi arah momentum pasar untuk menangkap pergerakan harga naik dan turun. Namun, momentum memiliki karakteristik tertinggal dan pemilihan parameter dan pengoptimalan kombinasi sangat penting untuk kinerja strategi. Strategi ini menggunakan crossover indikator momentum ganda sebagai dasar, menyaring beberapa kebisingan. Kinerja dapat ditingkatkan lebih lanjut dan risiko dikendalikan dengan terus mengoptimalkan parameter, mengintegrasikan indikator teknis baru, dan memanfaatkan teknik pembelajaran mesin.
/*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")