Chiến lược này tính toán chỉ số động lực của giá để xác định xem xu hướng giá đã đảo ngược hay không, để nắm bắt các cơ hội đảo ngược giá. Khi xu hướng tăng hoặc giảm của giá chậm lại, nó chỉ ra rằng động lực giá đã đảo ngược. Tại thời điểm này, chiến lược sẽ mở các vị trí dài hoặc ngắn.
Chiến lược này chủ yếu dựa trên việc tính toán các chỉ số động lực. Chỉ số động lực phản ánh tốc độ và sức mạnh của sự thay đổi giá. Hai chỉ số động lực MOM và MOM1 được tính trong chiến lược.
Công thức tính toán MOM:
MOM = Giá đóng ngày hôm nay - Giá đóng N ngày trước
Công thức tính toán MOM1:
MOM1 = MOM hôm nay - MOM hôm qua
Nếu MOM > 0 và MOM1 < 0, điều đó có nghĩa là xu hướng tăng của giá đã chậm lại và tín hiệu đảo ngược dường như sẽ dài. Nếu MOM < 0 và MOM1 > 0, điều đó có nghĩa là xu hướng giảm của giá đã chậm lại và tín hiệu đảo ngược dường như sẽ ngắn.
Phương pháp giảm thiểu rủi ro chính:
Chiến lược này tính toán chỉ số động lực giá để xác định xem xu hướng giá đã đảo ngược, tự động đi dài hay ngắn. Các thử nghiệm ngược lại cho thấy rằng chiến lược này hoạt động trơn tru tổng thể và nắm bắt hiệu quả các điểm đảo ngược giá. Bằng cách tối ưu hóa các thiết lập tham số, thêm các bộ lọc tín hiệu, v.v., sự ổn định và lợi nhuận của chiến lược có thể được cải thiện hơn nữa.
/*backtest start: 2023-11-11 00:00:00 end: 2023-12-11 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Momentum - Strategy", overlay = false, precision = 2, initial_capital = 10000, default_qty_value = 100, default_qty_type = strategy.percent_of_equity, commission_type = strategy.commission.percent, commission_value = 0.2 ) 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) strategy.entry("MomLE", strategy.long, stop = high + syminfo.mintick, comment = "MomLE") else strategy.cancel("MomLE") if (mom0 < 0 and momX < 0) strategy.entry("MomSE", strategy.short, stop = low - syminfo.mintick, comment = "MomSE") else strategy.cancel("MomSE") plot(mom0, color = #0000FF, title = "MOM") plot(mom1, color = #00FF00, title = "MOM1", display = display.none) plot(mom2, color = #00FF00, title = "MOM2")