Chiến lược động lực là một chiến lược giao dịch theo xu hướng giá dựa trên sự chuyển động của giá. Nó tạo ra tín hiệu giao dịch bằng cách tính toán sự thay đổi giá trong một khoảng thời gian nhất định. Khi xu hướng tăng giá được xác định, nó sẽ kích hoạt tín hiệu mua. Khi xu hướng giảm giá được xác định, nó sẽ kích hoạt tín hiệu bán. Chiến lược này sử dụng dấu hiệu chéo động lực kép để tạo ra tín hiệu giao dịch.
Chiến lược này tính toán đà tăng giá bằng cách đo sự thay đổi giá đóng so với giá đóng trước N giai đoạn.
Chỉ số động lực đầu tiên MOM0 được tính như sau:
MOM0 = CLOSE - CLOSE[N]
trong đó CLOSE là giá đóng của thời kỳ hiện tại và CLOSE[N] là giá đóng trước N thời kỳ. MOM0 > 0 cho thấy giá đóng hiện tại cao hơn so với N thời kỳ trước, trong khi MOM0 < 0 cho thấy giá đóng hiện tại thấp hơn so với N thời kỳ trước.
Chỉ số động lực thứ hai MOM1 được tính như sau:
MOM1 = MOM0 - MOM0 [1]
Nó tính toán sự khác biệt giữa MOM0 hiện tại và MOM0 của giai đoạn trước.
Chỉ số động lực thứ ba MOM2 được tính như sau:
MOM2 = CLOSE - CLOSE [1]
Nó tính toán sự khác biệt giữa giá đóng cửa hiện tại và giá đóng cửa giai đoạn trước.
Khi MOM0 > 0 và MOM1 > 0, nó cho thấy động lượng tăng liên tục và kích hoạt tín hiệu mua. Khi MOM0 < 0 và MOM2 < 0, nó cho thấy động lượng giảm liên tục và kích hoạt tín hiệu bán.
Mã cũng bao gồm một điều kiện thời gian time_cond để chỉ tạo tín hiệu trong khoảng thời gian backtesting được chỉ định. Nó kiểm tra lại điều kiện trước khi đặt lệnh để tránh các lệnh không mong muốn khi tín hiệu biến mất.
Rủi ro có thể được giảm bằng cách rút ngắn thời gian động lực, thêm xác định xu hướng hoặc cấu hình dừng lỗ.
Chiến lược đà tăng theo xu hướng thay đổi giá thay vì mức giá, xác định hiệu quả hướng đà tăng của thị trường để nắm bắt các biến động giá tăng và giảm. Tuy nhiên, đà tăng có các đặc điểm chậm trễ và lựa chọn tham số và tối ưu hóa kết hợp rất quan trọng đối với hiệu suất chiến lược. Chiến lược này sử dụng chéo chỉ số đà tăng kép làm cơ sở, lọc một số tiếng ồn. Hiệu suất có thể được tăng thêm và rủi ro được kiểm soát bằng cách tối ưu hóa liên tục các tham số, tích hợp các chỉ số kỹ thuật mới và tận dụng các kỹ thuật học máy.
/*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")