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.
Strategi ini terdiri daripada empat bahagian utama:
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.
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.
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.
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.
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 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.
Mengoptimumkan parameter penunjuk, menyesuaikan kombinasi kitaran garis purata dua dan tiga indeks, menjadikannya lebih sesuai dengan ciri-ciri pasaran.
Operasi CANCEL dilakukan dengan lebih banyak petunjuk, menghentikan dagangan semasa apabila pasaran mengalami turun naik yang teruk.
Menggunakan strategi short-line multihead untuk membantu, memanfaatkan peluang jangka pendek untuk keuntungan dalam pasaran long-line multihead.
Strategi ini boleh dioptimumkan dalam beberapa aspek:
Menyesuaikan parameter kitaran garis purata dua dan tiga indeks, mengoptimumkan penunjuk mengikut ciri-ciri pasaran.
Menambah penilaian indikator seperti VOLUME dan MACD untuk mengelakkan isyarat palsu daripada harga yang tidak normal.
Menggunakan mod candle untuk lebih mengukuhkan trend dan mengelakkan isyarat salah selepas penarikan balik jangka pendek.
Perluasan kepada lebih banyak jenis seperti saham, mata wang asing, dan lain-lain untuk menguji kesesuaian strategi.
Gabungan dengan penunjuk VIX untuk menilai kadar turun naik keseluruhan pasaran, mengawal saiz kedudukan.
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.
/*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