
Chiến lược này sử dụng hai chỉ số sức mạnh là MACD và RSI để đặt các điều kiện mua và bán để nắm bắt cơ hội biến động giá cổ phiếu.
Tính MACD bao gồm đường nhanh, đường chậm và đường tín hiệu.
Tính toán RSI, thiết lập vùng mua và bán quá mức. RSI có thể xác định mức mua và bán quá mức.
Kết hợp các tín hiệu giao dịch mua và bán của MACD và RSI để tạo ra các điều kiện mua và bán:
Điều kiện mua: Giao dịch MACD trên đường nhanh tạo ra một đường cong vàng, trong khi chỉ số RSI vừa trở lại từ vùng bán tháo, có tín hiệu đảo ngược;
Điều kiện bán: MACD dưới đường nhanh xuyên qua đường chậm để tạo ra một cái chết, trong khi chỉ số RSI đi vào vùng quá mua, có tín hiệu đảo ngược.
Chỉ số MACD có thể xác định xu hướng giá cổ phiếu và thời gian mua và bán. Chỉ số RSI có thể xác định tình trạng quá mua quá bán. Kết hợp cả hai có thể giúp tăng độ chính xác mua và bán.
Việc sử dụng hai chỉ số để lọc tín hiệu đồng thời có thể tránh các tín hiệu giả do chỉ số đơn lẻ gây ra.
MACD kết hợp với RSI, có thể mua trước điểm đảo chiều, bán sau điểm đảo chiều, nắm bắt cơ hội đảo chiều.
Chiến lược này hoạt động ở tần số vừa phải, có thể theo dõi xu hướng hoặc bắt được sự đảo ngược, và có thể được sử dụng một cách linh hoạt.
Chỉ số MACD dễ tạo ra tín hiệu giả trong tình huống biến động. Cài đặt tham số của chỉ số RSI cần được tối ưu hóa, nếu không, tín hiệu giả cũng sẽ xuất hiện.
Giá cổ phiếu có thể biến động mạnh trong thời gian ngắn, điểm dừng lỗ của chiến lược giảm sẽ gây ra tổn thất.
Cần tối ưu hóa các thiết lập tham số của RSI và MACD, nếu không có thể có quá nhiều hoặc không đủ tín hiệu.
Các giao dịch trên thị trường chứng khoán đòi hỏi sự kiểm soát chặt chẽ về quản lý vốn và kiểm soát rủi ro.
Tối ưu hóa thiết lập đường trung bình chậm của tham số MACD, tìm kiếm sự kết hợp tham số tốt nhất.
Tối ưu hóa RSI ở ngưỡng mua và bán để ngăn chặn các tín hiệu giả.
Tham gia vào các cơ chế ngăn chặn để kiểm soát tổn thất đơn lẻ
Bạn có thể xem xét thêm các chỉ số khác, chẳng hạn như băng Brin, KDJ, để tạo ra nhiều bộ lọc.
Bạn có thể thử nghiệm các chiến lược mua và bán khác nhau, như chiến lược phá vỡ, chiến lược theo dõi xu hướng, v.v.
Chiến lược này sử dụng hai chỉ số sức mạnh MACD và RSI đồng thời, mua và bán tại điểm đảo chiều, có giá trị thực tế mạnh mẽ. Tuy nhiên, cần phải liên tục tối ưu hóa các tham số thiết lập, quản lý tài chính nghiêm ngặt để có hiệu quả tốt trong thị trường thực. Chiến lược này là linh hoạt hơn, có thể thích nghi với các tình huống khác nhau, đáng để kiểm tra thị trường và theo dõi lâu dài.
/*backtest
start: 2022-11-13 00:00:00
end: 2023-11-19 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
// © sabirt
strategy(title='MACD and RSI', overlay=true, shorttitle='MACD&RSI')
//MACD Settings
fastMA = input.int(title='Fast moving average', defval=12, minval=1)
slowMA = input.int(title='Slow moving average', defval=26, minval=1)
signalLength = input.int(9, minval=1)
//RSI settings
RSIOverSold = input.int(35, minval=1)
RSIOverBought = input.int(80, minval=1)
src = close
len = input.int(14, minval=1, title='Length')
up = ta.rma(math.max(ta.change(src), 0), len)
down = ta.rma(-math.min(ta.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, _, _] = ta.macd(close[0], fastMA, slowMA, signalLength)
[prevMacd, _, _] = ta.macd(close[1], fastMA, slowMA, signalLength)
signal = ta.ema(currMacd, signalLength)
avg_1 = math.avg(currMacd, signal)
crossoverBear = ta.cross(currMacd, signal) and currMacd < signal ? avg_1 : na
avg_2 = math.avg(currMacd, signal)
crossoverBull = ta.cross(currMacd, signal) and currMacd > signal ? avg_2 : na
strategy.entry('buy', strategy.long, when=crossoverBull and wasOversold)
strategy.close('buy', when=crossoverBear and wasOverbought)