RSI Strategi Pembalikan MACD

Penulis:ChaoZhang, Tarikh: 2024-01-15 12:33:14
Tag:

img

Ringkasan

Strategi ini berdasarkan nilai RSI penunjuk MACD untuk menentukan isyarat beli dan jual. Ia membeli apabila RSI melebihi garis atau julat overbought, dan menjual atau menghentikan keuntungan / kerugian apabila RSI melanggar di bawah julat overbought.

Prinsip Strategi

Strategi ini menggabungkan kelebihan kedua-dua penunjuk MACD dan RSI.

Pertama, tiga lengkung penunjuk MACD dikira, termasuk garis DIF, DEA dan MACD. Kemudian penunjuk RSI dikira pada garis MACD untuk membentuk RSI MACD.

Apabila RSI penunjuk MACD melebihi julat overbought 30 atau 35, isyarat beli dihasilkan, yang menunjukkan bahawa garis MACD telah memasuki julat oversold dan trend harga telah mula berbalik ke atas.

Strategi ini juga menetapkan mengambil keuntungan separa. Apabila RSI penunjuk MACD melebihi tahap overbought 80, sebahagian daripada kedudukan boleh dijual untuk mengunci keuntungan separa.

Analisis Kelebihan

  • Menggunakan penunjuk MACD untuk menentukan titik pembalikan trend
  • Menggunakan penunjuk RSI untuk menentukan tahap overbought / oversold untuk menapis isyarat palsu
  • Gabungan penunjuk dua untuk titik beli/jual yang tepat
  • Pengambilan keuntungan separa ditetapkan untuk mengelakkan kerugian yang lebih besar

Analisis Risiko

  • Penilaian trend yang tidak tepat jika parameter MACD tidak betul
  • Penilaian zon overbought/oversold yang tidak tepat jika parameter RSI tidak betul
  • Potensial kehilangan keuntungan yang lebih besar jika keuntungan mengambil terlalu agresif

Penyelesaian:

  • Mengoptimumkan parameter MACD untuk mencari kombinasi terbaik
  • Mengoptimumkan parameter RSI untuk meningkatkan ketepatan
  • Ringankan kriteria mengambil keuntungan dengan betul untuk menyasarkan pulangan yang lebih tinggi

Arahan pengoptimuman

Strategi ini juga boleh dioptimumkan dalam aspek berikut:

  1. Tambah strategi stop loss untuk mengawal risiko penurunan
  2. Tambah modul saiz kedudukan untuk secara beransur-ansur meningkatkan kedudukan sebagai pergerakan harga
  3. Mengintegrasikan model pembelajaran mesin yang dilatih pada data sejarah untuk meningkatkan lebih lanjut ketepatan titik beli / jual
  4. Percubaan berjalan pada jangka masa yang lebih pendek seperti 15m atau 5m untuk meningkatkan kekerapan strategi

Kesimpulan

Falsafah reka bentuk strategi keseluruhan adalah jelas, dengan idea utama menggunakan pembalikan MACD digabungkan dengan penapis RSI untuk menentukan titik beli / jual. Dengan pengoptimuman parameter, pengurusan stop loss, langkah kawalan risiko dan lain-lain, ia boleh dibentuk menjadi strategi perdagangan kuant yang sangat praktikal.


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



Lebih lanjut