Die Verlagerung von Vegas Channel Crossover Strategie

Schriftsteller:ChaoZhang, Datum: 2024-01-02 10:53:06
Tags:

img

Die Kernidee dieser Strategie besteht darin, die kurzfristige, mittelfristige und langfristige Trendrichtung von Aktien auf der Grundlage von EMAs mit verschiedenen Zyklen wie 36, 143, 169 zu bestimmen, kombiniert mit dem MACD-Indikator, um Kauf- und Verkaufssignale auszugeben.

Der spezifische Mechanismus der Vegas-Tunnel-Strategie:

  1. Verwenden Sie die EMA 36 und EMA 43 zur Beurteilung des kurzfristigen Trends, sie bilden den roten Kanal;
  2. EMA 144 und EMA 169 werden verwendet, um ein mittelfristiges Trendbeurteilungsverfahren zu erstellen. Sie bilden den grünen Kanal.
  3. Verwenden Sie EMA576 und EMA676 zur langfristigen Trendbeurteilung, sie bilden den grauen Kanal;
  4. Wenn der Preis auf den oben genannten EMA-Linien steht, gehen Sie lang, kombiniert mit dem MACD-Indikator, der als Kaufsignal durch die Achse 0 nach oben geht;
  5. Wenn der Preis unter die oben genannten EMA-Linien bricht, wird als Verkaufssignal kurz gehandelt, wobei der MACD-Indikator durch die Achse 0 nach unten bricht.
  6. Gemäß dem EMA-Linien-Durchbruch sind drei Strategien definiert, kurz-, mittel- und langfristig, die unterschiedlichen Haltungszeiten entsprechen.

Vorteile dieser Strategie:

  1. Kombination von drei kurzen, mittleren und langen Kanälen, um die Trendrichtung zu beurteilen, relativ stabil;
  2. Der Vegas Tunnel ist intuitiv, um den Trend zu bestimmen.
  3. Der MACD hilft, bessere Kauf- und Verkaufszeiten zu erfassen;
  4. Aufgeteilt in drei Kurz-, Mittel- und Langzeitstrategien für flexiblere Operationen.

Hauptrisiken:

  1. Wenn die Preise stark schwanken, fallen die EMA-Linien zurück, was zu Fehleinschätzungen führt.
  2. Wenn auf drei Kanälen inkonsistente Signale angezeigt werden, besteht die Gefahr eines Fehlbetriebs.
  3. Minutendiagrammoperationen erfordern eine stärkere psychologische Ausdauer.

Methoden zur Bewältigung:

  1. Anpassung des EMA-Zyklus an die aktuellen Marktmerkmale;
  2. Anpassung der Positionsgröße im Voraus, um Einzelverluste zu begrenzen.

Optimierungsraum:

  1. Die Fähigkeit der Vegas-Tunnels zur Trendbeurteilung muss verbessert werden, Bollinger-Bänder können hinzugefügt werden.
  2. MACD funktioniert schlecht für seitliche Märkte, Indikatoren wie KD und RSI können bessere Optionen sein;
  3. Hinzufügen von Stop-Loss-Richtlinien, z. B. Stop-Loss, wenn der Schlusskurs die wichtigsten EMA-Linien bricht;
  4. Kurzer ETF zur Absicherung, wenn ein Aktienlimit-Up und -Down größere Auswirkungen hat.

/*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")

Mehr