Chiến lược thúc đẩy

Tác giả:ChaoZhang, Ngày: 2023-09-26 15:16:56
Tags:

Tổng quan

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 logic

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.

Phân tích lợi thế

  • Nhận được xu hướng thay đổi giá bất kể mức giá của chính nó, tránh theo đuổi mức cao nhất và tiêu diệt mức thấp nhất
  • Các crossover chỉ số động lượng đôi lọc breakouts sai và tránh tín hiệu sai
  • Kiểm tra thời gian và điều kiện bổ sung tránh giao dịch không cần thiết
  • Đơn giản và dễ hiểu logic, dễ thực hiện
  • Các thông số linh hoạt có thể điều chỉnh cho các môi trường thị trường khác nhau

Phân tích rủi ro

  • Các chỉ số động lực có sự chậm trễ và có thể bỏ lỡ các điểm chuyển đổi
  • Sự giao thoa hai chỉ số làm tăng độ lọc nhưng cũng có thể bỏ lỡ một số cơ hội
  • Không thể xác định sức mạnh và tốc độ của giá lên hoặc xuống
  • Các thông số cần lựa chọn cẩn thận, cài đặt quá nhạy cảm có thể làm tăng tần suất giao dịch và chi phí trượt
  • Hiệu suất phụ thuộc vào tối ưu hóa tham số, các tham số cần điều chỉnh cho các giai đoạn khác nhau

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ỗ.

Hướng dẫn tối ưu hóa

  • Kiểm tra các phương pháp tính toán động lượng khác nhau như ROC, RSI vv.
  • Thêm xác định xu hướng để tránh whipsaws trong các thị trường dao động
  • Sử dụng các chiến lược dừng lỗ để kiểm soát lỗ giao dịch duy nhất
  • Kết hợp với các chỉ số khối lượng để đảm bảo hỗ trợ khối lượng
  • giới thiệu các thuật toán học máy cho tối ưu hóa tham số động
  • Các chiến lược nhiều khung thời gian để phân biệt xu hướng ngắn hạn và dài hạn
  • Xem xét các chiến lược điều chỉnh xuyên thị trường sử dụng các mối quan hệ giá giữa các thị trường

Tóm lại

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")

Thêm nữa