Chiến lược theo dõi xu hướng chỉ số Momentum


Ngày tạo: 2023-12-05 15:13:25 sửa đổi lần cuối: 2023-12-05 15:13:25
sao chép: 0 Số nhấp chuột: 681
1
tập trung vào
1619
Người theo dõi

Chiến lược theo dõi xu hướng chỉ số Momentum

Tổng quan

Đây là một chiến lược theo dõi xu hướng động của ETF chỉ số dựa trên đường trung bình di chuyển. Nó sử dụng đường hướng và độ lệch của đường trung bình di chuyển nhanh và đường trung bình di chuyển chậm để xác định hướng xu hướng và thực hiện theo dõi xu hướng động của tài sản ETF chỉ số rủi ro thấp.

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

Chiến lược này sử dụng các đường trung bình di chuyển 50 chu kỳ và 150 chu kỳ. Khi đường trung bình di chuyển nhanh vượt qua đường trung bình di chuyển chậm và độ lệch của đường trung bình di chuyển nhanh lớn hơn ngưỡng, coi đó là xu hướng chuyển hướng, làm nhiều hơn; khi đường trung bình di chuyển chậm vượt qua đường trung bình di chuyển nhanh, hoặc độ lệch của đường trung bình di chuyển nhanh nhỏ hơn ngưỡng, coi đó là xu hướng đảo ngược, cân bằng.

Chiến lược này đơn giản và trực tiếp sử dụng hướng và độ dốc của đường trung bình di chuyển để đánh giá xu hướng thị trường, tránh phù hợp với đường cong, kiểm soát rủi ro hiệu quả. Đồng thời, đường trung bình di chuyển có tính chất khử tiếng ồn tự nhiên, có thể lọc tiếng ồn thị trường hiệu quả.

Phân tích lợi thế

Đây là một ETF chỉ số rủi ro thấp với chiến lược theo xu hướng động, có những lợi thế như sau:

  1. Khả năng kiểm soát rủi ro mạnh mẽ. Kiểm soát rủi ro hiệu quả bằng cách lọc tiếng ồn thị trường bằng trung bình di chuyển.
  2. Chi phí thấp. Chỉ sử dụng trung bình di chuyển đơn giản, chi phí thấp và dễ thực hiện.
  3. Thu nhập ổn định. Chỉ số ETF tự biến động nhỏ, hợp tác theo xu hướng, có thể có được thu nhập vượt trội ổn định.
  4. Khả năng thích ứng. Có nhiều tham số có thể điều chỉnh và có thể được tối ưu hóa cho các chỉ số ETF khác nhau.

Phân tích rủi ro

Chiến lược này cũng có một số rủi ro:

  1. Có thể bỏ lỡ sự đảo ngược nhanh. Sử dụng trung bình di chuyển để đánh giá xu hướng, có thể bỏ lỡ sự đảo ngược nhanh.
  2. Các tham số nhạy cảm. Thiết lập tham số không đúng có thể dẫn đến quá nhiều giao dịch hoặc bỏ lỡ cơ hội.
  3. Hiệu quả thay đổi theo môi trường thị trường. Có thể không hoạt động tốt trong tình huống chấn động.

Giải pháp tương ứng:

  1. Kết hợp với các chỉ số khác để đánh giá sự thay đổi nhanh chóng.
  2. Các tham số được thử nghiệm và tối ưu hóa.
  3. Các tham số được điều chỉnh theo động lực của môi trường thị trường.

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

Chiến lược này cũng có thể được tối ưu hóa theo các khía cạnh sau:

  1. Sử dụng các chỉ số hỗ trợ khác như MACD, KD để tăng hiệu quả chiến lược.
  2. Tăng logic dừng lỗ để kiểm soát rủi ro hơn nữa.
  3. Tối ưu hóa các tham số chu kỳ trung bình di chuyển để phù hợp với nhiều chỉ số ETF.
  4. Động thái điều chỉnh tham số để thích ứng với sự thay đổi của môi trường thị trường.

Tóm tắt

Chiến lược này là một chiến lược theo dõi xu hướng số lượng động của chỉ số ETF có rủi ro thấp, đơn giản và dễ thực hiện. Nó sử dụng phương tiện di chuyển để xác định hướng xu hướng, có lợi thế như khả năng kiểm soát rủi ro mạnh mẽ, để đạt được chi phí thấp và lợi nhuận ổn định. Chiến lược này cũng có một số thiếu sót, nhưng có thể được tối ưu hóa hơn nữa bằng nhiều cách, làm cho nó trở thành một công cụ hiệu quả cho việc phân bổ tài sản của chỉ số ETF.

Mã nguồn chiến lược
/*backtest
start: 2023-11-04 00:00:00
end: 2023-12-04 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//please use on daily SPY, or other indexes only
strategy("50-150 INDEX TREND FOLLOWING", overlay=true)

//user input
fastSMA = input(title="Fast Moving Average (Int)",type=input.integer,minval=1,maxval=1000,step=1,defval=50,confirm=false)
slowSMA = input(title="Slow Moving Average (Int)",type=input.integer,minval=1,maxval=1000,step=1,defval=150,confirm=false)
longSlopeThreshold = input(title="Bullish Slope Angle (Deg)",type=input.integer,minval=-90,maxval=90,step=1,defval=5,confirm=false)
shortSlopeThreshold = input(title="Bearish Slope Angle (Deg)",type=input.integer,minval=-90,maxval=90,step=1,defval=-5,confirm=false)
atrValue = input(title="Average True Range (Int)",type=input.integer,minval=1,maxval=100,step=1,defval=14,confirm=false)
risk = input(title="Risk (%)",type=input.integer,minval=1,maxval=100,step=1,defval=100,confirm=false)

//create indicator
shortSMA = sma(close, fastSMA)
longSMA = sma(close, slowSMA)

//calculate ma slope
angle(_source) =>
    rad2degree=180/3.14159265359
    ang=rad2degree*atan((_source[0] - _source[1])/atr(atrValue)) 

shortSlope=angle(shortSMA)
longSlope=angle(longSMA)

//specify crossover conditions
longCondition = (crossover(shortSMA, longSMA) and (shortSlope > longSlopeThreshold)) or ((close > shortSMA) and (shortSMA > longSMA) and (shortSlope > longSlopeThreshold))
exitCondition = crossunder(shortSMA, longSMA) or (shortSlope < shortSlopeThreshold)
strategy.initial_capital = 50000
//units to buy
amount = (risk / 100) * (strategy.initial_capital + strategy.netprofit)
units = floor(amount / close)

//long trade
if (longCondition and strategy.position_size == 0)
    strategy.order("Long", strategy.long, units)

//close long trade
if (exitCondition and strategy.position_size > 0)
    strategy.order("Exit", strategy.short, strategy.position_size)

// Plot Moving Average's to chart
plot(shortSMA, color=color.blue)
plot(longSMA, color=color.green)