RSI dari Strategi Pembalikan MACD

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

img

Gambaran umum

Strategi ini didasarkan pada nilai RSI dari indikator MACD untuk menentukan sinyal beli dan jual. Strategi ini membeli ketika RSI melebihi garis atau kisaran overbought, dan menjual atau menghentikan profit/loss ketika RSI melanggar di bawah kisaran overbought.

Prinsip Strategi

Strategi ini menggabungkan keuntungan dari indikator MACD dan RSI.

Pertama, tiga kurva dari indikator MACD dihitung, termasuk garis DIF, DEA dan MACD. Kemudian indikator RSI dihitung pada garis MACD untuk membentuk RSI dari MACD.

Ketika RSI indikator MACD melampaui kisaran overbought 30 atau 35, sinyal beli dihasilkan, yang menunjukkan garis MACD telah memasuki kisaran oversold dan tren harga telah mulai berbalik ke atas.

Strategi ini juga menetapkan mengambil keuntungan parsial. Ketika RSI dari indikator MACD melebihi tingkat overbought 80, bagian dari posisi dapat dijual untuk mengunci keuntungan parsial.

Analisis Keuntungan

  • Menggunakan indikator MACD untuk menentukan titik pembalikan tren
  • Menggunakan indikator RSI untuk menentukan tingkat overbought/oversold untuk menyaring sinyal palsu
  • Kombinasi indikator ganda untuk titik beli/penjualan yang akurat
  • Keuntungan parsial yang ditetapkan untuk mencegah kerugian besar

Analisis Risiko

  • Penilaian tren yang tidak akurat jika parameter MACD tidak tepat
  • Penilaian zona overbought/oversold yang tidak akurat jika parameter RSI tidak tepat
  • Potensi kehilangan keuntungan besar jika mengambil keuntungan terlalu agresif

Solusi:

  • Mengoptimalkan parameter MACD untuk menemukan kombinasi terbaik
  • Mengoptimalkan parameter RSI untuk meningkatkan akurasi
  • Meredakan kriteria pengambilan keuntungan dengan benar untuk menargetkan pengembalian yang lebih besar

Arahan Optimasi

Strategi ini juga dapat dioptimalkan dalam aspek berikut:

  1. Tambahkan strategi stop loss untuk lebih mengendalikan risiko penurunan
  2. Tambahkan modul ukuran posisi untuk secara bertahap meningkatkan posisi seiring pergerakan harga
  3. Mengintegrasikan model pembelajaran mesin yang dilatih pada data historis untuk lebih meningkatkan akurasi titik beli/jual
  4. Upaya berjalan pada jangka waktu yang lebih pendek seperti 15m atau 5m untuk meningkatkan frekuensi strategi

Kesimpulan

Filsafat desain strategi secara keseluruhan jelas, dengan gagasan inti menggunakan pembalikan MACD dikombinasikan dengan filter RSI untuk menentukan titik beli / jual. Dengan optimasi parameter, manajemen stop loss, langkah-langkah pengendalian risiko dll, dapat dibentuk menjadi strategi perdagangan kuantum yang sangat praktis.


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