Memindahkan Vegas Channel Crossover Strategi

Penulis:ChaoZhang, Tanggal: 2024-01-02 10:53:06
Tag:

img

Ide inti dari strategi ini adalah untuk menentukan arah tren jangka pendek, menengah dan panjang saham berdasarkan EMA dengan siklus yang berbeda seperti 36, 143, 169, dikombinasikan dengan indikator MACD untuk mengeluarkan sinyal pembelian dan penjualan. Secara khusus, dalam jangka pendek, EMA 5 dan 10 hari digunakan untuk menilai, dalam jangka menengah, EMA 20 dan 60 hari digunakan untuk menilai, dalam jangka panjang, EMA 120 dan 250 hari digunakan untuk menilai, ketika EMA jangka pendek melintasi EMA jangka menengah ke atas, itu bullish, jika tidak itu bearish; indikator MACD dari sinyal bullish dan bearish digunakan untuk menentukan waktu pembelian dan penjualan.

Mekanisme spesifik dari strategi terowongan Vegas:

  1. Gunakan EMA 36 dan EMA 43 untuk membentuk penilaian tren jangka pendek, mereka membentuk saluran merah;
  2. Gunakan EMA 144 dan EMA 169 untuk membentuk penilaian tren jangka menengah, mereka membentuk saluran hijau;
  3. Gunakan EMA576 dan EMA676 untuk membentuk penilaian tren jangka panjang, mereka membentuk saluran abu-abu;
  4. Ketika harga berada pada garis EMA di atas, pergi panjang, dikombinasikan dengan indikator MACD yang menembus sumbu 0 ke atas sebagai sinyal beli;
  5. Ketika harga menembus garis EMA di atas, pergi pendek, dikombinasikan dengan indikator MACD yang menembus sumbu 0 ke bawah sebagai sinyal jual;
  6. Menurut garis EMA terobosan, tiga strategi didefinisikan, jangka pendek, menengah dan panjang masing-masing, sesuai dengan periode kepemilikan yang berbeda.

Keuntungan dari strategi ini:

  1. Menggabungkan tiga saluran pendek, menengah dan panjang untuk menilai arah tren, relatif stabil;
  2. Terowongan Vegas intuitif untuk menentukan tren;
  3. MACD membantu menangkap waktu pembelian dan penjualan yang lebih baik;
  4. Terbagi menjadi tiga strategi jangka pendek, menengah dan panjang untuk operasi yang lebih fleksibel.

Risiko utama:

  1. Ketika harga berfluktuasi liar, garis EMA tertinggal, cenderung membuat penilaian yang salah;
  2. Ketika tiga saluran menunjukkan sinyal yang tidak konsisten, ada risiko operasi yang salah;
  3. Operasi grafik menit membutuhkan ketahanan psikologis yang lebih kuat.

Metode mengatasi:

  1. Sesuaikan siklus EMA agar lebih sesuai dengan karakteristik pasar saat ini;
  2. Sesuaikan ukuran posisi terlebih dahulu untuk membatasi kerugian tunggal.

Ruang Optimasi:

  1. Capability penghakiman tren Vegas terowongan perlu ditingkatkan, Bollinger band dapat ditambahkan;
  2. MACD bekerja dengan buruk untuk pasar sisi, indikator seperti KD dan RSI mungkin pilihan yang lebih baik;
  3. Tambahkan kebijakan stop loss, seperti stop loss ketika harga penutupan melanggar garis EMA utama;
  4. Short ETF untuk lindung nilai dengan batas-batas saham dan penurunan yang memiliki dampak yang lebih besar.

/*backtest
start: 2022-12-26 00:00:00
end: 2024-01-01 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4

strategy("Vegas Tunnel strategy", overlay=true)
//-------------------------------------------
//-------------------------------------------
// Inputs
useCurrentRes = input(true, title="Use Current Chart Resolution?")
resCustom = input(title="Use Different Timeframe? Uncheck Box Above", type=input.resolution, defval="D")
//tfSet = input(title = "Time Frame", options=["Current","120", "240", "D", "W"], defval="D")
tfSet = useCurrentRes ? timeframe.period : resCustom
maPeriods2 = input(12, "12 EMA")
maPeriods6 = input(240, "240 SMA")
BBlength = input(20, title="BB Length", minval=1)
BBsrc = input(close, title="BB Source")
mult = input(2.0, minval=0.001, maxval=50, title="BB StdDev")
sm2 = security(syminfo.tickerid, tfSet, ema(close, maPeriods2))
sm6 = security(syminfo.tickerid, tfSet, sma(close, maPeriods6))
p2 = plot(sm2, color=color.green, transp=30,  linewidth=2, title="SMA2")
p6 = plot(sm6, color=color.white, transp=30,  linewidth=2, title="SMA6")
//BB
basis = sma(BBsrc, BBlength)
dev = mult * stdev(BBsrc, BBlength)
upper = basis + dev
lower = basis - dev
offset = input(0, "BB Offset", type = input.integer, minval = -500, maxval = 500)
//plot(basis, "Basis", color=color.blue,linewidth, offset = offset)
pBB1 = plot(upper, "Upper", color=color.blue, offset = offset)
pBB2= plot(lower, "Lower", color=color.blue, offset = offset)

//MACD
fast_ma = ema(close, 48)
slow_ma = ema(close, 56)
macd = fast_ma - slow_ma

//vagas隧道
f1=ema(close, 36)
f2=ema(close, 43)
f3=ema(close, 144)
f4=ema(close, 169)
f5=ema(close, 576)
f6=ema(close, 676)
f7=ema(close,2304)
z1=plot(f1,color=color.red, title="ema36",transp=100)
z2=plot(f2,color=color.red, title="ema43",transp=100)
z3=plot(f3,color=color.green, title="ema144",transp=100)
z4=plot(f4,color=color.green, title="ema169",transp=100)
z5=plot(f5,color=color.white, title="ema576",transp=100)
z6=plot(f6,color=color.white, title="ema676",transp=100)
fill(z1, z2, color=color.red,transp=60)
fill(z3, z4, color=color.green,transp=60)
fill(z5, z6, color=color.gray,transp=60)

// Make input options that configure backtest date range
startDate = input(title="Start Date", type=input.integer,
     defval=1, minval=1, maxval=31)
startMonth = input(title="Start Month", type=input.integer,
     defval=1, minval=1, maxval=12)
startYear = input(title="Start Year", type=input.integer,
     defval=2018, minval=1800, maxval=2100)
endDate = input(title="End Date", type=input.integer,
     defval=1, minval=1, maxval=31)
endMonth = input(title="End Month", type=input.integer,
     defval=11, minval=1, maxval=12)
endYear = input(title="End Year", type=input.integer,
     defval=2030, minval=1800, maxval=2100)
// Look if the close time of the current bar
// falls inside the date range
inDateRange =  true

//波段多
if (inDateRange and crossunder(f3,f1))// 
    strategy.entry("buy", strategy.long,1, when=macd>0, comment = "買Long-term")
buyclose=crossunder(f3,f5) 
strategy.close("buy", when = buyclose, comment = "關Long-term")
//多策略1
if (inDateRange and crossover(low , f3) and macd>0 and f3>f6)
    strategy.entry("buy1", strategy.long,100, comment = "買Mid-term")
buyclose1=crossunder(close,upper*0.999) 
if (macd<0 or f3<f6)
    strategy.close("buy1", comment = "關Mid-term")
//strategy.close("buy1",when=cross(basis,close), comment = "關M",qty_percent=50)
strategy.close("buy1", when = buyclose1, comment = "關Mid-term",qty_percent=100)
//多策略3
if (inDateRange and  (macd>0) and crossunder(low,f1) and f1>f4) // 
    strategy.entry("buy3", strategy.long,1, comment = "買Short-term")
buyclose3=crossunder(close,upper*0.999)
if (macd<0 or f1<f4)
    strategy.close("buy3", comment = "關Short-term")
strategy.close("buy3", when = buyclose3, comment = "關Short-term")
//多策略4
if (inDateRange and  (macd>0) and crossunder(low,f5) and f4>f5) // 
    strategy.entry("buy4", strategy.long,1, comment = "買Long-term")
buyclose4=crossunder(close,upper*0.999)
if (macd<0 or f4<f6)
    strategy.close("buy4", comment = "關Long-term")
strategy.close("buy4", when = buyclose4, comment = "關Long-term")
    
//空策略1
if (inDateRange and  (macd<0) and crossunder(high,f1) and f1<f3 and f3<f6) // 
    strategy.entry("sell1", strategy.short,1, comment = "空Short-term")
sellclose1=crossunder(lower*0.999,close)
if (macd>0 or f1>f4)
    strategy.close("sell1", comment = "關空Short-term")
strategy.close("sell1", when = sellclose1, comment = "關空Short-term")
//空策略2
if (inDateRange and  (macd<0) and crossunder(high,f4) and f4<f6) // 
    strategy.entry("sell2", strategy.short,1, comment = "空Mid-term")
sellclose2=crossunder(lower,close)
if (macd>0 or f4>f6)
    strategy.close("sell2", comment = "關空Mid-term")
strategy.close("sell2", when = sellclose2, comment = "關Mid-term")
//空策略3
if (inDateRange and (macd<0) and crossunder(high,f6)) // 
    strategy.entry("sell3", strategy.short,1, comment = "空Long-term")
sellclose3=crossunder(lower,close)
if (macd>0 or f6>f7)
    strategy.close("sell3", comment = "關空Long-term")
strategy.close("sell3", when = sellclose3, comment = "關空Long-term")

Lebih banyak