Chiến lược EMA theo xu hướng


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

Chiến lược EMA theo xu hướng

Tổng quan

Chiến lược theo dõi xu hướng EMA là một chiến lược theo dõi xu hướng dựa trên chỉ số EMA. Chiến lược này thực hiện theo dõi xu hướng bằng cách tính toán đường EMA cho một chu kỳ nhất định, để xác định hướng xu hướng giá.

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

Chiến lược này chủ yếu dựa trên chỉ số EMA để đánh giá xu hướng giá. Chỉ số EMA là một chỉ số chuyển động trơn của giá, nó cho giá gần đây trọng lượng cao hơn, có thể phản ứng nhanh hơn với sự thay đổi giá. Chiến lược này bằng cách tính toán giá trung bình trong chu kỳ EMA, Produce đường cong.

Theo nguyên tắc này, chiến lược này tháo lỗ khi giá vượt qua EMA và tháo lỗ khi giá vượt qua EMA, theo dõi sự thay đổi của xu hướng giá bằng cách theo dõi đường EMA. Cụ thể, nó tính toán một đường EMA 8 chu kỳ trong mã, tháo lỗ khi giá đóng cửa và tháo lỗ khi giá vượt qua EMA và đặt điểm dừng để kiểm soát rủi ro.

Lợi thế chiến lược

  • Dòng EMA có khả năng làm mỏng biến động giá, lọc tiếng ồn thị trường, theo dõi xu hướng đường dài.
  • Tần số hoạt động trung bình. So với chỉ số chu kỳ ngắn, đường EMA điều chỉnh tần số trung bình, tránh giao dịch quá thường xuyên.
  • Đơn giản để thực hiện. Chiến lược này có thể theo dõi xu hướng chỉ dựa trên một chỉ số EMA, rất đơn giản và trực tiếp.
  • Khả năng mở rộng. Có thể làm phong phú chiến lược bằng cách tối ưu hóa tham số EMA hoặc thêm các chỉ số khác.

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

  • Có thể có nguy cơ bỏ lỡ điểm điều chỉnh. Khi giá thay đổi nhanh chóng, đường EMA cần một thời gian để điều chỉnh và có thể bỏ lỡ thời gian nhập cảnh tốt nhất. Giải pháp là kết hợp các chỉ số khác để đánh giá điểm điều chỉnh.

  • Có nguy cơ mất mát lớn hơn. Dòng EMA đóng vai trò theo dõi xu hướng, không thể xác định chính xác điểm điều chỉnh. Nếu giá đảo ngược, có thể gây ra tổn thất lớn hơn. Giải pháp là đặt điểm dừng hợp lý.

  • Tần suất giao dịch có thể quá cao hoặc quá thấp. Chu kỳ EMA khác nhau, và tần suất giao dịch của chiến lược sản xuất cũng khác nhau. Chu kỳ quá ngắn có thể dẫn đến giao dịch quá mức, và chu kỳ quá dài có thể làm mất cơ hội. Giải pháp là thử nghiệm các tham số EMA khác nhau để tìm chu kỳ tốt nhất.

Lời khuyên tối ưu hóa

  • Tối ưu hóa tham số EMA, tìm điểm cân bằng tốt nhất. Bạn có thể xác định giá trị chu kỳ EMA tốt nhất bằng cách tối ưu hóa từng bước.

  • Thêm một số chỉ số khác để xác định điểm điều chỉnh. Ví dụ, kết hợp các chỉ số mua quá mức và bán quá mức như RSI, bạn có thể xác định điểm giá tốt hơn.

  • Tối ưu hóa chiến lược dừng lỗ để tìm điểm dừng tối ưu. Bằng cách kiểm tra lại, bạn có thể thử nghiệm các điểm dừng khác nhau để tìm vị trí dừng lỗ tối đa để khóa lợi nhuận.

  • Tối ưu hóa lựa chọn giống. Điều chỉnh các tham số chu kỳ EMA theo đặc điểm của các giống khác nhau để có hiệu quả tối ưu.

Tóm tắt

Chiến lược EMA theo dõi xu hướng là một chiến lược theo dõi xu hướng dựa trên chỉ số rất điển hình. Nó đơn giản, trực tiếp, dễ thực hiện và phù hợp cho người mới bắt đầu học.

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