RSI của Chiến lược đảo ngược MACD

Tác giả:ChaoZhang, Ngày: 2024-01-15 12:33:14
Tags:

img

Tổng quan

Chiến lược này dựa trên các giá trị RSI của chỉ số MACD để xác định tín hiệu mua và bán. Nó mua khi RSI vượt quá đường hoặc phạm vi mua quá mức, và bán hoặc dừng lợi nhuận / lỗ khi RSI phá vỡ dưới phạm vi mua quá mức.

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

Chiến lược này kết hợp các lợi thế của cả chỉ số MACD và RSI.

Đầu tiên, ba đường cong của chỉ số MACD được tính toán, bao gồm các đường DIF, DEA và MACD. Sau đó chỉ số RSI được tính trên đường MACD để tạo thành RSI của MACD.

Khi chỉ số RSI của chỉ số MACD vượt quá phạm vi mua quá mức 30 hoặc 35, một tín hiệu mua được tạo ra, cho thấy đường MACD đã bước vào phạm vi bán quá mức và xu hướng giá đã bắt đầu đảo ngược lên.

Chiến lược cũng đặt ra lợi nhuận một phần. Khi chỉ số RSI của chỉ số MACD vượt quá mức mua quá mức 80, một phần vị trí có thể được bán để khóa lợi nhuận một phần.

Phân tích lợi thế

  • Sử dụng chỉ số MACD để xác định các điểm đảo ngược xu hướng
  • Sử dụng chỉ số RSI để xác định mức mua quá mức / bán quá mức để lọc các tín hiệu giả
  • Kết hợp các chỉ số kép cho các điểm mua/bán chính xác
  • Lợi nhuận một phần được thiết lập để ngăn ngừa tổn thất lớn

Phân tích rủi ro

  • Phán đoán không chính xác về xu hướng nếu các thông số MACD không chính xác
  • Đánh giá không chính xác về các khu vực mua quá mức/bán quá mức nếu các thông số RSI không phù hợp
  • Có khả năng bỏ lỡ lợi nhuận lớn hơn nếu lợi nhuận quá mạnh

Giải pháp:

  • Tối ưu hóa các thông số MACD để tìm kết hợp tốt nhất
  • Tối ưu hóa các thông số RSI để cải thiện độ chính xác
  • Thư giãn các tiêu chí thu lợi nhuận đúng cách để nhắm mục tiêu lợi nhuận cao hơn

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

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

  1. Thêm chiến lược dừng lỗ để kiểm soát thêm rủi ro giảm
  2. Thêm mô-đun định kích thước vị trí để tăng dần các vị trí khi giá di chuyển
  3. Tích hợp các mô hình học máy được đào tạo trên dữ liệu lịch sử để tiếp tục cải thiện độ chính xác điểm mua / bán
  4. Cố gắng chạy trong khung thời gian ngắn hơn như 15m hoặc 5m để cải thiện tần suất chiến lược

Kết luận

Triết lý thiết kế chiến lược tổng thể là rõ ràng, với ý tưởng cốt lõi là sử dụng đảo ngược MACD kết hợp với bộ lọc RSI để xác định điểm mua / bán.


/*backtest
start: 2024-01-07 00:00:00
end: 2024-01-14 00:00:00
period: 3m
basePeriod: 1m
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/
// © mohanee

//@version=4

strategy(title="RSI of MACD Strategy[Long only]",  shorttitle="RSIofMACD" , overlay=false, pyramiding=1,     default_qty_type=strategy.percent_of_equity,  default_qty_value=20, initial_capital=10000, currency=currency.USD)  //default_qty_value=10, default_qty_type=strategy.fixed,

	

/////////////////////////////////////////////////////////////////////////////////



// MACD Inputs ///
fastLen = input(12, title="Fast Length")
slowLen = input(21, title="Slow Length")
sigLen  = input(9, title="Signal Length")

rsiLength  = input(14, title="RSI of MACD Length")




riskCapital = input(title="Risk % of capital", defval=10, minval=1)
stopLoss=input(3,title="Stop Loss",minval=1)

takeProfit=input(false, title="Take Profit")


[macdLine, signalLine, _] = macd(close, fastLen, slowLen, sigLen)

rsiOfMACD = rsi(macdLine, rsiLength)
emaSlow = ema(close, slowLen)



//drawings
/////////////////////////////////////////////////////////////////////////////////


obLevelPlot = hline(80, title="Overbought / Profit taking line",  color=color.blue , linestyle=hline.style_dashed)
osLevelPlot = hline(30, title="Oversold / entry line", color=color.green, linestyle=hline.style_dashed)

exitLinePlot = hline(15, title="Exit line", color=color.red, linestyle=hline.style_dashed)




plot(rsiOfMACD, title = "rsiOfMACD" ,  color=color.purple)


//drawings
/////////////////////////////////////////////////////////////////////////////////




//Strategy Logic 
/////////////////////////////////////////////////////////////////////////////////

//Entry--
//Echeck how many units can be purchased based on risk manage ment and stop loss
qty1 = (strategy.equity  * riskCapital / 100 ) /  (close*stopLoss/100)  

//check if cash is sufficient  to buy qty1  , if capital not available use the available capital only
qty1:= (qty1 * close >= strategy.equity ) ? (strategy.equity / close) : qty1


strategy.entry(id="RSIofMACD", long=true,   qty=qty1,  when =  ( crossover(rsiOfMACD, 30) or crossover(rsiOfMACD, 35)  ) and close>=emaSlow )



bgcolor(abs(strategy.position_size)>=1 ? color.blue : na , transp=70)


barcolor(abs(strategy.position_size)>=1 and  ( crossover(rsiOfMACD, 30) or crossover(rsiOfMACD, 35) ) ? color.purple : abs(strategy.position_size)>=1 ? color.blue : na  )


//partial exit
strategy.close(id="RSIofMACD", comment="PExit Profit is "+tostring(close - strategy.position_avg_price,  "###.##")  ,  qty=strategy.position_size/3, when= takeProfit and abs(strategy.position_size)>=1 and close > strategy.position_avg_price and crossunder(rsiOfMACD,80) )

//Close All
strategy.close(id="RSIofMACD", comment="Close All   Profit is "+tostring(close - strategy.position_avg_price,  "###.##"), when=abs(strategy.position_size)>=1 and crossunder(rsiOfMACD,15) ) //and close > strategy.position_avg_price )


//Strategy Logic 
/////////////////////////////////////////////////////////////////////////////////



Thêm nữa