Memindahkan Strategi Crossover Saluran Vegas

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

img

Idea utama strategi ini adalah untuk menentukan arah trend jangka pendek, sederhana dan jangka panjang saham berdasarkan EMA dengan kitaran yang berbeza seperti 36, 143, 169, digabungkan dengan penunjuk MACD untuk mengeluarkan isyarat beli dan jual. Khususnya, dalam jangka pendek, EMA 5 dan 10 hari digunakan untuk menilai, dalam jangka pertengahan, EMA 20 dan 60 hari digunakan untuk menilai, dalam jangka panjang, EMA 120 dan 250 hari digunakan untuk menilai, apabila EMA jangka pendek melintasi EMA jangka menengah ke atas, ia bullish, jika tidak ia bearish; penunjuk MACD isyarat bullish dan bearish digunakan untuk menentukan masa membeli dan menjual.

Mekanisme khusus strategi terowong Vegas:

  1. Gunakan EMA 36 dan EMA 43 untuk membentuk penilaian trend jangka pendek, mereka membentuk saluran merah;
  2. Gunakan EMA 144 dan EMA 169 untuk membentuk penilaian trend jangka sederhana, mereka membentuk saluran hijau;
  3. Gunakan EMA576 dan EMA676 untuk membentuk penilaian trend jangka panjang, mereka membentuk saluran kelabu;
  4. Apabila harga berada pada garis EMA di atas, pergi panjang, digabungkan dengan penunjuk MACD yang menembusi paksi 0 ke atas sebagai isyarat membeli;
  5. Apabila harga memecahkan di bawah garis EMA di atas, pergi pendek, digabungkan dengan penunjuk MACD memecahkan melalui paksi 0 ke bawah sebagai isyarat jualan;
  6. Menurut garis EMA, tiga strategi ditakrifkan, pendek, sederhana dan jangka panjang masing-masing, yang sepadan dengan tempoh penahanan yang berbeza.

Kelebihan strategi ini:

  1. Menggabungkan tiga saluran pendek, sederhana dan panjang untuk menilai arah trend, agak stabil;
  2. Terowong Vegas adalah intuitif untuk menentukan trend;
  3. MACD membantu menangkap masa membeli dan menjual yang lebih baik;
  4. Dibahagi kepada tiga strategi jangka pendek, sederhana dan panjang untuk operasi yang lebih fleksibel.

Risiko utama:

  1. Apabila harga turun naik dengan liar, garis EMA berundur, mungkin membuat pertimbangan yang salah;
  2. Apabila tiga saluran menunjukkan isyarat yang tidak konsisten, terdapat risiko operasi yang salah;
  3. Operasi carta minit memerlukan ketahanan psikologi yang lebih kuat.

Kaedah mengatasi:

  1. Penyesuaian kitaran EMA untuk lebih sesuai dengan ciri pasaran semasa;
  2. Sesuaikan saiz kedudukan terlebih dahulu untuk menghadkan kerugian tunggal.

Ruang pengoptimuman:

  1. terowong Vegas keupayaan penilaian trend perlu ditingkatkan, jalur Bollinger boleh ditambah;
  2. MACD berfungsi dengan buruk untuk pasaran sampingan, penunjuk seperti KD dan RSI mungkin menjadi pilihan yang lebih baik;
  3. Tambah dasar stop loss, seperti stop loss apabila harga penutupan melanggar garis EMA utama;
  4. ETF pendek untuk lindung nilai diberikan A saham had-up dan penurunan yang mempunyai kesan 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 lanjut