Xu hướng trung bình di chuyển gấp đôi theo chiến lược

Tác giả:ChaoZhang, Ngày: 2024-03-22 13:56:44
Tags:

img

Tổng quan

Chiến lược này sử dụng sự chéo chéo của hai đường trung bình động để xác định sự thay đổi trong xu hướng thị trường và đưa ra quyết định mua / bán dựa trên hướng xu hướng. Nó đi dài khi MA ngắn hạn vượt quá MA dài hạn, và đi ngắn khi MA ngắn hạn vượt dưới MA dài hạn, nhằm theo xu hướng.

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

Cốt lõi của chiến lược này là hai đường trung bình động: MA nhanh (thời gian mặc định 32) và MA chậm (cũng là thời gian mặc định 32), có thể điều chỉnh thông qua các tham số. Khi giá đóng vượt trên / dưới kênh được hình thành bởi hai MA này, nó chỉ ra sự đảo ngược xu hướng và chiến lược tạo ra tín hiệu mua / bán phù hợp:

  • Khi MA nhanh vượt qua MA chậm, đi dài
  • Khi MA nhanh vượt qua dưới MA chậm, đi ngắn
  • Khi đã giữ một vị trí dài, nếu MA nhanh vượt qua dưới MA chậm, đóng dài và đi ngắn
  • Khi đã nắm giữ một vị trí ngắn, nếu MA nhanh vượt qua MA chậm, đóng ngắn và mua dài

Thông qua phương pháp chéo MA này, chiến lược có thể theo xu hướng, giữ các vị trí dài trong xu hướng tăng và các vị trí ngắn trong xu hướng giảm, cho đến khi có tín hiệu đảo ngược.

Phân tích lợi thế

  1. Theo dõi xu hướng: Bằng cách sử dụng chéo MA để xác định xu hướng, chiến lược có thể nắm bắt và theo dõi các xu hướng thị trường chính hiệu quả.
  2. Đơn giản và dễ sử dụng: Logic chiến lược rõ ràng, chỉ sử dụng hai MA. Cài đặt tham số đơn giản và dễ hiểu và nắm vững.
  3. Áp dụng rộng: Chiến lược có thể áp dụng rộng rãi cho các công cụ và khung thời gian khác nhau và có thể được sử dụng trên nhiều thị trường khác nhau.
  4. Dừng lỗ kịp thời: Khi xu hướng đảo ngược, chiến lược có thể đóng các vị trí kịp thời để kiểm soát lỗ.

Phân tích rủi ro

  1. Hiệu suất kém trong các thị trường dao động: Khi thị trường có một mô hình bên, các tín hiệu chéo thường xuyên sẽ dẫn đến giao dịch và thua lỗ quá mức.
  2. Phản ứng không đầy đủ đối với các chuyển động cực đoan: Chiến lược có thể phản ứng quá chậm đối với các tình huống cực đoan (chẳng hạn như tăng hoặc giảm nhanh chóng), dẫn đến tổn thất lớn.
  3. Khó khăn trong tối ưu hóa tham số: Tối ưu hóa các tham số MA đòi hỏi một lượng lớn dữ liệu lịch sử và kiểm tra ngược. Các tham số tối ưu hóa có hướng dẫn hạn chế cho hiệu suất trong tương lai.

Để giải quyết những rủi ro này, có thể xem xét việc thêm các bộ lọc thích hợp, chẳng hạn như bộ lọc ATR hoặc bộ lọc phạm vi thực tế trung bình, để giảm quá mức giao dịch trong các thị trường dao động; đặt mức dừng lỗ hợp lý để kiểm soát lỗ giao dịch duy nhất; và liên tục tối ưu hóa các tham số để thích nghi với thị trường. Tuy nhiên, những hạn chế vốn có của chiến lược rất khó tránh hoàn toàn.

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

  1. Xác nhận xu hướng: Sau khi tạo tín hiệu giao dịch, các chỉ số xác nhận xu hướng bổ sung như MACD hoặc DMI có thể được kết hợp để lọc các tín hiệu thêm.
  2. Đánh giá stop-loss động: Sử dụng các chỉ số như ATR để thiết lập các mức stop-loss động thay vì tỷ lệ phần trăm cố định hoặc giá dừng, để kiểm soát rủi ro tốt hơn.
  3. Đánh giá vị trí: Điều chỉnh kích thước vị trí theo động dựa trên sức mạnh xu hướng, biến động và các chỉ số khác. Tăng vị trí khi xu hướng mạnh và giảm khi nó yếu.
  4. Phân tích nhiều khung thời gian: Xem xét một hệ thống MA nhiều khung thời gian, chẳng hạn như kết hợp các MA hàng ngày và 4 giờ, để lọc và xác nhận lẫn nhau và cải thiện độ chính xác của việc xác định xu hướng.
  5. Các tham số thích nghi: giới thiệu các phương pháp tối ưu hóa tham số thích nghi, chẳng hạn như thuật toán di truyền, để cho phép các tham số chiến lược thích nghi với các điều kiện thị trường khác nhau.

Các tối ưu hóa trên có thể cải thiện khả năng xử lý thị trường phức tạp của chiến lược, nhưng phải cẩn thận để tránh tối ưu hóa quá mức có thể dẫn đến phù hợp đường cong và hiệu suất tương lai kém.

Tóm lại

Phương pháp theo xu hướng MA hai lần nắm bắt xu hướng thông qua các giao lộ MA. Nó đơn giản, dễ sử dụng và có thể áp dụng rộng rãi. Tuy nhiên, nó hoạt động kém trong các thị trường khác nhau, phản ứng không đầy đủ với các chuyển động cực đoan và gặp khó khăn trong tối ưu hóa tham số.

Chiến lược có thể được tối ưu hóa bằng cách giới thiệu nhiều chỉ số lọc hơn, dừng lỗ năng động, kích thước vị trí, phân tích nhiều khung thời gian và các tham số thích nghi.

Nhìn chung, chiến lược này có thể phục vụ như một chiến lược theo xu hướng cơ bản, nhưng nó khó đứng một mình và phù hợp hơn như một phần của danh mục các chiến lược.


/*backtest
start: 2023-03-16 00:00:00
end: 2024-03-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5

//study(title="Demo - SSL Basic", shorttitle="Demo - SSL Basic", overlay=true)
strategy(title='Demo - SSL Basic', shorttitle='Demo - SSL Basic', overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, initial_capital=100, commission_value=0.15)

// Backtest Date Range
start_date_long = input(title='Backtest Long Start Date', defval=timestamp('01 Jan 2018 00:00 +0530'))
end_date_long = input(title='Backtest Long End Date', defval=timestamp('25 Jan 2030 00:00 +0530'))
backtest_range = true

// Inputs
maType = input.string(title='SSL MA Type', options=['SMA', 'EMA', 'WMA'], defval='SMA')
sslLen = input(title='SSL Length', defval=32)
showCross = input(title='Show Crossover?', defval=true)
showEntry = input(title='Show Entry?', defval=true)
showTrend = input(title='Show Trend Colors?', defval=true)

// Calc MA for SSL Channel
calc_ma(close, len, type) =>
    float result = 0
    if type == 'SMA'  // Simple
        result := ta.sma(close, len)
        result
    if type == 'EMA'  // Exponential
        result := ta.ema(close, len)
        result
    if type == 'WMA'  // Weighted
        result := ta.wma(close, len)
        result    
    result

// Add SSL Channel
maHigh = calc_ma(high, sslLen, maType)
maLow = calc_ma(low, sslLen, maType)
Hlv = int(na)
Hlv := close > maHigh ? 1 : close < maLow ? -1 : Hlv[1]
sslDown = Hlv < 0 ? maHigh : maLow
sslUp = Hlv < 0 ? maLow : maHigh
ss1 = plot(sslDown, title='Down SSL', linewidth=2, color=showTrend ? na : color.red)
ss2 = plot(sslUp, title='Up SSL', linewidth=2, color=showTrend ? na : color.lime)

// Conditions
longCondition = ta.crossover(sslUp, sslDown)
shortCondition = ta.crossover(sslDown, sslUp)

// Strategy
if shortCondition
    strategy.close('Long', comment='Long Exit', alert_message='JSON')

if longCondition
    strategy.close('Short', comment='Short Exit', alert_message='JSON')

if backtest_range and longCondition
    strategy.entry('Long', strategy.long, comment='Long Entry', alert_message='JSON')

if backtest_range and shortCondition
    strategy.entry('Short', strategy.short, comment= 'Short Entry', alert_message='JSON')


// Plots
fill(ss1, ss2, color=showTrend ? sslDown < sslUp ? color.new(color.lime, transp=75) : color.new(color.red, transp=75) : na, title='Trend Colors')


Thêm nữa