Strategi ini menggunakan indikator rata-rata bergerak ganda dan indikator rata-rata bergerak eksponensial tiga, dikombinasikan dengan indikator stokastik, untuk membentuk strategi perdagangan pelacakan tren yang relatif stabil dan dapat diandalkan.
Strategi ini terutama terdiri dari empat bagian:
Indikator Rata-rata Bergerak Ganda: Menghitung rata-rata bergerak eksponensial 50 periode dan 100 periode (EMA) masing-masing. Ini menghasilkan sinyal beli ketika EMA jangka pendek melintasi di atas EMA jangka panjang, dan sinyal jual ketika melintasi di bawah.
Triple Exponential Indicator: Menghitung rata-rata bergerak eksponensial 50-periode, 100-periode dan 200-periode untuk menentukan arah tren pasar. Ketika 50EMA> 100EMA> 200EMA, itu adalah pasar bullish. Ketika 50EMA<100EMA<200EMA, itu adalah pasar bearish.
Indikator Stokastik: Menghitung nilai K dan D 6 hari dari RSI untuk menentukan kondisi overbought dan oversold. Ketika nilai K melintasi di atas nilai D, itu oversold. Ketika melintasi di bawah, itu overbought.
Sinyal Perdagangan: Hanya ketika indikator rata-rata bergerak ganda menghasilkan sinyal pada saat yang sama ketika pasar sesuai dengan keadaan bullish atau bearish dari rata-rata bergerak eksponensial tiga kali lipat, dan indikator stokastik tidak menunjukkan overbought atau oversold, pesanan perdagangan yang sebenarnya akan dikeluarkan.
Strategi ini menggabungkan keuntungan dari indikator rata-rata bergerak dan indikator stokastik. Ini memperhitungkan penilaian arah tren dan keadaan overbought / oversold pasar saat mengeluarkan sinyal perdagangan, sehingga menyaring kebisingan lebih efektif untuk melacak tren yang lebih jelas. Selain itu, menggunakan rata-rata bergerak eksponensial tiga kali lipat untuk menentukan tren keseluruhan, membuat sinyal lebih dapat diandalkan. Strategi ini sederhana, mudah diterapkan, dan mudah dioptimalkan.
Risiko terbesar dari strategi ini adalah bahwa ia bergantung pada penilaian indikator. Ketika indikator memberikan sinyal yang salah, itu dapat dengan mudah menyebabkan perdagangan gagal. Selain itu, ketika menggunakan rata-rata bergerak siklus yang lebih lama untuk menentukan tren keseluruhan, beberapa peluang jangka pendek juga dapat dilewatkan.
Mengoptimalkan parameter indikator dan menyesuaikan kombinasi siklus dari rata-rata bergerak ganda dan rata-rata bergerak eksponensial tiga kali lipat agar lebih sesuai dengan karakteristik pasar.
Masukkan lebih banyak indikator untuk operasi CANCEL, mengakhiri perdagangan saat ini ketika pasar menunjukkan fluktuasi drastis.
Menggunakan strategi bullish jangka pendek tambahan untuk memanfaatkan peluang jangka pendek di pasar bull jangka panjang.
Aspek utama di mana strategi ini dapat dioptimalkan meliputi:
Sesuaikan parameter siklus dari rata-rata bergerak ganda dan rata-rata bergerak eksponensial tiga untuk mengoptimalkan indikator
Tingkatkan VOLUME, MACD dan penilaian lainnya untuk menghindari pergerakan harga yang tidak normal yang menyebabkan sinyal yang salah.
Lebih baik konfirmasi tren menggunakan pola candlestick untuk menghindari sinyal yang salah setelah penurunan jangka pendek.
Perluas ke lebih banyak varietas seperti saham, forex dan uji kemampuan adaptasi strategi.
Menggabungkan indikator VIX untuk menentukan volatilitas pasar secara keseluruhan dan ukuran posisi kontrol.
Strategi ini menggunakan indikator rata-rata bergerak ganda untuk mengeluarkan sinyal perdagangan, dengan rata-rata bergerak eksponensial tiga kali lipat dan indikator stokastik sebagai pelengkap, sehingga membangun strategi pelacakan tren yang relatif stabil.
/*backtest start: 2023-12-07 00:00:00 end: 2023-12-12 08:00:00 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy(title='5212 EMA Strategy', shorttitle='5212 EMA', overlay=true, pyramiding=0, default_qty_type=strategy.percent_of_equity, default_qty_value=10, calc_on_every_tick=false) //**Backtest Date sof useStartPeriodTime = input.bool(true , 'Start Date & Time' , group='Date Range' , inline='Start Period') startPeriodTime = input(timestamp('16 Apr 2021') , '' , group='Date Range' , inline='Start Period') useEndPeriodTime = input.bool(false , 'End Date & Time' , group='Date Range' , inline='End Period') endPeriodTime = input(timestamp('31 Dec 2222') , '' , group='Date Range' , inline='End Period') enableHighlight = input.bool(false , 'Highlight' , group='Date Range' , inline='Highlight') highlightType = input.string('Anchors' , '' , group='Date Range' , inline='Highlight' , options=['Anchors', 'Background']) highlightColor = input.color(color.white , '' , group='Date Range' , inline='Highlight') start = useStartPeriodTime ? startPeriodTime >= time : false end = useEndPeriodTime ? endPeriodTime <= time : false calcPeriod = true // var line startAnchor = line.new(na, na, na, na, xloc.bar_time, extend.both, highlightColor, width=2) // var line endAnchor = line.new(na, na, na, na, xloc.bar_time, extend.both, highlightColor, width=2) // useBgcolor = false // if enableHighlight // if highlightType == 'Anchors' // if useStartPeriodTime // line.set_xy1(startAnchor, startPeriodTime, low) // line.set_xy2(startAnchor, startPeriodTime, high) // if useEndPeriodTime // line.set_xy1(endAnchor, calcPeriod ? time : line.get_x1(endAnchor), low) // line.set_xy2(endAnchor, calcPeriod ? time : line.get_x1(endAnchor), high) // if highlightType == 'Background' // useBgcolor := true // useBgcolor // bgcolor(useBgcolor and calcPeriod ? color.new(highlightColor,90) : na, editable=false) //**Backtest Date eof src =input(close , 'Source' , group='Support') showEMA = input(true , 'Show EMA' , group='Support') //**Stochastic RSI sof smoothK = input.int(6 , "K" , group='Stochastic RSI' , minval=1) smoothD = input.int(6 , "D" , group='Stochastic RSI' , minval=1) lengthRSI = input.int(28 , "RSI Length" , group='Stochastic RSI' , minval=1) lengthStoch = input.int(28 , "Stoch Length" , group='Stochastic RSI' , minval=1) rsi1 = ta.rsi(src, lengthRSI) k = ta.sma(ta.stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK) d = ta.sma(k, smoothD) //**STochastic RSI eof //** EMA sof emain01 = input.int(50 , "EMAma Girang" , group='Moving Average Exponential' , minval=1) emain02 = input.int(100 , "EMAma Muda" , group='Moving Average Exponential' , minval=1) emain03 = input.int(200 , "EMAma Tua" , group='Moving Average Exponential' , minval=1) ema01 = ta.ema(src, emain01) ema02 = ta.ema(src, emain02) ema03 = ta.ema(src, emain03) plot(showEMA ? ema01 : na, 'EMAma Girang' , color = color.new(color.orange, 0)) plot(showEMA ? ema02 : na, 'EMAma Muda' , color = color.new(color.blue, 0)) plot(showEMA ? ema03 : na, 'EMAma Tua' , color = color.new(color.red, 0)) //** EMA eof //**Condition sof emaLong = ema01 > ema02 and ema02 > ema03 and low > ema03 emaShort = ema01 < ema02 and ema02 < ema03 and high < ema03 longCond = ta.crossover(k,d) and k <= 23 and emaLong shortCond = ta.crossunder(k,d) and k >= 77 and emaShort longClose = ta.crossunder(k,d) and k <= 77 shortClose = ta.crossover(k,d) and k >= 23 longCross = ta.crossover(ema01, ema02) shortCross = ta.crossunder(ema01, ema02) //**Condition eof //**Strategy sof if calcPeriod and longCond strategy.entry('long', strategy.long, when=longCond, comment='EN Long') strategy.close('long', when=shortClose, comment='EX Long') strategy.close('long', when=shortCross, comment='MD Short') if calcPeriod and shortCond strategy.entry('short', strategy.short, when=shortCond, comment='EN Short') strategy.close('short', when=longClose, comment='EX Short') strategy.close('short', when=longCross, comment='MD Long') if calcPeriod == false and ta.crossover(ema01, ema02) or ta.crossunder(ema01, ema02) strategy.cancel('long') strategy.cancel('short') //**Strategy eof //**Label sof entryText = str.tostring(strategy.position_avg_price, '##.###') longText = 'Long Entry : ' + entryText shortText = 'Short Entry : ' + entryText noTrade = 'Sleeping Mode' LongTrade = strategy.position_size > 0 ShortTrade = strategy.position_size < 0 Tekslabel = LongTrade ? longText : ShortTrade ? shortText : noTrade xPosition = timenow + math.round(ta.change(time)*1) yPosition = ta.highest(1) labelColor = LongTrade ? color.new(color.aqua, 0) : ShortTrade ? color.new(color.red, 0) : color.new(color.gray, 0) textColor = LongTrade ? color.new(color.black, 0) : ShortTrade ? color.new(color.white, 0) : color.new(color.white, 0) // lab_l = label.new( // xPosition, yPosition, Tekslabel, // color=labelColor, // textcolor=textColor, // style = label.style_label_left, // textalign=text.align_left, // xloc=xloc.bar_time, yloc = yloc.price) // label.delete(lab_l[1]) //**Strategy eof