Xu hướng theo chiến lược dựa trên đường chéo trung bình động

Tác giả:ChaoZhang, Ngày: 2024-01-31 15:17:31
Tags:

img

Tổng quan

Chiến lược này tạo ra các tín hiệu giao dịch bằng cách tính toán các loại trung bình động khác nhau (Simple Moving Average SMA, Exponential Moving Average EMA, Hull Moving Average HMA và Weighted Moving Average VWMA) và phát hiện các điểm chéo giữa chúng, để xác định xu hướng thị trường và theo dõi nó. Nó tạo ra tín hiệu mua khi MA ngắn hạn vượt qua trên MA dài hạn từ dưới, và bán tín hiệu khi sự vượt qua ngược lại xảy ra.

Chiến lược logic

Ý tưởng cốt lõi của chiến lược này là đánh giá xu hướng thị trường bằng cách so sánh hai đường trung bình động. Cụ thể, nó cho phép cấu hình hai MA với các loại và chiều dài khác nhau thông qua các thông số đầu vào. MA đầu tiên có thời gian dài hơn để đại diện cho xu hướng chính, trong khi MA thứ hai có thời gian ngắn hơn cho xu hướng ngắn hạn hiện tại.

Khi MA ngắn hạn vượt qua MA dài hạn từ dưới, nó báo hiệu rằng xu hướng ngắn hạn đang tăng cường và thị trường đang đi lên. Do đó, một tín hiệu mua được tạo ra tại điểm chéo này. Ngược lại, khi MA ngắn hạn vượt qua dưới MA dài hạn, nó cho thấy xu hướng ngắn hạn đang suy yếu và thị trường đang đảo ngược xuống. Theo đó, một tín hiệu bán được tạo ra sau đó.

Bằng cách phát hiện các giao thoa MA như vậy, chiến lược này theo xu hướng thị trường đối với thương mại.

Ưu điểm

  • Sử dụng phương pháp chéo MA cổ điển và thực tế để xác định xu hướng chính
  • Hỗ trợ kết hợp các loại MA khác nhau, cung cấp tính linh hoạt
  • Logic đơn giản và rõ ràng, dễ hiểu và tự động hóa
  • Các tham số có thể cấu hình được thích nghi với các điều kiện thị trường khác nhau

Phân tích rủi ro

  • MAs có hiệu ứng trì hoãn, tín hiệu có thể đến tại hoặc gần các điểm chuyển đổi khi hành động giá đã xảy ra
  • Các đánh giá xu hướng có thể không chính xác, gây ra tổn thất không cần thiết
  • Kết quả khác nhau đáng kể với các thiết lập tham số MA khác nhau

Giải pháp:

  • Sử dụng thời gian MA ngắn hơn để nhạy cảm hơn
  • Thêm các bộ lọc khác để kiểm tra chéo để tránh lỗi
  • Phương pháp tối ưu hóa tham số chẳng hạn như lực thô, học máy, thuật toán di truyền
  • Kiểm soát vị trí kích thước và dừng mất mát đúng cách

Hướng dẫn cải thiện

  • Thêm các chỉ số khác như bộ lọc để tăng độ chính xác
  • Các thông số MA tự động điều chỉnh dựa trên các điều kiện thị trường thay đổi
  • Sử dụng máy học để tối ưu hóa tham số tự động
  • Cải thiện chiến lược dừng lỗ

Kết luận

Chiến lược này dựa trên ý tưởng cổ điển sử dụng MA crossover để phát hiện xu hướng lớn. Với sự kết hợp MA linh hoạt, nó rất đơn giản để thực hiện và phù hợp với tự động hóa giao dịch thuật toán. Nhìn chung nó khá thực tế nhưng để lại chỗ cho các cải tiến như điều chỉnh tham số, bộ lọc bổ sung vv để cải thiện hiệu suất hơn nữa.


/*backtest
start: 2023-12-31 00:00:00
end: 2024-01-30 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//study(title="MA Crossover Strategy", overlay = true)
strategy("MA Crossover Strategy", overlay=true)
src = input(close, title="Source")

price = request.security(syminfo.tickerid, timeframe.period, src)
ma1 = input(25, title="1st MA Length")
type1 = input("HMA", "1st MA Type", options=["SMA", "EMA", "HMA", "VWMA"])

ma2 = input(7, title="2nd MA Length")
type2 = input("HMA", "2nd MA Type", options=["SMA", "EMA", "HMA", "VWMA"])

f_hma(_src, _length)=>
    _return = wma((2*wma(_src, _length/2))-wma(_src, _length), round(sqrt(_length)))

price1 = if (type1 == "SMA")
    sma(price, ma1)
else
    if (type1 == "EMA")
        ema(price, ma1)
    else
        if (type1 == "VWMA")
            vwma(price, ma1)
        else
            f_hma(price, ma1)
    
price2 = if (type2 == "SMA")
    sma(price, ma2)
else
    if (type2 == "EMA")
        ema(price, ma2)
    else
        if (type2 == "VWMA")
            vwma(price, ma2)
        else
            f_hma(price, ma2)


//plot(series=price, style=line,  title="Price", color=black, linewidth=1, transp=0)
plot(series=price1, style=line,  title="1st MA", color=blue, linewidth=2, transp=0)
plot(series=price2, style=line, title="2nd MA", color=green, linewidth=2, transp=0)


longCondition = crossover(price1, price2)
if (longCondition)
    strategy.entry("Long", strategy.long)

shortCondition = crossunder(price1, price2)
if (shortCondition)
    strategy.entry("Short", strategy.short)


Thêm nữa