Chiến lược giao thoa EMA tạo ra tín hiệu mua và bán bằng cách theo dõi giao thoa giữa hai đường EMA của các giai đoạn khác nhau. Khi EMA ngắn hơn vượt qua EMA dài hơn, một tín hiệu mua được tạo ra. Khi EMA ngắn hơn vượt qua dưới EMA dài hơn, một tín hiệu bán được tạo ra. Chiến lược này cũng kết hợp chỉ số SuperTrend để lọc các đột phá sai.
Chiến lược này chủ yếu dựa trên đường chéo vàng và đường chéo chết của đường EMA. Các đường EMA có thể làm mịn dữ liệu giá và lọc ra tiếng ồn. Sự giao thoa giữa các đường EMA chỉ ra sự thay đổi xu hướng giá. Khi EMA thời gian ngắn hơn (20 giai đoạn) vượt qua EMA thời gian dài hơn (50 giai đoạn), điều đó có nghĩa là giá ngắn hạn hiện đang ở trên giá dài hạn, ngụ ý xu hướng phá vỡ tăng và tạo ra tín hiệu mua. Khi EMA thời gian ngắn hơn vượt qua dưới EMA thời gian dài hơn, điều đó có nghĩa là giá ngắn hạn phá vỡ dưới giá dài hạn, ngụ ý xu hướng giảm và tạo ra tín hiệu bán.
Ngoài ra, chiến lược này sử dụng chỉ số SuperTrend để lọc các tín hiệu sai được tạo ra bởi các đường chéo EMA. Chỉ số SuperTrend được tính dựa trên ATR để vẽ các dải trên và dưới xác định tốt hơn xu hướng thực. Khi giá vượt qua dải trên SuperTrend, một tín hiệu mua được tạo ra. Khi giá vượt qua dải dưới SuperTrend, một tín hiệu bán được tạo ra. Các tín hiệu chéo EMA chỉ có giá trị khi được xác nhận bởi các tín hiệu SuperTrend. Điều này giúp loại bỏ các tín hiệu sai do biến động giá.
Cụ thể, logic nhập vào chiến lược được xác định như sau:
Khi 20EMA vượt trên 50EMA, và giá phá vỡ trên dải trên của SuperTrend, tạo tín hiệu mua.
Khi 20EMA vượt qua dưới 50EMA, và giá phá vỡ dưới dải dưới SuperTrend, tạo tín hiệu bán.
Sử dụng đường chéo EMA để xác định hướng xu hướng chính kết hợp với bộ lọc SuperTrend có thể cải thiện độ chính xác của tín hiệu giao dịch.
Chiến lược chéo EMA có những lợi thế sau:
Đơn giản để thực hiện. Chỉ cần tính toán hai đường chéo EMA.
EMA như trung bình động có thể lọc ra một số tiếng ồn.
Kết hợp với SuperTrend làm giảm thêm các tín hiệu sai do biến động giá.
Các khoảng thời gian EMA có thể được điều chỉnh cho các môi trường thị trường khác nhau.
Có thể tùy chỉnh cho các giao dịch hướng dài hoặc ngắn.
Có thể được thực hiện trong các khung thời gian khác nhau cho các phong cách giao dịch khác nhau.
Ngoài ra còn có một số rủi ro liên quan đến chiến lược chéo EMA:
Các tín hiệu chéo EMA có thể bị chậm trễ trong các biến động giá cực đoan, không phản ánh kịp thời những thay đổi giá.
Các đường EMA có hiệu ứng chậm trễ, có thể tạo ra các tín hiệu không chính xác.
Các thiết lập thời gian EMA không đúng có thể dẫn đến các tín hiệu sai quá mức.
Crossover một mình không thể xác định xu hướng thực tế, vẫn còn chậm lại.
Quản lý rủi ro thích hợp như dừng lỗ là cần thiết để kiểm soát rủi ro.
Một số cách để giảm rủi ro:
Tối ưu hóa thời gian EMA để phù hợp hơn với các dòng nhanh và chậm.
Giảm thời gian giữ và áp dụng stop loss kịp thời.
Kết hợp với các chỉ số khác như trung bình động, mô hình nến để đánh giá toàn diện.
Điều chỉnh tần suất giao dịch để giảm số lượng giao dịch.
Chiến lược này có thể được tăng cường và tối ưu hóa trong các khía cạnh sau:
Tối ưu hóa thời gian EMA cho các chu kỳ và môi trường thị trường khác nhau.
Kiểm tra các chỉ số trung bình động khác nhau như SMA, KWMA.
Kết hợp nhiều chỉ số kỹ thuật hơn để tạo ra các mô hình đa biến, như MACD, RSI. Áp dụng thuật toán học máy để tối ưu hóa các thông số và trọng lượng.
Thêm các kỹ thuật dừng lỗ như dừng lỗ, tỷ lệ dừng lỗ để kiểm soát rủi ro.
Thiết lập bộ lọc âm lượng hoạt động với các chỉ số âm lượng để tránh tín hiệu sai.
Tối ưu hóa lối ra bằng cách thiết lập các quy tắc thoát, kết hợp với các mẫu biểu đồ, đột phá vv.
Xác nhận xu hướng trên khung thời gian cao hơn, nhập giao dịch trên khung thời gian thấp hơn để theo dõi xu hướng.
Chiến lược chéo EMA là một hệ thống theo dõi xu hướng đơn giản và thực tế. Nó có thể xác định xu hướng trung hạn và tạo ra tín hiệu thời gian. Kết hợp với bộ lọc SuperTrend có thể làm giảm các giao dịch sai một cách hiệu quả. Nhưng rủi ro như trễ và tín hiệu sai vẫn tồn tại. Chiến lược có thể được tăng cường thông qua tối ưu hóa tham số, dừng lỗ, kết hợp các chỉ số, vv. Chiến lược chéo EMA dễ sử dụng, phù hợp với theo dõi xu hướng trung hạn và hiệu quả cho các nhà giao dịch mới bắt đầu.
/*backtest start: 2023-09-24 00:00:00 end: 2023-10-24 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © alokbothra //@version=5 strategy("Ema Crossover", overlay=true, initial_capital = 1000) start = timestamp(2021,1,1,0,0) end = timestamp(2023,10,30,0,0) plot (ta.ema(close,20), title = "Ema 20", color = color.green , linewidth = 2) plot (ta.ema(close,50), title = "Ema 50", color = color.red, linewidth = 2 ) //supertrend 1 Periods = input(title='ATR Period', defval=11) Multiplier = input.float(title='ATR Multiplier', step=0.1, defval=3) changeATR = input(title='Change ATR Calculation Method ?', defval=true) showsignals = input(title='Show Buy/Sell Signals ?', defval=true) highlighting = input(title='Highlighter On/Off ?', defval=true) atr2 = ta.sma(ta.tr, Periods) atr = changeATR ? ta.atr(Periods) : atr2 up = close - Multiplier * atr up1 = nz(up[1], up) up := close[1] > up1 ? math.max(up, up1) : up dn =close+ Multiplier * atr dn1 = nz(dn[1], dn) dn := close[1] < dn1 ? math.min(dn, dn1) : dn trend = 1 trend := nz(trend[1], trend) trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend upPlot = plot(trend == 1 ? up : na, title='Up Trend', style=plot.style_linebr, linewidth=2, color=color.new(color.green, 0)) buySignal = trend == 1 and trend[1] == -1 plotshape(buySignal ? up : na, title='UpTrend Begins', location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.green, 0)) dnPlot = plot(trend == 1 ? na : dn, title='Down Trend', style=plot.style_linebr, linewidth=2, color=color.new(color.red, 0)) sellSignal = trend == -1 and trend[1] == 1 plotshape(sellSignal ? dn : na, title='DownTrend Begins', location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.red, 0)) mPlot = plot(ohlc4, title='', style=plot.style_circles, linewidth=0) changeCond = trend != trend[1] longonly = input.bool(defval = true, title = 'Long Only') shortonly = input.bool(defval = true, title = 'Short Only') longCondition = (ta.ema(close, 20) >= ta.ema(close, 50)) shortCondition = (ta.ema(close, 20) <= ta.ema(close, 50)) long = (trend == 1) short = (trend == -1) sell= short cover= long if time >= start and time < end if longonly if ((longCondition) and (long)) strategy.entry ("Long Entry", strategy.long, comment ="Long Entry") if strategy.position_size > 0 strategy.close("Long Entry", when = sell, comment = "Long Exit") if shortonly if ((shortCondition) and (short)) strategy.entry("Short Entry", strategy.short, comment = "Short Entry") if strategy.position_size < 0 strategy.close("Short Entry", when = cover, comment = "Short Exit")