Xu hướng EMA theo chiến lược

Tác giả:ChaoZhang, Ngày: 2023-10-16 15:54:41
Tags:

img

Tổng quan

Chiến lược theo xu hướng EMA là một chiến lược theo dõi xu hướng dựa trên chỉ số EMA. Nó đánh giá hướng xu hướng bằng cách tính toán đường EMA của một khoảng thời gian cụ thể và theo xu hướng. Nó đi ngắn khi giá vượt qua đường EMA và đi dài khi giá vượt qua đường EMA. Đây là một chiến lược theo xu hướng điển hình.

Chiến lược logic

Cốt lõi của chiến lược này là xác định xu hướng bằng cách sử dụng chỉ số EMA. EMA là một đường trung bình động theo cấp số nhân, nó cho trọng lượng nhiều hơn cho giá gần đây và phản ứng nhanh hơn với sự thay đổi giá. Bằng cách tính toán giá trung bình trong một khoảng thời gian EMA, nó tạo ra một đường cong mượt mà. Khi giá vượt qua đường EMA từ dưới, nó báo hiệu xu hướng tăng; khi giá vượt qua đường EMA từ trên, nó báo hiệu xu hướng giảm.

Dựa trên logic này, chiến lược sẽ bán ngắn khi giá vượt qua EMA và bán dài khi giá vượt qua EMA, theo dõi xu hướng bằng cách theo đường EMA. Cụ thể, nó tính EMA 8 giai đoạn trên giá đóng - bán ngắn khi đóng vượt qua EMA và bán dài khi đóng vượt dưới EMA. Nó cũng thiết lập lệnh dừng lỗ để kiểm soát rủi ro.

Ưu điểm

  • Theo dõi xu hướng hiệu quả: EMA làm mịn biến động giá, lọc tiếng ồn thị trường và theo dõi xu hướng trung bình đến dài hạn.

  • Tần suất giao dịch hợp lý: So với các chỉ số ngắn hạn, EMA có tần suất điều chỉnh trung bình, tránh giao dịch quá mức.

  • Đơn giản để thực hiện. Chiến lược chỉ dựa trên một chỉ số EMA nhưng đạt được mục tiêu theo xu hướng.

  • Khả năng mở rộng: Chiến lược có thể được tăng cường bằng cách tối ưu hóa các tham số EMA hoặc thêm các chỉ số khác.

Rủi ro và giải pháp

  • Khi giá đảo ngược nhanh chóng, EMA cần thời gian để điều chỉnh và có thể bỏ lỡ các điểm vào tốt nhất. Giải pháp là kết hợp với các chỉ số xác định các điểm điều chỉnh.

  • EMA theo xu hướng và không thể xác định chính xác các điểm điều chỉnh. Sự đảo ngược có thể dẫn đến tổn thất lớn. Giải pháp là thiết lập stop loss hợp lý.

  • Tần số quá cao hoặc quá thấp. Thời gian EMA khác nhau dẫn đến tần số giao dịch khác nhau. Quá ngắn có thể giao dịch quá nhiều, quá dài có thể bỏ lỡ cơ hội. Giải pháp là kiểm tra các thời gian EMA khác nhau để tìm ra tối ưu.

Những gợi ý để cải thiện

  • Tối ưu hóa các thông số EMA để tìm sự cân bằng tốt nhất.

  • Thêm các chỉ số khác để xác định các điểm điều chỉnh. Kết hợp với các chỉ số như RSI để phát hiện tốt hơn sự đảo ngược.

  • Tối ưu hóa chiến lược dừng lỗ để tìm mức dừng lỗ tốt nhất thông qua backtesting.

  • Tối ưu hóa lựa chọn biểu tượng. Điều chỉnh thời gian EMA dựa trên đặc điểm biểu tượng để đạt được kết quả tốt nhất.

Tóm lại

Chiến lược theo dõi xu hướng EMA là một chiến lược theo dõi xu hướng rất điển hình dựa trên một chỉ số. Nó rất đơn giản và dễ thực hiện, phù hợp cho người mới bắt đầu học. Trong khi đó, nó có khả năng mở rộng để cải thiện thêm chiến lược bằng cách thêm các chỉ số hoặc tối ưu hóa các tham số. Với những cải tiến liên tục, nó có thể trở thành một công cụ theo dõi xu hướng rất thực tế.


/*backtest
start: 2022-10-09 00:00:00
end: 2023-10-15 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title = "EMA Close Strategy", shorttitle = "EMA Close",calc_on_order_fills=true,calc_on_every_tick =true, initial_capital=21000,commission_value=.25,overlay = true,default_qty_type = strategy.percent_of_equity, default_qty_value = 100)

EmaSource   = input(defval = close, title = "EMA Source")
EmaLength   = input(defval = 8, title = "EMA Period", minval = 1)

StartYear = input(2018, "Backtest Start Year")
StartMonth = input(1, "Backtest Start Month")
StartDay = input(1, "Backtest Start Day")
stopLoss = input(30, title = "Stop loss percentage(0.1%)") 
UseStopLoss = input(true,"UseStopLoss")

window() => time >=  timestamp(StartYear, StartMonth, StartDay,00,00) ? true : false



EMA = ema(EmaSource,EmaLength)

plot(EMA, title = "EMA", color = green, linewidth = 2, style = line, transp = 50)

long = crossunder(EMA, close)
short= crossover(EMA, close)

if (long)
    strategy.entry("LongId", strategy.long, when=window())
    
if (short)
    strategy.entry("ShortId", strategy.short, when=window())

if (UseStopLoss)
    strategy.exit("StopLoss", "LongId", loss = close * stopLoss / 1000 / syminfo.mintick)
    strategy.exit("StopLoss", "ShortId", loss = close * stopLoss / 1000 / syminfo.mintick)

Thêm nữa