Chiến lược EMA đa chỉ số là một chiến lược theo dõi xu hướng tổng hợp sử dụng nhiều chỉ số như EMA, MACD, Oscillator, RSI, Stochastic và Bollinger Bands. Chiến lược này tính toán các tín hiệu tổng hợp của nhiều chỉ số để xác định liệu hiện tại có xu hướng tăng hay giảm, để tạo ra tín hiệu mua và bán.
Chiến lược này bắt đầu bằng việc tính toán các chỉ số sau:
EMA: tính toán chỉ số di chuyển trung bình EMA của một chu kỳ nhất định
MACD: tính toán đường DIF và đường DEA của chỉ số MACD.
Oscillator: tính toán chênh lệch giữa giá đóng cửa và giá mở cửa trong một chu kỳ nhất định.
RSI: Chỉ số tương đối mạnh và yếu trong một chu kỳ nhất định.
Stochastic: tính giá trị K và D của chỉ số ngẫu nhiên cho một số tham số nhất định.
Bollinger Bands: Bollinger Bands tính toán một chu kỳ nhất định.
Sau đó, các chỉ số này được gán các giá trị khác nhau dựa trên trạng thái hiện tại của chúng. Ví dụ: Stochastic được gán giá trị 2 khi nó nhỏ hơn 20, và -2 khi RSI lớn hơn 80.
Sau đó cộng tất cả các giá trị của các chỉ số để tính một tín hiệu tổng hợp. Nếu kích hoạt lớn hơn bằng 7, sẽ tạo ra tín hiệu mua; Nếu kích hoạt nhỏ hơn bằng 7, sẽ tạo ra tín hiệu bán.
Bằng cách tính toán các tín hiệu tổng hợp của nhiều chỉ số, bạn có thể đánh giá chính xác hơn về hướng của xu hướng hiện tại, tạo ra tín hiệu giao dịch đáng tin cậy hơn.
Ưu điểm lớn nhất của chiến lược đa chỉ số này là có thể kết hợp lợi thế của nhiều chỉ số để đưa ra phán đoán toàn diện và chính xác hơn, tránh tín hiệu sai lầm do chỉ số đơn gây ra.
Các lợi thế của chiến lược này bao gồm:
Sử dụng nhiều chỉ số để đánh giá xu hướng một cách đáng tin cậy hơn. Chỉ số đơn lẻ có thể tạo ra tín hiệu sai lệch, nhiều chỉ số có thể xác minh lẫn nhau, giảm sai sót.
Sử dụng các đặc điểm khác nhau của chỉ số để nhận biết các giai đoạn khác nhau trong xu hướng. Ví dụ: MACD có thể nhận biết xu hướng bắt đầu, RSI có thể xác định xem có quá nóng hay không.
Các chỉ số với các thiết lập tham số khác nhau có thể chụp các đặc điểm của các chu kỳ khác nhau. Ví dụ như EMA chu kỳ nhanh và EMA chu kỳ chậm.
Bạn có thể tùy chỉnh trọng lượng của mỗi chỉ số. Đối với các chỉ số quan trọng hơn, bạn có thể cho trọng lượng cao hơn.
Có thể tối ưu hóa kết hợp chỉ số và phân bổ trọng lượng dựa trên kết quả backtest để có hiệu quả chiến lược tốt hơn.
Mặc dù chiến lược này sử dụng nhiều chỉ số để đánh giá xu hướng, nhưng vẫn có những rủi ro như sau:
Sự kết hợp nhiều chỉ số không phù hợp, không thể tận dụng lợi thế của từng chỉ số, hoặc gây ra xung đột phán đoán. Cần hiểu môi trường ứng dụng của mỗi chỉ số.
Phân phối trọng lượng không hợp lý, không thể thể hiện chính xác tầm quan trọng của các chỉ số. Cần phải tối ưu hóa trọng lượng thông qua thử nghiệm lặp đi lặp lại.
Thiết lập tham số một chu kỳ có thể không phù hợp, nên sử dụng xác minh nhiều chu kỳ.
Các trọng số và tham số chỉ số cố định không thể thích ứng với sự thay đổi của thị trường, cần phải giới thiệu cơ chế điều chỉnh động.
Các tín hiệu chỉ số bị chậm trễ, nên kết hợp với các phương pháp kỹ thuật khác để đánh giá thời gian dừng lỗ.
Gói chỉ số đa dạng làm tăng sự phức tạp của chiến lược, cần có đủ dữ liệu lịch sử để hỗ trợ và điều chỉnh tham số khó hơn.
Có một số cách để tối ưu hóa chiến lược này:
Kiểm tra nhiều loại chỉ số hơn để tìm các chỉ số nhạy cảm hơn với môi trường thị trường hiện tại.
Tối ưu hóa các tham số chu kỳ cho mỗi chỉ số để nó có thể nắm bắt các đặc điểm xu hướng ở các cấp khác nhau.
Tối ưu hóa phân bổ trọng lượng cho các chỉ số để thể hiện chính xác hơn tầm quan trọng tương đối của các chỉ số.
Tăng cơ chế điều chỉnh động, tối ưu hóa các tham số và trọng lượng theo thời gian thực, thích ứng với sự thay đổi của thị trường.
Kết hợp với chiến lược dừng lỗ, thiết lập điểm dừng lỗ hợp lý để giảm nguy cơ thua lỗ.
Thêm nhiều vòng thời gian xác minh để tránh quá tối ưu hóa một vòng.
Sử dụng phương pháp tối ưu hóa từng bước và tối ưu hóa kết hợp để tìm kiếm các kết hợp tham số tối ưu nhất.
Thêm các phương pháp cao cấp như học máy để cân nhắc các chỉ số thông minh hơn.
Tối ưu hóa chiến lược mua và bán logic, tránh giao dịch quá thường xuyên trong khi vẫn theo dõi xu hướng.
Chiến lược EMA đa chỉ số sử dụng lợi thế của nhiều chỉ số như EMA, MACD, RSI để đánh giá hướng xu hướng thị trường hiện tại để tạo ra tín hiệu giao dịch. So với chiến lược chỉ số đơn, chiến lược này có thể phân tích thị trường một cách toàn diện hơn và giảm sự xuất hiện của tín hiệu sai.
/*backtest
start: 2023-08-28 00:00:00
end: 2023-09-27 00:00:00
period: 4h
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/
// © ally17
//@version=4
// strategy("ELIA MULTI STRATEGY",overlay=true,initial_capital=1000, default_qty_type=strategy.percent_of_equity, commission_type=strategy.commission.percent, commission_value=0.00, default_qty_value=25)
//INPUT
start = timestamp(input(2021, "start year"), 1, 1, 00, 00)
end = timestamp(input(9999, "end year"), 1, 1, 00, 00)
emalen=input(80, title="Ema Len")
macdfast=input(12, title="Macd Fast Len")
macdslow=input(26, title="Macd Fast Len")
macdsig=input(12, title="Macd Signal Len")
occlen=input(15, title="Occ Len")
rsilen=input(2, title="Rsi Len")
stochklen=input(11, title="Stk K Len")
stochdlen=input(3, title="Stk D Len")
stochlen=input(3, title="Stk Smooth Len")
bblength = input(10, minval=1, title="BB Len")
mult = input(2.0, minval=0.001, maxval=50, title="BB Std Dev")
momlen=input(10, title="Mom Len")
//CALCOLI
var trigger = 0.0
var emavar = 0.0
var macdvar = 0.0
var occvar = 0.0
var rsivar = 0.0
var stochvar = 0.0
var bbvar = 0.0
var donvar =0.0
ema = ema(close,emalen)
[macdLine, signalLine, histLine] = macd(close, 12, 26, 9) // MACD
occ = ema(close,occlen) - ema(open,occlen)
rsi = rsi(close, rsilen) // RSI
stoch = sma(stoch(close, high, low, stochklen), stochlen) // Stoch
basis = sma(close, bblength)
dev = mult * stdev(close, bblength)
upper = basis + dev
lower = basis - dev
moment = mom(close, momlen) // Momentum
Obv = obv // OBV
//PLOT
//STRATEGIA
emavar := (close>ema)? 3 : -3
macdvar := (macdLine>signalLine)? 3 : -3
occvar := (occ>0)? 3 : -3
rsivar := (rsi<20)? 2 : (rsi>50 and rsi<80)? 1 : (rsi>80)? -2 : (rsi<50 and rsi>20)? -1 : 0
stochvar := (stoch<20)? 2 : (stoch>80)? -2 : 0
bbvar := (close<lower)? 2 : (close>upper)? -2 : 0
trigger := emavar+macdvar+occvar+rsivar+stochvar+bbvar
longcondition = trigger>=7
closelong = trigger<3
shortcondition = trigger<=-7
closeshort = trigger >-3
trendcolor = longcondition ? color.green : shortcondition? color.red : (trigger>3 and trigger<7)? #A2E1BF : (trigger<-3 and trigger>-7)? #E19997 : na
bgcolor(trendcolor, transp=80)
if time > start and time < end
if longcondition
strategy.entry("LONG", long=strategy.long)
if closelong
strategy.close("LONG", comment="CLOSE LONG")
if time > start and time < end
if shortcondition
strategy.entry("SHORT", long=strategy.short)
if closeshort
strategy.close("SHORT", comment="CLOSE SHORT")
//plotshape(longcondition, color=color.green, text="L", size=size.small, style=shape.triangledown)
//plotshape(shortcondition, color=color.red, "S"(trigger), size=size.small, style=shape.triangledown)
//plotshape(closelong, color=color.purple, text="LC", size=size.small, style=shape.triangledown)
//plotshape(closeshort, color=color.purple, text="SC", size=size.small, style=shape.triangledown)