Strategi Dagangan Petunjuk Berganda Purata Pergerakan Tiga


Tarikh penciptaan: 2023-12-15 15:39:45 Akhirnya diubah suai: 2023-12-15 15:39:45
Salin: 0 Bilangan klik: 348
1
fokus pada
1166
Pengikut

Strategi Dagangan Petunjuk Berganda Purata Pergerakan Tiga

Gambaran keseluruhan

Strategi ini menggunakan penunjuk garis rata dua dan tiga indeks, digabungkan dengan penunjuk rawak, membentuk strategi perdagangan yang lebih stabil dan boleh dipercayai. Gagasan utamanya adalah untuk mengeluarkan isyarat perdagangan apabila penunjuk garis rata membuat keputusan mengenai garpu emas atau garpu mati; dan penunjuk rawak digunakan untuk membantu membuat keputusan mengenai keadaan jual beli yang berlebihan, untuk mengelakkan isyarat yang salah ketika pasaran bergelombang.

Prinsip

Strategi ini terdiri daripada empat bahagian utama:

  1. Indikator Garis Persamaan Ganda: Mengira purata bergerak indeks 50 dan 100 kitaran ((EMA) secara berasingan, menghasilkan isyarat beli apabila EMA jangka pendek melintasi EMA jangka panjang, menghasilkan isyarat jual apabila melintasi.

  2. Tiga penunjuk indeks: Menghitung purata bergerak indeks 50 kitaran, 100 kitaran dan 200 kitaran untuk menentukan arah trend pasaran. Apabila 50EMA> 100EMA> 200EMA adalah pasaran bertopeng, apabila 50EMA < 100EMA < 200EMA adalah pasaran kosong.

  3. Indikator rawak: mengira nilai K dan D 6 hari RSI untuk menilai keadaan overbought dan oversold. Apabila nilai K melebihi nilai D, ia adalah oversold, dan apabila nilai D melebihi ia adalah oversold.

  4. Isyarat perdagangan: Pasaran hanya sesuai dengan keadaan multi atau kosong pada garis rata-rata tiga indeks pada masa yang sama dengan isyarat yang dihasilkan oleh penunjuk dua rata-rata, dan arahan perdagangan sebenar dikeluarkan apabila penunjuk rawak tidak menunjukkan overbought dan oversold.

Kelebihan

Strategi ini menggabungkan penggunaan penunjuk garis rata dan penunjuk rawak, mempertimbangkan arah trend semasa mengeluarkan isyarat perdagangan, dan merujuk kepada keadaan overbought dan oversold di pasaran, sehingga dapat menyaring kebisingan dengan lebih baik dan menjejaki trend yang lebih jelas. Di samping itu, ia menggunakan garis rata tiga indeks untuk menilai trend keseluruhan, menjadikan isyarat lebih dipercayai.

Risiko dan tindakan

Risiko terbesar strategi ini adalah kerana ia bergantung kepada penilaian indikator, yang mudah menyebabkan kegagalan perdagangan apabila indikator memberi isyarat yang salah. Selain itu, peluang jangka pendek mungkin hilang apabila menggunakan indikator rata-rata jangka panjang untuk menilai trend keseluruhan.

  1. Mengoptimumkan parameter penunjuk, menyesuaikan kombinasi kitaran garis purata dua dan tiga indeks, menjadikannya lebih sesuai dengan ciri-ciri pasaran.

  2. Operasi CANCEL dilakukan dengan lebih banyak petunjuk, menghentikan dagangan semasa apabila pasaran mengalami turun naik yang teruk.

  3. Menggunakan strategi short-line multihead untuk membantu, memanfaatkan peluang jangka pendek untuk keuntungan dalam pasaran long-line multihead.

Arah pengoptimuman

Strategi ini boleh dioptimumkan dalam beberapa aspek:

  1. Menyesuaikan parameter kitaran garis purata dua dan tiga indeks, mengoptimumkan penunjuk mengikut ciri-ciri pasaran.

  2. Menambah penilaian indikator seperti VOLUME dan MACD untuk mengelakkan isyarat palsu daripada harga yang tidak normal.

  3. Menggunakan mod candle untuk lebih mengukuhkan trend dan mengelakkan isyarat salah selepas penarikan balik jangka pendek.

  4. Perluasan kepada lebih banyak jenis seperti saham, mata wang asing, dan lain-lain untuk menguji kesesuaian strategi.

  5. Gabungan dengan penunjuk VIX untuk menilai kadar turun naik keseluruhan pasaran, mengawal saiz kedudukan.

ringkaskan

Strategi ini menggunakan indikator binari untuk menghantar isyarat perdagangan, garis rata-rata tiga indeks dan penunjuk rawak untuk membuat penilaian tambahan, sehingga membina strategi pengesanan trend yang lebih stabil. Ia mudah difahami, mudah dilaksanakan, bersesuaian dengan ciri-ciri pasaran, dan keuntungan yang lebih stabil, merupakan satu set strategi kuantitatif yang disyorkan. Dengan pengoptimuman yang disasarkan, terdapat harapan untuk mendapatkan hasil yang lebih baik.

Kod 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