Strategi Trading Dual MACD StochRSI

Penulis:ChaoZhang, Tanggal: 2023-09-22 16:55:55
Tag:

Gambaran umum

Strategi ini menggabungkan indikator MACD ganda dan osilator StochRSI untuk sinyal perdagangan. MACD ganda menggunakan parameter yang berbeda untuk efek cepat dan lambat, sementara StochRSI memverifikasi divergensi momentum. Filter tren dan stop loss juga ditambahkan untuk mengendalikan risiko.

Logika Strategi

Sinyal perdagangan didasarkan pada:

  • Dual MACD: MACD cepat menggunakan periode lookback pendek, MACD lambat menggunakan periode lookback panjang untuk efek smoothing.

  • StochRSI: Menghitung kisaran RSI tinggi/rendah untuk mengidentifikasi tingkat RSI overbought/oversold.

Aturan masuk:

  • Long: MACD cepat melintasi di atas garis nol dan MACD lambat melintasi di atas garis nol. StochRSI oversold dan K melintasi di atas D. Dalam tren naik.

  • Pendek: MACD cepat melintasi di bawah garis nol dan MACD lambat melintasi di bawah garis nol. StochRSI overbought dan K melintasi di bawah D. Dalam tren penurunan.

Keuntungan

  • Dual MACD menghindari false breakout untuk kualitas sinyal yang lebih tinggi.

  • StochRSI mengidentifikasi tingkat overbought / oversold untuk menghindari mengejar.

  • Mempertimbangkan arah tren keseluruhan untuk mengurangi kerugian kontra-tren.

  • Validasi lintas jangka waktu meningkatkan efektivitas sinyal.

  • Stop loss mengendalikan risiko.

Risiko

  • MACD rentan terhadap sinyal palsu, membutuhkan validasi lebih lanjut.

  • Parameter StochRSI yang buruk dapat kehilangan perdagangan.

  • Tingkat stop loss mungkin terlalu konservatif atau agresif.

  • Kurangnya manajemen posisi untuk berhenti dinamis.

Peningkatan:

  1. Tambahkan filter seperti volume atau kemiringan MA.

  2. Mengoptimalkan atau menambahkan osilator lain.

  3. Pelacakan stop loss dinamis.

  4. Tambahkan ukuran posisi berdasarkan kinerja.

Optimalisasi

Bidang utama untuk dioptimalkan:

  1. Optimalkan parameter indikator.

  2. Tambahkan filter untuk menghilangkan sinyal palsu.

  3. Mengoptimalkan berhenti untuk dinamika trailing.

  4. Masukkan ukuran posisi berdasarkan kinerja strategi.

  5. Tambahkan pembelajaran mesin untuk optimasi otomatis.

Ringkasan

Strategi ini menggabungkan beberapa indikator untuk sinyal yang lebih kuat, tetapi membutuhkan optimasi dalam parameter, penyaringan, berhenti dinamis untuk mengurangi perdagangan yang tidak diinginkan dan meningkatkan profitabilitas.


/*backtest
start: 2023-09-14 00:00:00
end: 2023-09-21 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2



//This strategy is an ongoing work in progress. Last updated 8/6/16.
//Feel free to modify it as you see fit, if you do borrow code then send me a link so I 
//can see and maybe borrow some of your code to improve this.
//Thanks to ChrisMoody who I stole the code for setting custom resolution from.
//
//more info in comments at end of script





strategy("MACDouble & StochRSI w/ safeties v0.3", overlay=true)

source = close
useCurrentRes = input(true, title="Uncheck to use custom res./intrv. for 2nd MACD indicator")
resCustom = input(title="Resolution/interval to use for 2nd MACD:",  defval="45")
res = useCurrentRes ? timeframe.period : resCustom

useCurrentRes2 = input(true, title="Uncheck to use custom res/intrv for StochRSI")
resCustom2 = input(title="Resolution to use for StochRSI indicator:",  defval="45")
res2 = useCurrentRes2 ? timeframe.period : resCustom2


//MACD1
fastLength = input(10, title="MACD fast length")
slowlength = input(21, title="MACD slow length")
sigLength = input(9, title="MACD signal length")

MACD = ema(source, fastLength) - ema(source, slowlength)
signal = sma(MACD, sigLength)
delta = MACD - signal



//MACD2
fastLength2 = input(31, title= "2nd MACD fast length")
slowlength2 = input(63, title= "2nd MACD slow length")
sigLength2 = input(30, title= "2nd MACD signal length")

MACD2 = ema(source, fastLength2) - ema(source, slowlength2)
signal2 = sma(MACD2, sigLength2)
delta2 = MACD2 - signal2

MACDRes = security(syminfo.tickerid, res, MACD2)
signalRes = security(syminfo.tickerid,res, signal2)
deltaRes = security(syminfo.tickerid, res, delta2)


uptrend = (close + high)/(close[1] + high[2])
downtrend = (close + low)/(close[1] + low[2])

smoothK = input(3, minval=1)
smoothD = input(3, minval=1)
lengthRSI = input(11, minval=1)
lengthStoch = input(11, minval=1)
src = close

rsi1 = rsi(src, lengthRSI)
k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
d = sma(k, smoothD)
RSI_buyTrig = input(90)
RSI_sellTrig = input(20)

kRes = security(syminfo.tickerid, res2, k)
dRes = security(syminfo.tickerid, res2, d)


if (delta > 0) and (year>2012) and (deltaRes > 0) and (uptrend > 1) and (  kRes and dRes < RSI_buyTrig) and (kRes > dRes)
    strategy.entry("buy", strategy.long, comment="buy")
    

if (delta < 0) and (year>2012) and (deltaRes < 0) and (downtrend < 1) and ( kRes and dRes > RSI_sellTrig) and (kRes < dRes)
    strategy.entry("sell", strategy.short, comment="sell")
	strategy.exit("sell", loss = 9000)



//  RELEASE NOTES, ETC
//
// The core starting idea for this backtesting script came from the desire to have two traditional
//MACD indicators: one 'fast' and one 'slow'. The slow one is to pretty much smooth out noisy signals
//so that short term changes in price are ignored (ideally). 
//	A brief version history
//		v0.1 - Basic two MACD indicators script
//      v0.2 - Added StochRSI indicator
//      v0.21- Added primitive uptrend/downtrend safety condition 
//      v0.22- Added changable time resolution for MACDslow
//      v0.23- Added exit safeties conditional on loss threshold   
//      v0.3 - Added changeable resolution for StochRSI
//	Future changes planned for next release:
//		-Fine tuning exit safeties
//      -Major overhaul of trade logic/triggers (may be forked as a different script)
//
//I am more than happy to discuss any difficulties you are having, questions about the script, or improvement suggestions.
//I am not a coder and my background is actually in economics, so feel free to debug ;)
//Feel free to tip me on the indcluded bitcoin address on TV as well
// tradingview.com/u/RyanMartin 
// rjmarti2@millersville.edu


Lebih banyak