Chiến lược tín hiệu giao cắt dựa trên các chỉ báo MACD và RSI


Ngày tạo: 2023-12-18 17:19:03 sửa đổi lần cuối: 2023-12-18 17:19:03
sao chép: 0 Số nhấp chuột: 966
1
tập trung vào
1621
Người theo dõi

Chiến lược tín hiệu giao cắt dựa trên các chỉ báo MACD và RSI

Tổng quan

Chiến lược này sử dụng chỉ số MACD để đánh giá xu hướng thị trường và tìm kiếm điểm mua bán tiềm năng, đồng thời kết hợp với chỉ số RSI để xác nhận hiện tượng mua / bán quá mức, chỉ khi chỉ số MACD phát ra tín hiệu mua / bán, chỉ khi RSI đồng thời xác nhận thị trường đang ở trạng thái bán / mua quá mức, sẽ tạo ra tín hiệu giao dịch, mua hoặc bán. Chiến lược này có thể lọc hiệu quả tín hiệu giả và tăng sự ổn định của chiến lược.

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

Tính toán MACD

Chỉ số MACD được tạo thành từ chênh lệch giữa đường trung bình di chuyển nhanh (EMA) và đường trung bình di chuyển chậm, phản ánh sự khác biệt giữa xu hướng thay đổi giá trung bình ngắn hạn và dài hạn. Trong chiến lược này, đường nhanh có chu kỳ 12 ngày và đường chậm có chu kỳ 26 ngày.

Khi đường nhanh vượt qua đường chậm, tín hiệu là gai vàng, cho thấy thị trường bước vào xu hướng tăng; khi đường nhanh vượt qua đường chậm, tín hiệu là gai chết, cho thấy thị trường bước vào xu hướng giảm.

Tính toán RSI

Chỉ số RSI phản ánh sự quá mua và quá bán của thị trường. Trong chiến lược này, các tham số của RSI được thiết lập với chu kỳ 14.

RSI BELOW 30 when buyers outpaced sellers for an extended period suggests ASSET was OVERSOLD.

RSI ABOVE 70 when selling pressure outpaced buying pressure over the tracked timeline suggests ASSET was OVERBOUGHT.

Khi RSI thấp hơn 30, thị trường đang bán quá mức; khi RSI cao hơn 70, thị trường đang mua quá mức.

Tín hiệu chiến lược

Khi chỉ dựa vào MACD để tạo tín hiệu giao dịch, một số tín hiệu giả sẽ xuất hiện. Chiến lược này sử dụng tín hiệu lọc của chỉ số RSI, chỉ khi MACD phát ra tín hiệu, RSI cũng xác nhận tình trạng quá mua quá bán của thị trường, sẽ tạo ra tín hiệu giao dịch thực tế.

Cụ thể, khi MACD hình thành tín hiệu Gold Fork, nếu RSI <= 34, xác nhận thị trường đang ở trạng thái bán tháo, sẽ tạo ra tín hiệu mua; khi MACD hình thành tín hiệu Dead Fork, nếu RSI > = 75, xác nhận thị trường đang ở trạng thái mua quá mức, sẽ tạo ra tín hiệu bán.

Cơ chế xác nhận đôi này có thể lọc ra nhiều tín hiệu giao dịch không đáng tin cậy, giúp tăng sự ổn định và độ tin cậy của chiến lược.

Phân tích lợi thế

Bộ lọc hai chỉ số nâng cao độ tin cậy tín hiệu

Chiến lược này sử dụng MACD kết hợp với hai chỉ số RSI để thực hiện xác nhận kép. Điều này có thể làm giảm hiệu quả sự nhiễu của tín hiệu giả, lọc một số tín hiệu giao dịch không đáng tin cậy, do đó tăng độ tin cậy và ổn định của tín hiệu.

Đánh giá xu hướng rõ ràng

MACD là một chỉ số giá trị, có thể xác định rõ xu hướng giảm giá của thị trường. Kết hợp với chỉ số RSI, có thể nắm bắt chính xác các điểm đảo ngược quan trọng của thị trường, và tín hiệu vào và ra vị trí rõ ràng.

Không gian tối ưu hóa tham số lớn

Các tham số của MACD và RSI của chiến lược này có thể được điều chỉnh tối ưu hóa, thích nghi với các chu kỳ khác nhau và các giống khác nhau, có nhiều không gian tối ưu hóa. Bằng cách điều chỉnh tham số, bạn có thể điều chỉnh theo địa lý cụ thể, để có được hiệu quả chiến lược tốt hơn.

Dễ hiểu thực hiện

Các chỉ số kỹ thuật như MACD và RSI được sử dụng trong chiến lược này rất điển hình và thường được sử dụng, dễ hiểu và thực hiện mã rất đơn giản và trực quan. Điều này tạo thuận lợi cho việc điều chỉnh và tối ưu hóa tham số.

Phân tích rủi ro

Có thể bỏ lỡ một số cơ hội giao dịch

Chiến lược này sử dụng một chiến lược xác nhận đôi thận trọng hơn, có thể bỏ lỡ một số cơ hội giao dịch có lợi nhuận với điều kiện chỉ số duy nhất để lọc các tín hiệu giả.

  • Giải pháp: Giảm độ nghiêm ngặt xác nhận, cho phép chiến lược có nhiều cơ hội giao dịch hơn.

Losses in dramatic changes

Khi thị trường thay đổi mạnh, cả MACD và RSI đều có thể bị trì hoãn trong việc đưa ra phán quyết, dẫn đến tổn thất khi các chiến lược tạo ra tín hiệu giao dịch sai.

  • Giải pháp: Tham gia vào cơ chế dừng lỗ, tránh mất mát đơn lẻ quá lớn; điều chỉnh tham số để chỉ số có một mức độ nhạy cảm với sự thay đổi mạnh mẽ.

Hiệu ứng có liên quan cao đến chất lượng thiết lập tham số

Hiệu quả của chiến lược này phụ thuộc rất nhiều vào các thiết lập của các tham số như MACD và RSI. Nếu các tham số được thiết lập không đúng cách, dễ dàng nhận được tín hiệu giao dịch ngược.

  • Giải pháp: Tìm các thiết lập tham số tối ưu bằng cách kiểm tra lại các tổ hợp tham số

Hướng tối ưu hóa

Tham gia quản lý rủi ro của hệ thống ngăn chặn

Có thể thiết lập lệnh dừng giá hoặc lệnh dừng chỉ số, dừng lỗ khi lỗ mở rộng đến một mức độ nhất định, kiểm soát hiệu quả lỗ đơn.

Chuyển đổi tham số cho phù hợp với đặc điểm thực tế

Các tham số có thể được thiết lập tối ưu hóa bằng cách điều chỉnh các tham số như chu kỳ đường nhanh chậm của MACD, giá trị thềm mua bán quá mức của RSI, để phù hợp hơn với các đặc điểm thị trường của các chu kỳ và giống khác nhau.

Kiểm tra các giống khác nhau để tìm ra sự phù hợp nhất

Có thể kiểm tra lại các loại khác nhau như chỉ số chứng khoán, tiền kỹ thuật số, ngoại hối, hàng hóa để tìm ra loại có hiệu quả chiến lược tốt nhất.

Tham gia các chỉ số khác để xác nhận đa chiều

Các chỉ số khác như stoch, OBV, CCI có thể được đưa vào trên cơ sở MACD và RSI hiện có, để thực hiện xác nhận đa chỉ số và tiếp tục cải thiện chất lượng tín hiệu.

Tóm tắt

Chiến lược này dựa trên chỉ số MACD để xác định hướng xu hướng thị trường và tín hiệu giao dịch. Để lọc tín hiệu sai, thêm chỉ số RSI để xác nhận hiện tượng quá mua quá bán, chỉ khi cả hai đáp ứng các điều kiện đồng thời, tín hiệu giao dịch sẽ được tạo ra. Cơ chế xác nhận chỉ số kép này có thể giúp cải thiện chất lượng và ổn định của tín hiệu.

Hiệu quả của chiến lược có thể được nâng cao hơn nữa thông qua các phương pháp cải tiến như tối ưu hóa tham số, ứng dụng cơ chế dừng lỗ và xác nhận đa chỉ số. Chiến lược này hoạt động đơn giản, ổn định hơn, là một chiến lược giao dịch định lượng phù hợp cho người mới bắt đầu thực hành và tối ưu hóa.

Mã nguồn chiến lược
/*backtest
start: 2023-11-17 00:00:00
end: 2023-12-17 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(default_qty_type = strategy.percent_of_equity, default_qty_value = 25, pyramiding = 10, title="MACD crossover while RSI Oversold/Overbought", overlay=true, shorttitle="MACD Cross + RSI Oversold Overbought", initial_capital = 1000)

//MACD Settings
fastMA = input(title="Fast moving average",  defval = 12, minval = 7) //7 16
slowMA = input(title="Slow moving average",  defval = 26, minval = 7) //24 26 
signalLength = input(9,minval=1) //9 6

//RSI settings
RSIOverSold = input(34 ,minval=1) //26
RSIOverBought = input(75 ,minval=1) //77
src = close, len = input(14, minval=1, title="Length")
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
wasOversold = rsi[0] <= RSIOverSold or rsi[1] <= RSIOverSold or rsi[2] <= RSIOverSold or rsi[3] <= RSIOverSold or rsi[4] <= RSIOverSold or rsi[5] <= RSIOverSold
wasOverbought = rsi[0] >= RSIOverBought or rsi[1] >= RSIOverBought or rsi[2] >= RSIOverBought or rsi[3] >= RSIOverBought or rsi[4] >= RSIOverBought or rsi[5] >= RSIOverBought


[currMacd,_,_] = macd(close[0], fastMA, slowMA, signalLength)
[prevMacd,_,_] = macd(close[1], fastMA, slowMA, signalLength)
signal = ema(currMacd, signalLength)

crossoverBear = cross(currMacd, signal) and currMacd < signal ? avg(currMacd, signal) : na
crossoverBull = cross(currMacd, signal) and currMacd > signal ? avg(currMacd, signal) : na

plotshape(crossoverBear and wasOverbought , title='MACD-BEAR', style=shape.triangledown, text='overbought', location=location.abovebar, color=orange, textcolor=orange, size=size.tiny) 
plotshape(crossoverBull and wasOversold, title='MACD-BULL', style=shape.triangleup, text='oversold', location=location.belowbar, color=lime, textcolor=lime, size=size.tiny) 

// Configure backtest start date with inputs
startDate = input(title="Start Date",
     defval=8, minval=1, maxval=31)
startMonth = input(title="Start Month",
     defval=3, minval=1, maxval=12)
startYear = input(title="Start Year",
     defval=2021, minval=1800, maxval=2100)

afterStartDate = (time >= timestamp(syminfo.timezone,
     startYear, startMonth, startDate, 0, 0))
     
if (afterStartDate==true)
    posSize = abs(strategy.position_size)
    strategy.order("long", strategy.long, when = crossoverBull and wasOversold) 
    strategy.order("long", long=false, qty=posSize/3, when = crossoverBear and wasOverbought)