Chiến lược giao dịch dựa trên chỉ số EMA và MAMA

Tác giả:ChaoZhang, Ngày: 2023-10-31 14:20:56
Tags:

img

Tổng quan

Chiến lược này dựa trên các chỉ số EMA (Exponential Moving Average) và MAMA (MESA Adaptive Moving Average) để xác định hướng xu hướng và tạo ra các tín hiệu giao dịch theo đường chéo của chúng. EMA thường được sử dụng để đánh giá hướng xu hướng thị trường, trong khi MAMA có thể nắm bắt chính xác hơn các điểm chuyển hướng của thị trường. Sử dụng cả hai có thể cải thiện hiệu suất của chiến lược.

Chiến lược logic

  1. Tính toán EMA nhanh và EMA chậm, phản ánh xu hướng ngắn hạn và dài hạn của thị trường tương ứng.

  2. Tính toán các đường MAMA và FAMA, đó là các đường trung bình động thích nghi.

  3. Khi EMA nhanh vượt qua EMA chậm, một tín hiệu mua được tạo ra.

  4. Khi EMA nhanh vượt qua dưới EMA chậm, một tín hiệu bán được tạo ra.

  5. Khi MAMA vượt qua FAMA, một tín hiệu mua được tạo ra.

  6. Khi MAMA vượt qua dưới FAMA, một tín hiệu bán được tạo ra.

  7. Crossover của MAMA và FAMA có thể được sử dụng để xác nhận tín hiệu EMA hoặc cung cấp phát hiện sớm các biến động xu hướng.

Cụ thể, chiến lược đầu tiên tính toán EMA nhanh (fl) và EMA chậm (sl), phản ánh xu hướng ngắn hạn và dài hạn tương ứng.

Sau đó nó tính toán MAMA và FAMA dựa trên công thức của John Ehlers:

  1. Tính toán biến thể Hilbert của giá cả và chiết xuất thông tin pha của tín hiệu.

  2. Tính toán tần số tức thời p dựa trên thông tin pha.

  3. Tính toán hệ số trọng số α dựa trên giá trị p.

  4. Tính toán MAMA và FAMA dựa trên α.

Cuối cùng, các tín hiệu giao dịch được tạo ra dựa trên EMA và MAMA/FAMA chéo:

  • Long khi EMA vượt qua trên
  • Mức ngắn khi EMA vượt dưới
  • Long khi MAMA vượt qua trên FAMA
  • Tốc độ ngắn khi MAMA vượt qua dưới FAMA

Phân tích lợi thế

Chiến lược này kết hợp các lợi thế của chỉ số EMA và MAMA để cải thiện độ chính xác của tín hiệu giao dịch.

Ưu điểm của EMA:

  • Đơn giản hóa dữ liệu giá hiệu quả và giảm tiếng ồn
  • Theo dõi xu hướng tốt với một số sự chậm trễ
  • Các tham số linh hoạt để điều chỉnh độ nhạy

Ưu điểm của MAMA:

  • Các thông số thích nghi, không cần thiết lập thời gian theo cách thủ công
  • Phản ứng nhanh chóng để nắm bắt xu hướng chuyển đổi sớm
  • Xác định chính xác hỗ trợ và kháng cự

Ưu điểm của việc kết hợp chúng:

  • EMA xác định xu hướng tổng thể
  • MAMA xác minh tín hiệu và phát hiện các lượt sớm
  • Cải thiện độ chính xác và tỷ lệ chiến thắng của tín hiệu

Phân tích rủi ro

Những rủi ro chính của chiến lược này:

  • EMA và MAMA là các chỉ số chậm, tín hiệu nhập cảnh có thể có một số sự chậm trễ và trượt
  • Sự giao thoa thường xuyên trong các thị trường khác nhau gây ra sự thất bại
  • Cài đặt tham số không chính xác dẫn đến xu hướng bị thiếu hoặc tín hiệu giả

Giải pháp:

  • Sử dụng stop loss để kiểm soát mất mát
  • Chọn các thông số hợp lý, tránh quá nhạy cảm
  • Kết hợp với các chỉ số khác để xác nhận tín hiệu

Hướng dẫn tối ưu hóa

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

  • Tối ưu hóa các khoảng thời gian EMA dựa trên các đặc điểm của biểu tượng
  • Tốt điều chỉnh MAMA độ nhạy alpha để nắm bắt tốt hơn xoay
  • Thêm các bộ lọc khác như MACD, RSI để tránh tín hiệu giả
  • Thêm stop loss để kiểm soát rủi ro
  • Backtest để tìm các thông số tối ưu
  • Tự động lấy lợi nhuận để tối đa hóa lợi nhuận

Tóm lại

Chiến lược này tích hợp các điểm mạnh của các chỉ số EMA và MAMA để theo dõi xu hướng và nắm bắt các lượt kịp thời. Với tối ưu hóa tham số và kiểm soát rủi ro, nó có thể đạt được tỷ lệ thắng và lợi nhuận cải thiện. Nhưng người dùng vẫn nên thận trọng dựa trên sở thích rủi ro cá nhân.


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

//@version=2
strategy("EMAMA strategy", overlay=true)
//This entire strategy is courtesy of LazyBear for programming the original EMAMA system, I simply added a strategy element to everything to round things out. 

src=input(hl2, title="Source")
fl=input(.5, title="Fast Limit")
sl=input(.05, title="Slow Limit")
sp = (4*src + 3*src[1] + 2*src[2] + src[3]) / 10.0
dt = (.0962*sp + .5769*nz(sp[2]) - .5769*nz(sp[4])- .0962*nz(sp[6]))*(.075*nz(p[1]) + .54)
q1 = (.0962*dt + .5769*nz(dt[2]) - .5769*nz(dt[4])- .0962*nz(dt[6]))*(.075*nz(p[1]) + .54)
i1 = nz(dt[3])
jI = (.0962*i1 + .5769*nz(i1[2]) - .5769*nz(i1[4])- .0962*nz(i1[6]))*(.075*nz(p[1]) + .54)
jq = (.0962*q1 + .5769*nz(q1[2]) - .5769*nz(q1[4])- .0962*nz(q1[6]))*(.075*nz(p[1]) + .54)
i2_ = i1 - jq
q2_ = q1 + jI
i2 = .2*i2_ + .8*nz(i2[1])
q2 = .2*q2_ + .8*nz(q2[1])
re_ = i2*nz(i2[1]) + q2*nz(q2[1])
im_ = i2*nz(q2[1]) - q2*nz(i2[1])
re = .2*re_ + .8*nz(re[1])
im = .2*im_ + .8*nz(im[1])
p1 = iff(im!=0 and re!=0, 360/atan(im/re), nz(p[1]))
p2 = iff(p1 > 1.5*nz(p1[1]), 1.5*nz(p1[1]), iff(p1 < 0.67*nz(p1[1]), 0.67*nz(p1[1]), p1))
p3 = iff(p2<6, 6, iff (p2 > 50, 50, p2))
p = .2*p3 + .8*nz(p3[1])
spp = .33*p + .67*nz(spp[1])
phase = atan(q1 / i1)
dphase_ = nz(phase[1]) - phase
dphase = iff(dphase_< 1, 1, dphase_)
alpha_ = fl / dphase
alpha = iff(alpha_ < sl, sl, iff(alpha_ > fl, fl, alpha_))
mama = alpha*src + (1 - alpha)*nz(mama[1])
fama = .5*alpha*mama + (1 - .5*alpha)*nz(fama[1])
pa=input(false, title="Mark crossover points")

plotarrow(pa?(cross(mama, fama)?mama<fama?-1:1:na):na, title="Crossover Markers")

fr=input(false, title="Fill MAMA/FAMA Region")

duml=plot(fr?(mama>fama?mama:fama):na, style=circles, color=gray, linewidth=0, title="DummyL")

mamal=plot(mama, title="MAMA", color=red, linewidth=2)

famal=plot(fama, title="FAMA", color=green, linewidth=2)

fill(duml, mamal, red, transp=70, title="NegativeFill")

fill(duml, famal, green, transp=70, title="PositiveFill")

ebc=input(false, title="Enable Bar colors")

bc=mama>fama?lime:red

barcolor(ebc?bc:na)

longCondition = crossover(mama, fama)
if (longCondition)
    strategy.entry("My Long Entry Id", strategy.long)

shortCondition = crossunder(mama, fama)
if (shortCondition)
    strategy.entry("My Short Entry Id", strategy.short)

Thêm nữa