Стратегия пересечения канала Mobile Vegas


Дата создания: 2024-01-02 10:53:06 Последнее изменение: 2024-01-02 10:53:06
Копировать: 0 Количество просмотров: 1205
1
Подписаться
1621
Подписчики

Стратегия пересечения канала Mobile Vegas

Основная идея этой стратегии заключается в том, чтобы оценить краткосрочные и долгосрочные тенденции акций на основе средних линий разных периодов, таких как EMA 36,143,169, в сочетании с MACD, чтобы дать сигнал о продаже. В частности, краткосрочные оценки на 5-10 дней EMA, среднесрочные оценки на 20-60 дней EMA, долгосрочные оценки на 120-250 дней EMA, когда краткосрочные EMA пересекают среднесрочную EMA, смотрят вниз, смотрят вниз; в сочетании с пустыми показателями MACD, чтобы определить время покупки и продажи.

В частности, он приводит следующие примеры:

  1. использование EMA36 и EMA43 для формирования краткосрочных тенденций, которые составляют красный канал;
  2. использование EMA144 и EMA169 для составления среднесрочных оценок тенденций, которые составляют зеленый коридор;
  3. использование EMA576 и EMA676 для формирования долгосрочных тенденций, которые составляют серое направление;
  4. Это может быть сделано, когда цены находятся на уровне EMA, а затем в сочетании с MACD индикатором вверх по оси 0 посылают сигнал покупки;
  5. При попадании цены в пределах средних линий EMA можно сделать пробел, а затем в сочетании с MACD индикатором вниз прорваться на 0-ую ось, чтобы отправить сигнал продажи.
  6. В зависимости от проходящего цикла средней линии EMA, три торговые стратегии разделены на короткие и длинные, соответственно, на различные периоды удержания позиций.

Преимущества этой стратегии заключаются в следующем:

  1. В то же время, в сочетании с коротким, средним и длинным тремя каналами, направление тенденции оценивается как относительно стабильное.
  2. Vegas Channel прозрачен, интуитивно понятен и легко распознает тенденции.
  3. В сочетании с MACD можно вычислить наиболее подходящее время для покупки или продажи.
  4. Это позволяет более гибко работать.

Основные риски этой стратегии:

  1. При резких колебаниях цен на акции, средняя линия EMA создает задержку, и есть вероятность ошибочного суждения.
  2. В случае несогласованности суждений в трех каналах существует риск ошибочной операции.
  3. Для работы с часовой картой требуется большая психологическая выносливость.

Что делать?

  1. Средний цикл EMA может быть скорректирован в соответствии с текущими рыночными характеристиками.
  2. До сделки корректируйте пропорции позиций, чтобы контролировать одноразовые потери.

В этой стратегии есть много возможностей для оптимизации:

  1. Недостаточно различать тенденции в Vegas Channel, можно ввести вспомогательные суждения в Burling Channel.
  2. MACD не очень эффективен при колебаниях в диапазоне, его можно заменить на KD, RSI и другие индикаторы.
  3. Добавление стратегии остановки убытков, например, активная остановка убытков при закрытии цены ниже критической EMA.
  4. Влияние падения акций A на рынок может быть серьезным, поэтому следует рассмотреть возможность хеджирования котировки ETF.
Исходный код стратегии
/*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")