Strategi Perdagangan Rata-rata Pergerakan Ganda Tiga Indikator Indeks


Tanggal Pembuatan: 2023-12-15 15:39:45 Akhirnya memodifikasi: 2023-12-15 15:39:45
menyalin: 0 Jumlah klik: 603
1
fokus pada
1621
Pengikut

Strategi Perdagangan Rata-rata Pergerakan Ganda Tiga Indikator Indeks

Ringkasan

Strategi ini menggunakan indikator garis rata ganda dan indikator garis rata tiga indeks, yang dikombinasikan dengan indikator acak, untuk membentuk strategi perdagangan yang lebih stabil dan andal. Gagasan utamanya adalah bahwa indikator garis rata menilai munculnya garpu emas atau garpu mati, dan mengirimkan sinyal perdagangan. Sementara indikator acak digunakan untuk membantu menilai overbought dan oversold, untuk menghindari sinyal yang salah saat pasar bergejolak.

Prinsip

Strategi ini terdiri dari empat bagian utama:

  1. Indikator linier ganda: menghitung rata-rata bergerak indeks 50 siklus dan 100 siklus masing-masing ((EMA), menghasilkan sinyal beli ketika melewati EMA jangka panjang di atas EMA jangka pendek dan menghasilkan sinyal jual saat melewati EMA jangka panjang.

  2. Tiga indikator indeks: Perhitungan rata-rata bergerak indeks masing-masing 50 siklus, 100 siklus dan 200 siklus untuk menentukan arah tren pasar. Jika 50 EMA> 100 EMA> 200 EMA adalah pasar overhead, 50 EMA < 100 EMA < 200 EMA adalah pasar kosong.

  3. Indikator acak: Menghitung nilai K dan nilai D 6 hari RSI untuk menilai overbought dan oversold. Di atas nilai K, nilai D adalah oversold dan di bawahnya adalah oversold.

  4. Sinyal perdagangan: Pasar hanya sesuai dengan kondisi multihead atau kosong di garis rata-rata tiga indeks pada saat yang sama dengan sinyal yang dihasilkan oleh indikator garis rata-rata ganda, dan perintah perdagangan yang sebenarnya dikeluarkan ketika indikator acak tidak menunjukkan overbought dan oversold.

Keunggulan

Keuntungan dari strategi ini adalah penggunaan indikator garis rata dan indikator acak, yang mempertimbangkan arah tren ketika mengirim sinyal perdagangan, dan juga merujuk pada keadaan overbought dan oversold di pasar, sehingga dapat menyaring kebisingan dengan lebih baik dan melacak tren yang lebih jelas. Selain itu, ia menggunakan garis rata tiga indeks untuk menilai tren keseluruhan, membuat sinyal lebih dapat diandalkan.

Risiko dan Pengendalian

Risiko terbesar dari strategi ini adalah bahwa ia bergantung pada penilaian indikator, yang dapat menyebabkan kegagalan perdagangan ketika indikator mengirimkan sinyal yang salah. Selain itu, penggunaan indikator rata-rata periode yang lebih panjang untuk menilai tren keseluruhan dapat kehilangan peluang jangka pendek.

  1. Mengoptimalkan parameter indikator, menyesuaikan kombinasi periodik dari garis rata-rata ganda dan garis rata-rata tiga indeks, sehingga lebih sesuai dengan karakteristik pasar.

  2. Operasi CANCEL dilakukan dengan mengkombinasikan lebih banyak indikator untuk menghentikan perdagangan saat ini jika pasar dianggap bergejolak.

  3. Mengadopsi strategi short-line multihead untuk membantu memanfaatkan peluang jangka pendek untuk mendapatkan keuntungan di pasar long-line multihead.

Arah optimasi

Strategi ini dapat dioptimalkan dalam beberapa hal:

  1. Menyesuaikan parameter periodik dari garis rata-rata ganda dan garis rata-rata tiga indeks, mengoptimalkan indikator sesuai dengan karakteristik pasar.

  2. Meningkatkan penilaian pada indikator seperti VOLUME dan MACD untuk menghindari sinyal yang salah dari harga yang tidak normal.

  3. Menggunakan candle mode untuk mengkonfirmasi tren lebih baik dan menghindari sinyal salah setelah penarikan jangka pendek.

  4. Perluasan ke lebih banyak varietas, seperti saham, forex, dan lain-lain, untuk menguji kelayakan strategi.

  5. Kombinasi dengan indikator VIX untuk menilai volatilitas pasar secara keseluruhan dan mengontrol ukuran posisi.

Meringkaskan

Strategi ini menggunakan indikator garis rata ganda untuk mengirimkan sinyal perdagangan, garis rata tiga indeks dan indikator acak untuk penilaian tambahan, sehingga membangun strategi pelacakan tren yang lebih stabil. Ini sederhana dan mudah dipahami, mudah diterapkan, memiliki kecocokan tinggi dengan karakteristik pasar, dan pengembalian yang lebih stabil, merupakan strategi kuantitatif yang layak direkomendasikan. Dengan optimasi yang ditargetkan, diharapkan untuk mendapatkan hasil yang lebih baik.

Kode Sumber Strategi
/*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