Strategi momentum adalah strategi dagangan yang mengikuti trend harga berdasarkan pergerakan harga. Ia menghasilkan isyarat dagangan dengan mengira perubahan harga dalam tempoh tertentu. Apabila trend kenaikan harga dikenal pasti, ia akan mencetuskan isyarat beli. Apabila trend penurunan harga dikenal pasti, ia akan mencetuskan isyarat jual. Strategi ini menggunakan silang penunjuk momentum ganda untuk menghasilkan isyarat dagangan.
Strategi ini mengira momentum harga dengan mengukur perubahan harga penutupan berbanding dengan harga penutupan N tempoh yang lalu.
Penunjuk momentum pertama MOM0 dikira sebagai:
MOM0 = CLOSE - CLOSE[N]
di mana CLOSE adalah harga penutupan tempoh semasa
Penunjuk momentum kedua MOM1 dikira sebagai berikut:
MOM1 = MOM0 - MOM0[1]
Ia mengira perbezaan antara MOM0 semasa dan MOM0 tempoh sebelumnya. MOM1 > 0 menunjukkan MOM0 meningkat, sementara MOM1 < 0 menunjukkan MOM0 menurun.
Penunjuk momentum ketiga MOM2 dikira sebagai:
MOM2 = CLOSE - CLOSE[1]
Ia mengira perbezaan antara harga penutupan semasa dan harga penutupan tempoh sebelumnya.
Apabila MOM0 > 0 dan MOM1 > 0, ia menunjukkan momentum secara konsisten meningkat dan mencetuskan isyarat beli. Apabila MOM0 < 0 dan MOM2 < 0, ia menunjukkan momentum secara konsisten jatuh dan mencetuskan isyarat jual.
Kod ini juga merangkumi syarat masa time_cond untuk hanya menghasilkan isyarat semasa julat masa pengujian belakang yang ditentukan.
Risiko boleh dikurangkan dengan memperpendek tempoh momentum, menambah penentuan trend, atau mengkonfigurasi stop loss.
Strategi momentum mengikuti trend perubahan harga dan bukannya tahap harga, dengan berkesan mengenal pasti arah momentum pasaran untuk menangkap pergerakan harga menaik dan menurun. Walau bagaimanapun, momentum mempunyai ciri-ciri yang tertinggal dan pemilihan parameter dan pengoptimuman kombinasi adalah penting untuk prestasi strategi. Strategi ini menggunakan silang penunjuk momentum ganda sebagai asas, menapis beberapa bunyi bising. Prestasi dapat ditingkatkan dan risiko dikawal dengan pengoptimuman parameter yang berterusan, mengintegrasikan penunjuk teknikal 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")