Strategi pembalikan RSI dengan penunjuk MACD


Tarikh penciptaan: 2024-01-15 12:33:14 Akhirnya diubah suai: 2024-01-15 12:33:14
Salin: 0 Bilangan klik: 763
1
fokus pada
1617
Pengikut

Strategi pembalikan RSI dengan penunjuk MACD

Gambaran keseluruhan

Strategi ini berdasarkan pada nilai RSI pada MACD untuk menentukan isyarat beli dan jual. Beli apabila nilai RSI melebihi garis beli atau selang, dan hentikan atau berhenti apabila nilai RSI jatuh di bawah selang.

Prinsip Strategi

Strategi ini menggabungkan kelebihan MACD dan RSI.

Pertama, hitung tiga garis kurva MACD, termasuk garis DIF, garis DEA, dan garis MACD. Kemudian hitung RSI pada garis MACD, untuk membentuk RSI of MACD.

Apabila RSI of MACD lebih daripada 30 atau 35 dalam rantaian oversold, ia menghasilkan isyarat beli yang menunjukkan bahawa garis MACD memasuki rantaian oversold dan harga saham mula berbalik naik. Apabila RSI of MACD jatuh ke bawah 15 dalam rantaian oversold, ia menghasilkan isyarat jual yang menunjukkan bahawa pembalikan tren berakhir.

Strategi ini juga menetapkan partial stop, yang boleh menjual sebahagian daripada kedudukan untuk mengunci sebahagian daripada keuntungan apabila RSI of MACD melebihi 80.

Analisis kelebihan

  • Menggunakan Indeks MACD untuk menentukan titik perubahan trend
  • Filter signal palsu menggunakan RSI untuk menilai kawasan overbought dan oversold
  • Kaedah ini juga boleh digunakan untuk mencari tempat yang tepat untuk membeli dan menjual saham.
  • Tetapkan penangguhan separa untuk mengelakkan kerugian berkembang

Analisis risiko

  • Parameter penunjuk MACD tidak betul, tidak dapat menentukan trend dengan tepat
  • Parameter RSI tidak betul, tidak dapat menentukan dengan tepat mengenai overbought dan oversold
  • Sesetengah penangguhan terlalu radikal dan mungkin terlepas kenaikan yang lebih besar

Penyelesaian:

  • Mengoptimumkan parameter MACD untuk mencari kombinasi parameter terbaik
  • Optimumkan parameter RSI untuk meningkatkan ketepatan
  • Melegakan syarat-syarat penangguhan sebahagian untuk mendapatkan keuntungan yang lebih besar

Arah pengoptimuman

Strategi ini juga boleh dioptimumkan dalam beberapa arah:

  1. Peningkatan strategi penangguhan kerugian untuk mengawal risiko penurunan
  2. Tambah modul pengurusan kedudukan untuk meningkatkan kedudukan mengikut pergerakan harga
  3. Model pembelajaran mesin bersepadu yang menggunakan latihan data sejarah untuk meningkatkan lagi ketepatan penilaian titik jual beli
  4. Cuba berlari dalam tempoh yang lebih singkat seperti 15 minit atau 5 minit untuk meningkatkan lagi kekerapan strategi

ringkaskan

Strategi ini direka secara keseluruhan dengan idea yang jelas, idea terasnya adalah menggunakan MACD berbalik dalam kombinasi dengan penapisan RSI untuk menentukan titik jual beli. Dengan pengoptimuman parameter, pengurusan hentian, kawalan risiko dan lain-lain, ia boleh dijadikan strategi perdagangan kuantitatif yang sangat praktikal.

Kod sumber strategi
/*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 
/////////////////////////////////////////////////////////////////////////////////