Strategi Perdagangan Trend Purata Bergerak Dinamik

Penulis:ChaoZhang, Tarikh: 2023-11-15 17:45:13
Tag:

img

Ringkasan

Strategi ini berdasarkan pada penunjuk Rata-rata Bergerak Dinamik, digabungkan dengan Bollinger Bands dan RSI untuk penapisan isyarat perdagangan. Ia melaksanakan trend mengikut strategi panjang sahaja. Strategi ini menilai trend dengan mengira perubahan harga penutupan Heiken Ashi Dynamic Moving Average dan membandingkannya dengan Bollinger Bands untuk menjana isyarat perdagangan. Dengan penapis RSI, ia dapat mengenal pasti titik letupan trend untuk penjejakan trend.

Logika Strategi

Inti strategi ini adalah untuk mengira perubahan harga penutupan Heiken Ashi Peratus Bergerak Dinamis. Khususnya, ia mengira perbezaan antara MA bar semasa dan MA dua bar sebelumnya, kemudian mengalikannya dengan pekali kepekaan untuk mendapatkan nilai perubahan MA yang tepat.

Kemudian nilai perubahan ini dibandingkan dengan perbezaan antara band atas dan band bawah Bollinger Bands. Jika perubahan MA lebih besar daripada perbezaan BB, ia dianggap sebagai letupan trend. Apabila letupan positif, iaitu perubahan MA positif, ia menghasilkan isyarat panjang dan bar hijau. Apabila letupan negatif, iaitu perubahan MA negatif, ia menghasilkan isyarat dekat dan bar merah.

Di samping itu, strategi ini mempunyai penapis RSI yang hanya membenarkan isyarat panjang apabila RSI lebih tinggi daripada ambang, mengelakkan risiko pembalikan trend.

Kelebihan

  • MA dinamik untuk mengesan perubahan trend dengan berkesan
  • BB sebagai penunjuk dinamik digabungkan dengan MA untuk pengenalan ledakan trend yang lebih baik
  • Penapis RSI mengelakkan isyarat palsu dari rebound rendah
  • Lama hanya sesuai untuk pasaran lembu yang berterusan
  • Parameter yang boleh diselaraskan yang fleksibel untuk produk dan jangka masa yang berbeza

Risiko

  • Long hanya tidak boleh mendapat keuntungan daripada downtrend
  • Terlalu bergantung pada pengoptimuman parameter untuk produk dan jangka masa yang berbeza
  • Kegagalan untuk menangkap pembalikan trend dengan berkesan, boleh membawa kepada kerugian besar
  • Tetapan penapis RSI yang tidak betul boleh kehilangan peluang perdagangan
  • Sensitiviti tinggi boleh menghasilkan perdagangan bising

Kaedah kawalan risiko termasuk: penyesuaian parameter yang betul untuk ketahanan, menggabungkan penunjuk lain untuk menilai pembalikan trend, hanya digunakan dalam trend jangka panjang yang jelas, dll.

Arahan pengoptimuman

Terdapat beberapa ruang untuk pengoptimuman lanjut:

  • Cuba sumber harga yang berbeza seperti dekat, purata bergerak dan lain-lain untuk lebih halus

  • Sesuaikan parameter tempoh MA dan BB untuk pengoptimuman di seluruh produk yang berbeza

  • Cuba hubungan nisbah bukannya pekali kepekaan untuk nilai penunjuk yang lebih intuitif

  • Tambah penapis lain seperti trendlines, jumlah dan lain-lain untuk meningkatkan kualiti isyarat

  • Membangunkan strategi pendek berdasarkan corak penunjuk

  • Memasuki mekanisme stop loss untuk kawalan risiko yang lebih baik

Kesimpulan

Secara keseluruhan ini adalah trend yang agak stabil mengikuti strategi. Ia menggunakan purata bergerak dinamik untuk menentukan arah trend, BB untuk mengenal pasti titik letupan, RSI untuk menapis isyarat palsu, merealisasikan sistem trend yang panjang sahaja. Tetapi ia juga mempunyai beberapa risiko, memerlukan penyesuaian parameter untuk produk dan jangka masa yang berbeza, dan ketidakupayaan untuk mendapat keuntungan dari trend penurunan. Terdapat ruang untuk penambahbaikan lanjut seperti meningkatkan kualiti isyarat, membangunkan strategi pendek, menambah stop loss dan lain-lain untuk mencapai prestasi yang lebih baik.


/*backtest
start: 2022-11-08 00:00:00
end: 2023-11-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5

///////////Original Script Courtesy of Lazy_Bear.... Absolute Legend\\\\\\\\\\\\\\\

strategy('SmoothedWaddah', overlay=false, initial_capital=1)
sensitivity = input(150, title='Sensitivity')
fastLength = input(20, title='MacD FastEMA Length')
slowLength = input(40, title='MacD SlowEMA Length')
channelLength = input(20, title='BB Channel Length')
mult = input(1.5, title='BB Stdev Multiplier')
RSI14filter = input(40, title='RSI Value trade filter')

////////////MacD Calculation of price//////////////////////////////
calc_macd(source, fastLength, slowLength) =>
    fastMA = ta.ema(source, fastLength)
    slowMA = ta.ema(source, slowLength)
    fastMA - slowMA

/////////BolingerBand Calculation of Price///////////////////////
calc_BBUpper(source, length, mult) =>
    basis = ta.sma(source, length)
    dev = mult * ta.stdev(source, length)
    basis + dev

calc_BBLower(source, length, mult) =>
    basis = ta.sma(source, length)
    dev = mult * ta.stdev(source, length)
    basis - dev

//////heinkenashi chart call for closing price "smoothing mechanism"\\\\\\\\\\\\\\\\\\\\\\\\\\\
point = request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, close)

////////////////////T1 is change in MacD current  candle from previous candle Sensitivy amplifies calculation/////////////////////
t1 = (calc_macd(point, fastLength, slowLength) - calc_macd(point[1], fastLength, slowLength)) * sensitivity
//////////////////////T2 is  T1 from two candles prior\\\\\\\\\\\\\\\\\\\\\\\\\\\
t2 = (calc_macd(point[2], fastLength, slowLength) - calc_macd(point[3], fastLength, slowLength)) * sensitivity

////////////////E1 is difference in bolinger band upper and lower...E2 is E1 from one candle prior not needed//////////////
e1 = calc_BBUpper(ohlc4, channelLength, mult) - calc_BBLower(ohlc4, channelLength, mult)
//e2 = (calc_BBUpper(close[1], channelLength, mult) - calc_BBLower(close[1], channelLength, mult))

//////signal bar printing.. Up if MacD positive .. Down if MacD negative//////////
trendUp = t1 >= 0 ? t1 : 0
trendDown = t1 < 0 ? -1 * t1 : 0

///////plots difference in macD*Sensitivity, color change if increasing or decreasing. 
//////color is green/lime if explosion is up \ color is red/orange if explosion is down/////////
plot(trendUp, style=plot.style_columns, linewidth=1, color=trendUp < trendUp[1] ? color.new(color.lime,45) : color.new(color.green,45), title='UpTrend')
plot(trendDown, style=plot.style_columns, linewidth=1, color=trendDown < trendDown[1] ? color.new(color.orange,45) : color.new(color.red,45), title='DownTrend')
plot(e1, style=plot.style_line, linewidth=2, color=color.new(#A0522D, 0), title='ExplosionLine')


////////////Entry conditions and Concept/////////////////////
////////////Long Only System. T1 is measuring the distance between MACD EMA's. This is Multiplied
////////////by the sensitivity so that it can be compared to the difference between BollingerBand. 
/////////////{this could have been a ratio maybe i will work with that in a different script.} 
/////////////I found that 135-175 sensitivy allows for values to be compared on most charts.....
////////////If the (difference between the EMA)*(Sensitivity) is greater than (BB upper line- BB lower line)
////////////it is considered an explosion in either the downside or the upside.The indicator will print
///////////a bar higher than the trigger line either green or red (up or down respectively)//////////////////

longCondition = trendUp > e1 and ta.rsi(close, 14) > RSI14filter
if longCondition
    strategy.entry('up', strategy.long)

strategy.close('up', trendDown > e1)



Lebih lanjut