Tren Mengikuti Strategi Berdasarkan Kombinasi Rata-rata Bergerak

Penulis:ChaoZhang, Tanggal: 2024-02-23 14:54:34
Tag:

img

Gambaran umum

Strategi ini mengidentifikasi arah tren dengan menghitung kombinasi dari beberapa rata-rata bergerak cepat dan lambat. Ini menghasilkan sinyal beli ketika MA cepat melintasi di atas MA lambat, dan sinyal jual ketika MA cepat melintasi di bawah MA lambat.

Logika Strategi

  1. Menghitung 7 kelompok EMA cepat dengan periode 3/6/9/12/15/18/21 hari.
  2. Menghitung 14 kelompok EMA lambat dengan periode 24/27/30/.../200 hari.
  3. Tetapkan aturan warna untuk EMA cepat: 3MA di atas 6MA adalah uptrend (aqua), di bawahnya adalah downtrend (orange).
  4. Tetapkan aturan warna untuk EMA lambat: 24MA di atas 25MA adalah uptrend (lime), di bawahnya adalah downtrend (merah).
  5. Ketika EMA cepat grup melintasi di atas kelompok EMA lambat, menghasilkan sinyal beli, menunjukkan uptrend.
  6. Ketika EMA cepat grup melintasi di bawah kelompok EMA lambat, menghasilkan sinyal jual, menunjukkan downtrend.

Dengan menggabungkan MAs cepat dan lambat, dapat secara efektif mengidentifikasi perubahan tren jangka menengah dan panjang untuk pelacakan posisi.

Keuntungan

  1. MAs cepat dan lambat digabungkan dapat dengan kuat mengidentifikasi perubahan tren. MAs cepat menangkap tren jangka pendek, dan MAs lambat menyaring konsolidasi.
  2. Kombinasi beberapa MA dapat memberikan sinyal yang lebih jelas dan lebih dapat diandalkan, menghindari sinyal palsu.
  3. Siklus operasi yang fleksibel dengan menggunakan periode EMA yang berbeda.
  4. Pelacakan posisi panjang cocok dengan mode operasi sebagian besar dana swasta.

Risiko

  1. Memegang posisi terlalu lama dapat kehilangan peluang perdagangan jangka pendek.
  2. Kombinasi EMA tidak cocok untuk menangkap fluktuasi harga yang tajam.
  3. Pengaturan parameter yang tidak benar dapat mengakibatkan sinyal yang terlalu sering atau konservatif.

Saran Optimalisasi

  1. Tambahkan EMA yang lebih cepat untuk meningkatkan penilaian tren jangka pendek.
  2. Tambahkan EMA yang lebih lambat untuk meningkatkan penilaian tren jangka menengah dan panjang.
  3. Tambahkan konfirmasi sinyal MA untuk mengurangi sinyal palsu.
  4. Masukkan analisis volume untuk menghindari kebocoran palsu di berbagai pasar.

Ringkasan

Strategi ini mengidentifikasi perubahan tren jangka menengah hingga panjang dengan membangun sistem MA cepat dan lambat, yang merupakan strategi posisi pelacakan khas. Masih banyak ruang untuk optimasi dalam pemilihan parameter dan penyaringan sinyal. Investor dapat menyesuaikannya untuk beradaptasi dengan kondisi pasar yang berbeda.


/*backtest
start: 2023-02-16 00:00:00
end: 2024-02-22 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("CM Super Guppy ala WY", pyramiding=1, default_qty_type=strategy.percent_of_equity, default_qty_value=99, overlay=true)


///////////////////////////////////////////////
//* Backtesting Period Selector | Component *//
///////////////////////////////////////////////

//* https://www.tradingview.com/script/eCC1cvxQ-Backtesting-Period-Selector-Component *//
//* https://www.tradingview.com/u/pbergden/ *//
//* Modifications made *//

testStartYear = input(2017, "Backtest Start Year") 
testStartMonth = input(01, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2019, "Backtest Stop Year")
testStopMonth = input(3, "Backtest Stop Month")
testStopDay = input(1, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

testPeriod() => true

///////////////////////////////////////////////

src = close, 
len1 = input(3, minval=1, title="Fast EMA 1")
len2 = input(6, minval=1, title="Fast EMA 2")
len3 = input(9, minval=1, title="Fast EMA 3")
len4 = input(12, minval=1, title="Fast EMA 4")
len5 = input(15, minval=1, title="Fast EMA 5")
len6 = input(18, minval=1, title="Fast EMA 6")
len7 = input(21, minval=1, title="Fast EMA 7")
//Slow EMA
len8 = input(24, minval=1, title="Slow EMA 8")
len9 = input(27, minval=1, title="Slow EMA 9")
len10 = input(30, minval=1, title="Slow EMA 10")
len11 = input(33, minval=1, title="Slow EMA 11")
len12 = input(36, minval=1, title="Slow EMA 12")
len13 = input(39, minval=1, title="Slow EMA 13")
len14 = input(42, minval=1, title="Slow EMA 14")
len15 = input(45, minval=1, title="Slow EMA 15")
len16 = input(48, minval=1, title="Slow EMA 16")
len17 = input(51, minval=1, title="Slow EMA 17")
len18 = input(54, minval=1, title="Slow EMA 18")
len19 = input(57, minval=1, title="Slow EMA 19")
len20 = input(60, minval=1, title="Slow EMA 20")
len21 = input(63, minval=1, title="Slow EMA 21")
len22 = input(66, minval=1, title="Slow EMA 22")
len23 = input(200, minval=1, title="EMA 200")

//Fast EMA
ema1 = ema(src, len1)
ema2 = ema(src, len2)
ema3 = ema(src, len3)
ema4 = ema(src, len4)
ema5 = ema(src, len5)
ema6 = ema(src, len6)
ema7 = ema(src, len7)

//Slow EMA
ema8 = ema(src, len8)
ema9 = ema(src, len9)
ema10 = ema(src, len10)
ema11 = ema(src, len11)
ema12 = ema(src, len12)
ema13 = ema(src, len13)
ema14 = ema(src, len14)
ema15 = ema(src, len15)
ema16 = ema(src, len16)
ema17 = ema(src, len17)
ema18 = ema(src, len18)
ema19 = ema(src, len19)
ema20 = ema(src, len20)
ema21 = ema(src, len21)
ema22 = ema(src, len22)

//EMA 200
ema23 = ema(src, len23)

//Fast EMA Color Rules
colfastL = (ema1 > ema2 and ema2 > ema3 and ema3 > ema4 and ema4 > ema5 and ema5 > ema6 and ema6 > ema7)
colfastS = (ema1 < ema2 and ema2 < ema3 and ema3 < ema4 and ema4 < ema5 and ema5 < ema6 and ema6 < ema7)
//Slow EMA Color Rules
colslowL = ema8 > ema9 and ema9 > ema10 and ema10 > ema11 and ema11 > ema12 and ema12 > ema13 and ema13 > ema14 and ema14 > ema15 and ema15 > ema16 and ema16 > ema17 and ema17 > ema18 and ema18 > ema19 and ema19 > ema20 and ema20 > ema21 and ema21 > ema22
colslowS = ema8 < ema9 and ema9 < ema10 and ema10 < ema11 and ema11 < ema12 and ema12 < ema13 and ema13 < ema14 and ema14 < ema15 and ema15 < ema16 and ema16 < ema17 and ema17 < ema18 and ema18 < ema19 and ema19 < ema20 and ema20 < ema21 and ema21 < ema22 
//Fast EMA Final Color Rules
colFinal = colfastL and colslowL? aqua : colfastS and colslowS? orange : gray
//Slow EMA Final Color Rules
colFinal2 = colslowL  ? lime : colslowS ? red : gray
//Fast EMA Plots
p1=plot(ema1, title="Fast EMA 1", style=line, linewidth=2, color=colFinal)
plot(ema2, title="Fast EMA 2", style=line, linewidth=1, color=colFinal)
plot(ema3, title="Fast EMA 3", style=line, linewidth=1, color=colFinal)
plot(ema4, title="Fast EMA 4", style=line, linewidth=1, color=colFinal)
plot(ema5, title="Fast EMA 5", style=line, linewidth=1, color=colFinal)
plot(ema6, title="Fast EMA 6", style=line, linewidth=1, color=colFinal)
p2=plot(ema7, title="Fast EMA 7", style=line, linewidth=2, color=colFinal)

//Slow EMA Plots
p3=plot(ema8, title="Slow EMA 8", style=line, linewidth=1, color=colFinal2)
plot(ema9, title="Slow EMA 9", style=line, linewidth=1, color=colFinal2)
plot(ema10, title="Slow EMA 10", style=line, linewidth=1, color=colFinal2)
plot(ema11, title="Slow EMA 11", style=line, linewidth=1, color=colFinal2)
plot(ema12, title="Slow EMA 12", style=line, linewidth=1, color=colFinal2)
plot(ema13, title="Slow EMA 13", style=line, linewidth=1, color=colFinal2)
plot(ema14, title="Slow EMA 14", style=line, linewidth=1, color=colFinal2)
plot(ema15, title="Slow EMA 15", style=line, linewidth=1, color=colFinal2)
plot(ema16, title="Slow EMA 16", style=line, linewidth=1, color=colFinal2)
plot(ema17, title="Slow EMA 17", style=line, linewidth=1, color=colFinal2)
plot(ema18, title="Slow EMA 18", style=line, linewidth=1, color=colFinal2)
plot(ema19, title="Slow EMA 19", style=line, linewidth=1, color=colFinal2)
plot(ema20, title="Slow EMA 20", style=line, linewidth=1, color=colFinal2)
plot(ema21, title="Slow EMA 21", style=line, linewidth=1, color=colFinal2)
plot(ema22, title="Slow EMA 22", style=line, linewidth=2, color=colFinal2)
p4=plot(ema23, title="EMA 200", style=line, linewidth=2)


// Strategy Center
enterLong = colfastL and colslowL
exitLong = not colfastL

if testPeriod()
    strategy.entry("WY Long", strategy.long, when=enterLong, comment="WY Long")
else
    strategy.cancel(id="WY Long")

if testPeriod()
    strategy.close("WY Long", when=exitLong)

Lebih banyak