Một chiến lược RSI kết hợp với Moving Average và MACD

Tác giả:ChaoZhang, Ngày: 2024-02-20 14:28:59
Tags:

img

Tổng quan

Chiến lược này xác định xu hướng giá và đưa ra quyết định mua thấp bán cao bằng cách kết hợp các đường trung bình động, chỉ số MACD và chỉ số RSI. Nó tạo ra tín hiệu mua khi đường trung bình động ngắn vượt qua đường trung bình động dài và giá đóng trên đường trung bình động 50 ngày. Nó tạo ra tín hiệu bán khi điều ngược lại xảy ra. Ngoài ra, chiến lược sử dụng chỉ số RSI để tránh các vùng mua quá mức và bán quá mức, và biểu đồ MACD để xác định xu hướng trung bình đến dài hạn.

Chiến lược logic

Cốt lõi của chiến lược này dựa trên hệ thống chéo trung bình động kép, tạo ra tín hiệu mua và bán khi EMA ngắn hạn (3 ngày) vượt qua EMA dài hạn (30 ngày).

Ngoài ra, chiến lược này kết hợp một đường trung bình động 50 ngày để tránh giao dịch thường xuyên, sử dụng nó như một bộ lọc cho tín hiệu giao dịch. Chỉ trên đường 50 ngày sẽ kích hoạt tín hiệu mua, và ngược lại.

Hơn nữa, chỉ số RSI xác định các kịch bản mua quá mức (cao hơn 70) và bán quá mức (dưới 30).

Cuối cùng, biểu đồ MACD được sử dụng để xác định xu hướng trung hạn đến dài hạn của thị trường. Với biểu đồ MACD > 0, nền là xu hướng tăng nên tín hiệu mua đáng tin cậy hơn. Khi biểu đồ MACD < 0, nền là xu hướng giảm nên tín hiệu mua có thể sớm phải đối mặt với sự điều chỉnh.

Ưu điểm

Lợi thế lớn nhất của chiến lược này là việc sử dụng kết hợp nhiều chỉ số, làm cho mọi quyết định giao dịch đều rất tự tin và đáng tin cậy. Các tín hiệu sai có thể xảy ra với các chỉ số riêng lẻ khá thường xuyên, trong khi chiến lược này cải thiện độ chính xác bằng cách xác nhận các tín hiệu về xu hướng ngắn hạn, xu hướng dài hạn, tình trạng mua quá mức / bán quá mức, xu hướng trung gian, v.v.

Một lợi thế khác là nó kết hợp giao dịch xu hướng và giao dịch đảo ngược trung bình. Theo xu hướng là trọng tâm cho các nhà giao dịch xu hướng, nhưng các chiến lược tiên tiến sẽ không cứng nhắc về nó.

Rủi ro

Những rủi ro lớn đến từ những cú sốc giá đột ngột do các sự kiện tin tức quan trọng, có thể xâm nhập vào các điểm dừng lỗ và gây ra tổn thất lớn.

Một rủi ro khác là dừng lại trong thời gian giảm tạm thời trong thị trường tăng trung hạn đến dài hạn. Chiến lược có thể không nắm bắt được toàn bộ tiềm năng tăng nếu dừng lại sớm.

Những cải tiến

Chiến lược có thể được tối ưu hóa trong các khía cạnh sau:

  1. Tối ưu hóa tham số để tìm kết hợp tối ưu.

  2. Kết hợp thêm các chỉ số như Bollinger Bands và KDJ để làm phong phú hơn mô hình.

  3. Kiểm tra các cơ chế dừng lỗ tiên tiến hơn như dừng lỗ sau và dừng lỗ biến động.

  4. Tối ưu hóa các phần của chiến lược để thích nghi với nhiều loại thị trường hơn.

Kết luận

Kết luận, bằng cách kết hợp các đường trung bình động, RSI và MACD, chiến lược này quản lý để tạo ra các tín hiệu chất lượng cao và tránh những hạn chế của chỉ số duy nhất. Nó thực hiện mọi giao dịch một cách tự tin bằng cách xác nhận xu hướng. Ngoài ra, chiến lược cân bằng giao dịch xu hướng và giao dịch ngược lại, xuất sắc trong cả việc theo đuổi đà và có các vị trí chống chu kỳ khi thích hợp.


/*backtest
start: 2023-02-13 00:00:00
end: 2024-02-19 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy('sachin 3.30 ', overlay=true)

// Input parameters
length = input.int(14, title='RSI Length', minval=1)
overbought = input.int(70, title='RSI Overbought Level', minval=0, maxval=100)
oversold = input.int(30, title='RSI Oversold Level', minval=0, maxval=100)
ema3_length = input(3, title='EMA 3 Length')
ema30_length = input(30, title='EMA 30 Length')
ema50_length = input(50, title='EMA 50 Length')

// Calculate EMAs
ema3 = ta.ema(close, ema3_length)
ema30 = ta.ema(close, ema30_length)
ema50 = ta.ema(close, ema50_length)

// Calculate RSI
rsiValue = ta.rsi(close, length)

// Calculate MACD
[macdLine, signalLine, hist] = ta.macd(close, 12, 26, 9)

var float buyPrice = na

// Buy condition: EMA 3 crosses above EMA 30 and price is above EMA 50
buyCondition = ta.crossover(ema3, ema30) and close > ema50
if (buyCondition)
    buyPrice := close
    strategy.entry('Buy', strategy.long)

// Exit long position when close is below EMA30 and below the low of the previous 3 candles after the buy entry
exitLongCondition = close < ema30 and close < ta.lowest(low, 3) and close < buyPrice
if (exitLongCondition)
    strategy.close('BuyExit')

// Sell condition: EMA 3 crosses below EMA 30 and price is below EMA 50
sellCondition = ta.crossunder(ema3, ema30) and close < ema50
if (sellCondition)
    strategy.entry('Sell', strategy.short)

// Exit short position when close is above EMA30 and above the high of the previous 3 candles after the sell entry
exitShortCondition = close > ema30 and close > ta.highest(high, 3)
if (exitShortCondition)
    strategy.close('SellExit')

// Plot EMAs on the chart
plot(ema3, color=color.new(color.blue, 0), title='EMA 3')
plot(ema30, color=color.new(color.red, 0), title='EMA 30')

// Change color of EMA 50 based on MACD histogram
ema50Color = hist > 0 ? color.new(color.blue, 0) : hist < 0 ? color.new(color.black, 0) : color.new(color.blue, 0)
plot(ema50, color=ema50Color, title='EMA 50 Colored')

// Change color of EMA 30 based on RSI trend
ema30Color = rsiValue > oversold ? color.new(color.green, 0) : rsiValue < overbought ? color.new(color.red, 0) : color.new(color.blue, 0)
plot(ema30, color=ema30Color, title='EMA 30 Colored')

// Highlight Buy and Sell signals on the chart
bgcolor(buyCondition ? color.new(color.green, 90) : na)
bgcolor(sellCondition ? color.new(color.red, 90) : na)

// Plotting Buy and Sell Signals on the Chart until strategy exit
barcolor(strategy.position_size > 0 and rsiValue > overbought ? color.new(color.yellow, 0) : strategy.position_size < 0 and rsiValue < oversold ? color.new(color.black, 0) : na)


Thêm nữa