Chiến lược động lực


Ngày tạo: 2023-09-26 15:16:56 sửa đổi lần cuối: 2023-09-26 15:16:56
sao chép: 1 Số nhấp chuột: 777
1
tập trung vào
1617
Người theo dõi

Tổng quan

Chiến lược động lực là một chiến lược giao dịch dựa trên xu hướng thay đổi giá. Chiến lược này tạo ra tín hiệu giao dịch bằng cách tính toán sự thay đổi của giá trong một chu kỳ nhất định, đánh giá xu hướng chuyển động giá và sau đó tạo ra tín hiệu giao dịch.

Nguyên tắc chiến lược

Chiến lược này đánh giá động lực của giá bằng cách tính toán sự thay đổi của giá đóng cửa trong một chu kỳ nhất định. Cụ thể hơn, tính toán sự thay đổi của giá đóng cửa so với giá đóng cửa trước chu kỳ N.

Đầu tiên tính toán chỉ số động lượng đầu tiên MOM0, công thức là:

MOM0 = CLOSE - CLOSE[N]

Trong đó, CLOSE là giá đóng cửa chu kỳ hiện tại, CLOSE[N] là giá đóng cửa trước chu kỳ N. Như vậy, MOM0>0 là giá đóng cửa trước chu kỳ N tăng so với chu kỳ hiện tại, MOM0 là giá đóng cửa trước chu kỳ N giảm so với chu kỳ hiện tại.

Sau đó tính ra chỉ số động lượng thứ hai MOM1, công thức là:

MOM1 = MOM0 - MOM0[1]

MOM1>0 là MOM0 tăng, MOM1 là MOM0 giảm.

Đồng thời tính toán chỉ số động lực thứ ba MOM2, công thức là:

MOM2 = CLOSE - CLOSE[1]

Nghĩa là tính giá đóng cửa của chu kỳ hiện tại trừ giá đóng cửa của chu kỳ trước. MOM2>0 cho thấy giá đóng cửa tăng, MOM2 cho thấy giá đóng cửa giảm.

Khi MOM0>0 và MOM1>0, biểu thị động lực tiếp tục tăng, tạo ra tín hiệu mua; khi MOM0 và MOM2, biểu thị động lực tiếp tục giảm, tạo ra tín hiệu bán.

Điều kiện thời gian time_cond cũng được thêm vào mã, chỉ có tín hiệu giao dịch trong khoảng thời gian phản hồi được thiết lập. Ngoài ra, trước khi đặt hàng, hãy kiểm tra xem điều kiện vẫn còn tồn tại hay không, để tránh tình huống đặt hàng sau khi tín hiệu biến mất.

Phân tích lợi thế

  • Chiến lược động lực nắm bắt xu hướng thay đổi giá, không bị ảnh hưởng bởi chính giá, tránh rủi ro theo đuổi cao giết thấp
  • Sử dụng chỉ số động lượng kép chéo, có thể lọc phá vỡ giả, tránh phát ra tín hiệu sai
  • Tăng thời gian và điều kiện kiểm tra để giảm giao dịch vô hiệu
  • Các nguyên tắc chiến lược đơn giản, dễ thực hiện
  • Các tham số có thể được điều chỉnh linh hoạt để phù hợp với 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 bị chậm trễ, có thể bỏ lỡ thời điểm chuyển đổi
  • Biểu đồ giao thoa tăng hiệu ứng sóng, nhưng cũng có thể bỏ lỡ một số cơ hội
  • Không thể xác định được mức độ và tốc độ tăng hoặc giảm giá
  • Cần cẩn thận chọn các tham số, 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 quả phụ thuộc vào các tham số tối ưu hóa, các tham số khác nhau trong thời gian cần điều chỉnh

Có thể giảm rủi ro bằng cách rút ngắn chu kỳ động lượng, đưa ra phán đoán xu hướng hoặc thiết lập dừng lỗ. Cũng có thể xem xét thêm chỉ số khối lượng giao dịch để lọc.

Hướng tối ưu hóa

  • Hãy thử các phương pháp tính toán động lực khác nhau như ROC, RSI, v.v.
  • Tăng khả năng đánh giá xu hướng, tránh biến động thị trường
  • Thiết lập chiến lược dừng lỗ, kiểm soát tổn thất đơn
  • Kết hợp với chỉ số khối lượng giao dịch, đảm bảo có hỗ trợ khối lượng giao dịch
  • Tham gia thuật toán học máy để thực hiện tối ưu hóa động của tham số
  • Chiến lược khung thời gian đa dạng, phân biệt xu hướng ngắn hạn và dài hạn
  • Cân nhắc mạo hiểm xuyên thị trường, tận dụng các mối quan hệ giá cả khác nhau

Tóm tắt

Chiến lược động lực có thể xác định hiệu quả hướng điểm nóng của thị trường bằng cách theo dõi xu hướng thay đổi giá thay vì chính giá, nắm bắt cơ hội tăng và giảm giá. Tuy nhiên, động lực có tính trì trệ, lựa chọn tham số và tối ưu hóa danh mục rất quan trọng đối với hiệu quả chiến lược. Chiến lược này dựa trên giao chéo chỉ số động lực kép, có thể lọc một phần tiếng ồn.

Mã nguồn chiến lược
/*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")