Strategi Dagangan Dual MACD StochRSI

Penulis:ChaoZhang, Tarikh: 2023-09-22
Tag:

Ringkasan

Strategi ini menggabungkan penunjuk MACD berganda dan osilator StochRSI untuk isyarat perdagangan. MACD berganda menggunakan parameter yang berbeza untuk kesan cepat dan perlahan, sementara StochRSI mengesahkan perbezaan momentum. Penapis trend dan stop loss juga ditambah untuk mengawal risiko.

Logika Strategi

Isyarat perdagangan adalah berdasarkan:

  • MACD berganda: MACD pantas menggunakan tempoh pandang belakang yang pendek, MACD perlahan menggunakan tempoh pandang belakang yang panjang untuk kesan pelunturan.

  • StochRSI: Mengira julat tinggi/rendah RSI untuk mengenal pasti tahap RSI overbought/oversold.

Peraturan kemasukan:

  • Long: MACD pantas melintasi di atas garis sifar dan MACD perlahan melintasi di atas garis sifar. StochRSI terlalu dijual dan K melintasi di atas D. Dalam trend menaik.

  • Pendek: MACD pantas melintasi di bawah garis sifar dan MACD perlahan melintasi di bawah garis sifar. StochRSI terlalu banyak dibeli dan K melintasi di bawah D. Dalam trend menurun.

Kelebihan

  • MACD berganda mengelakkan pecah palsu untuk kualiti isyarat yang lebih tinggi.

  • StochRSI mengenal pasti tahap overbought / oversold untuk mengelakkan mengejar.

  • Mempertimbangkan arah trend keseluruhan untuk mengurangkan kerugian kontra-trend.

  • Validasi jangka masa silang meningkatkan keberkesanan isyarat.

  • Stop loss mengawal risiko.

Risiko

  • MACD terdedah kepada isyarat palsu, memerlukan pengesahan lanjut.

  • Parameter StochRSI yang lemah mungkin terlepas perdagangan.

  • Tahap stop loss mungkin terlalu konservatif atau agresif.

  • Kekurangan pengurusan kedudukan untuk berhenti dinamik.

Penambahbaikan:

  1. Tambah penapis seperti jumlah atau kemiringan MA.

  2. Mengoptimumkan atau menambah pengayun lain.

  3. Pengesanan stop loss dinamik.

  4. Tambah saiz kedudukan berdasarkan prestasi.

Pengoptimuman

Bidang utama untuk dioptimumkan:

  1. Mengoptimumkan parameter penunjuk.

  2. Tambah penapis untuk menghapuskan isyarat palsu.

  3. Mengoptimumkan hentian untuk dinamika trailing.

  4. Menggabungkan saiz kedudukan berdasarkan prestasi strategi.

  5. Tambah pembelajaran mesin untuk pengoptimuman automatik.

Ringkasan

Strategi ini menggabungkan beberapa penunjuk untuk isyarat yang lebih kuat, tetapi memerlukan pengoptimuman dalam parameter, penapisan, berhenti dinamik untuk mengurangkan perdagangan yang tidak diingini dan meningkatkan keuntungan.


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