Tài nguyên đang được tải lên... tải...

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

Tác giả:ChaoZhang, Ngày: 2023-12-18 17:19:03
Tags:

img

Tổng quan

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

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

Tính toán chỉ số MACD

Chỉ số MACD bao gồm sự khác biệt giữa EMA nhanh và EMA chậm, phản ánh sự khác biệt giữa xu hướng giá trung bình ngắn hạn và dài hạn.

Khi đường nhanh vượt qua trên đường chậm, đó là một tín hiệu chéo vàng cho thấy xu hướng tăng. Khi đường nhanh vượt qua dưới đường chậm, đó là một tín hiệu chéo chết cho thấy xu hướng giảm.

Tính toán chỉ số RSI

Chỉ số RSI phản ánh các điều kiện mua quá mức / bán quá mức trên thị trường.

Chỉ số RSI dưới 30 cho thấy tài sản đã được bán quá mức khi người mua vượt qua người bán trong một thời gian dài.

Chỉ số RSI trên 70 cho thấy tài sản đã quá tải vì áp lực bán đã vượt qua áp lực mua trong thời gian theo dõi.

Các chỉ số dưới 30 cho thấy các điều kiện bán quá mức trong khi các chỉ số trên 70 cho thấy các điều kiện mua quá mức.

Các tín hiệu chiến lược

Việc chỉ dựa vào MACD cho các tín hiệu giao dịch có thể dẫn đến một số tín hiệu sai. Chiến lược này sử dụng RSI để lọc tín hiệu, chỉ tạo ra các tín hiệu giao dịch thực tế khi MACD đưa ra tín hiệu và RSI đồng thời xác nhận mức mua quá mức / bán quá mức.

Cụ thể, khi MACD tạo ra đường chéo vàng, nếu RSI <=34 cùng một lúc, xác nhận thị trường quá bán, một tín hiệu mua được tạo ra. Khi MACD tạo ra đường chéo chết, nếu RSI>=75, xác nhận thị trường quá mua, một tín hiệu bán được tạo ra.

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

Phân tích lợi thế

Việc lọc hai chỉ báo làm tăng độ tin cậy tín hiệu

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

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

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

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

Các thông số của các thành phần MACD và RSI của chiến lược này có thể được tối ưu hóa và điều chỉnh để phù hợp với các chu kỳ và công cụ giao dịch khác nhau.

Dễ hiểu và áp dụng

MACD, RSI và các chỉ số khác được sử dụng trong chiến lược này là các chỉ số kỹ thuật rất điển hình và thường được sử dụng dễ hiểu. Mã chiến lược cũng rất đơn giản và trực quan, mang lại sự tiện lợi cho đ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 thương mại

Chiến lược này áp dụng một cách tiếp cận xác nhận kép tương đối thận trọng, trong việc lọc ra các tín hiệu sai, có thể gây ra một số cơ hội giao dịch bị bỏ lỡ có thể dẫn đến lợi nhuận dựa trên một tín hiệu chỉ số duy nhất.

  • Giải pháp: Mở rộng phạm vi ngưỡng RSI phù hợp để giảm độ nghiêm ngặt của xác nhận và cho phép chiến lược nắm bắt nhiều cơ hội giao dịch hơn.

Sự kiện mất mát trong các biến động thị trường cực đoan

Trong trường hợp biến động thị trường cực kỳ, cả chỉ số MACD và RSI có thể chậm trong việc đưa ra phán đoán, dẫn đến các tín hiệu giao dịch không chính xác được tạo ra bởi chiến lược và tổn thất xảy ra.

  • Giải pháp: Kết hợp các cơ chế dừng lỗ để ngăn ngừa tổn thất quá mức trong các giao dịch đơn lẻ. Điều chỉnh các tham số để xây dựng độ nhạy thích hợp của các chỉ số đối với các biến động thị trường cực đoan.

Hiệu suất phụ thuộc rất nhiều vào cài đặt tham số

Hiệu suất của chiến lược này phụ thuộc phần lớn vào chất lượng của MACD, RSI và các thiết lập tham số khác.

  • Giải pháp: Tối ưu hóa các kết hợp tham số thông qua backtesting để xác định vị trí cài đặt tham số tối ưu.

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

Kết hợp các cơ chế dừng lỗ để kiểm soát rủi ro

Các quy tắc dừng lỗ dựa trên giá hoặc chỉ số có thể được thực hiện để thoát khỏi các vị trí với ngưỡng lỗ được cho phép được xác định trước, có hiệu quả giới hạn lỗ trên các giao dịch riêng lẻ.

Điều chỉnh các thông số để phù hợp với đặc điểm thị trường

Tối ưu hóa liên tục các thông số chính như các giai đoạn đường MACD nhanh / chậm và ngưỡng mua quá mức / bán quá mức RSI để phù hợp với các cấu trúc chu kỳ phát triển và đặc điểm của các công cụ giao dịch khác nhau.

Kiểm tra các tài sản để tìm ra phù hợp nhất

Thực hiện backtests trên các chỉ số cổ phiếu, tiền điện tử, cặp ngoại hối, hàng hóa và các tài sản khác để khám phá thị trường nào phù hợp nhất với các đặc điểm của chiến lược.

Bao gồm các chỉ số bổ sung cho xác nhận đa chiều

Các chỉ số như Stochastics, OBV, CCI v.v. có thể được thêm vào các thành phần MACD và RSI để xác nhận chính xác hơn thông qua phương pháp lọc tín hiệu đa chiều.

Kết luận

Chiến lược này xác định xu hướng thị trường và tín hiệu giao dịch dựa trên chỉ số MACD, trong khi RSI xác nhận các điều kiện mua quá mức / bán quá mức để lọc các tín hiệu sai.

Hiệu suất có thể được nâng cao hơn nữa thông qua các kỹ thuật tối ưu hóa, dừng lỗ, xác nhận đa đầu vv. Với logic đơn giản và ổn định tốt, nó phục vụ như một chiến lược khởi đầu tốt cho những người mới bắt đầu thực hành và tối ưu hóa.


/*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) 


Thêm nữa