Strategi perdagangan indikator eksponensial rata-rata bergerak ganda tiga

Penulis:ChaoZhang, Tanggal: 2023-12-15 15:39:45
Tag:

img

Gambaran umum

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.

Prinsip-prinsip

Strategi ini terutama terdiri dari empat bagian:

  1. 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.

  2. 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.

  3. 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.

  4. 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.

Keuntungan

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 dan Tindakan Balap

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.

  1. 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.

  2. Masukkan lebih banyak indikator untuk operasi CANCEL, mengakhiri perdagangan saat ini ketika pasar menunjukkan fluktuasi drastis.

  3. Menggunakan strategi bullish jangka pendek tambahan untuk memanfaatkan peluang jangka pendek di pasar bull jangka panjang.

Arahan Optimasi

Aspek utama di mana strategi ini dapat dioptimalkan meliputi:

  1. Sesuaikan parameter siklus dari rata-rata bergerak ganda dan rata-rata bergerak eksponensial tiga untuk mengoptimalkan indikator penyesuaian dengan karakteristik pasar.

  2. Tingkatkan VOLUME, MACD dan penilaian lainnya untuk menghindari pergerakan harga yang tidak normal yang menyebabkan sinyal yang salah.

  3. Lebih baik konfirmasi tren menggunakan pola candlestick untuk menghindari sinyal yang salah setelah penurunan jangka pendek.

  4. Perluas ke lebih banyak varietas seperti saham, forex dan uji kemampuan adaptasi strategi.

  5. Menggabungkan indikator VIX untuk menentukan volatilitas pasar secara keseluruhan dan ukuran posisi kontrol.

Kesimpulan

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


Lebih banyak