Стратегия "Супер Тренд V"

Автор:Чао Чжан, Дата: 2023-10-18 12:35:53
Тэги:

img

Обзор

Стратегия Super Trend V представляет собой краткосрочную торговую стратегию, основанную на скользящих средних и стандартных отклонениях. Она использует индикатор Super Trend для определения направления тренда цены и сочетает в себе поддержку и сопротивление, сформированные скользящими средними, чтобы выйти на рынок. Между тем, она использует стандартный отклонение для прогнозирования потенциальных зон поддержки и сопротивления цены и устанавливает стоп-лосс и диапазон цены прибыли для реализации трендоустойчивой и эффективной краткосрочной торговой стратегии.

Логика стратегии

Во-первых, эта стратегия рассчитывает индикатор Super Trend. Индикатор Super Trend использует взаимосвязь между ATR и ценой для определения направления тренда. Когда цена выше восходящего тренда, она быстрый. Когда цена ниже понижающего тренда, она медвежий.

Затем он рассчитывает EMA цены и EMA открытой цены. Когда цена пересекает EMA и выше, чем EMA открытой цены, это сигнал покупки. Когда цена пересекает EMA и ниже, чем EMA открытой цены, это сигнал продажи.

Затем он использует стандартное отклонение для расчета верхних и нижних полос ценового канала и выполняет сглаживающую обработку. Когда цена проходит через верхнюю полосу стандартного отклонения, это сигнал остановки потери. Когда цена проходит через нижнюю полосу стандартного отклонения, это сигнал получения прибыли.

Наконец, он объединяет скользящие средние различных временных рамок для определения направления тренда, а также индикатор Super Trend для формирования стабильного суждения о тренде.

Преимущества стратегии

  • Использование индикатора Super Trend для определения направления ценового тренда, избегая потерь, вызванных изменением тренда
  • Движущиеся средние в сочетании с открытой ценой помогают определить сроки входа, избегая ложных распределений
  • Канал стандартного отклонения прогнозирует потенциальные зоны поддержки и сопротивления цены для остановки потерь и получения прибыли
  • Сочетание нескольких временных рамок улучшает стабильность оценки тренда

Риски стратегии

  • Индикатор Super Trend имеет отстающий эффект, может пропустить точки изменения тренда
  • Кроссовры скользящих средних имеют задерживающий эффект, время входа может быть неточным
  • Диапазон канала стандартного отклонения слишком фиксирован, чтобы отражать колебания рынка в реальном времени
  • Суждение на основе нескольких временных рамок может противоречить друг другу

Управление рисками:

  • Сократить параметры Super Trend должным образом для повышения чувствительности
  • Оптимизировать периоды скользящих средних или добавить другие показатели для определения входа
  • Динамическое регулирование канала стандартного отклонения в соответствии с рынком
  • Определить четкую логику для решения различных временных рамок для решения конфликтов

Руководство по оптимизации

  • Оптимизируйте параметры Super Trend, чтобы найти лучшую комбинацию
  • Попробуйте другие показатели в сочетании с скользящими средними для определения входа
  • Попробуйте динамическое регулирование канала стандартного отклонения
  • Проверьте различные комбинации с несколькими временными рамками, чтобы найти лучшее совпадение
  • Оптимизировать стоп-лосс и стратегии получения прибыли для улучшения пространства прибыли

Заключение

Стратегия Super Trend V объединяет преимущества тренда, скользящей средней, канала стандартного отклонения и других индикаторов для достижения стабильного суждения о тренде, правильного времени входа и остановки потерь и получения прибыли на основе ценовых зон. Оптимизируя параметры, индикаторы, остановку потерь и получение прибыли и т. Д., Она может улучшить стабильность и прибыльность стратегии.


/*backtest
start: 2022-10-11 00:00:00
end: 2023-10-17 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// © theCrypster 2020

//@version=4
strategy(title = "Super trend V Strategy version", overlay = true, pyramiding=1,initial_capital = 1000, default_qty_type= strategy.percent_of_equity, default_qty_value = 100, calc_on_order_fills=false, slippage=0,commission_type=strategy.commission.percent,commission_value=0.075)
strat_dir_input = input(title="Strategy Direction", defval="long", options=["long", "short", "all"])
strat_dir_value = strat_dir_input == "long" ? strategy.direction.long : strat_dir_input == "short" ? strategy.direction.short : strategy.direction.all
strategy.risk.allow_entry_in(strat_dir_value)
hilow = ((high - low)*100)
openclose = ((close - open)*100)
vol = (volume / hilow)
spreadvol = (openclose * vol)
VPT = spreadvol + cum(spreadvol)
window_len = 28

v_len = 14
price_spread = stdev(high-low, window_len)

v =  spreadvol + cum(spreadvol)
smooth = sma(v, v_len)
v_spread = stdev(v - smooth, window_len)
shadow = (v - smooth) / v_spread * price_spread

out = shadow > 0 ? high + shadow : low + shadow
//
src = out
src1=open
src2=low
src3=high
tf =input(720)
len = timeframe.isintraday and timeframe.multiplier >= 1 ? 
   tf / timeframe.multiplier * 7 : 
   timeframe.isintraday and timeframe.multiplier < 60 ? 
   60 / timeframe.multiplier * 24 * 7 : 7

c = ema(src, len)
plot(c,color=color.red)
o = ema(src1,len)
plot(o,color=color.blue)
//h = ema(src3,len)
//l=ema(src2,len)
//
col=c > o? color.lime : color.orange
vis = true
vl = c
ll = o
m1 = plot(vl, color=col, linewidth=1, transp=60)
m2 = plot(vis ? ll : na,  color=col, linewidth=2, transp=80)

fill(m1, m2,  color=col, transp=70)
//

vpt=ema(out,len)

// INPUTS //
st_mult   = input(1,   title = 'SuperTrend Multiplier', minval = 0, maxval = 100, step = 0.01)
st_period = input(10, title = 'SuperTrend Period',     minval = 1)

// CALCULATIONS //
up_lev = vpt - (st_mult * atr(st_period))
dn_lev = vpt + (st_mult * atr(st_period))

up_trend   = 0.0
up_trend   := close[1] > up_trend[1]   ? max(up_lev, up_trend[1])   : up_lev

down_trend = 0.0
down_trend := close[1] < down_trend[1] ? min(dn_lev, down_trend[1]) : dn_lev

// Calculate trend var
trend = 0
trend := close > down_trend[1] ? 1: close < up_trend[1] ? -1 : nz(trend[1], 1)

// Calculate SuperTrend Line
st_line = trend ==1 ? up_trend : down_trend

// Plotting
plot(st_line[1], color = trend == 1 ? color.green : color.red , style = plot.style_cross, linewidth = 2, title = "SuperTrend")
buy=crossover( close, st_line) and close>o
sell=crossunder(close, st_line) and close<o
//plotshape(crossover( close, st_line), location = location.belowbar, color = color.green,size=size.tiny)
//plotshape(crossunder(close, st_line), location = location.abovebar, color = color.red,size=size.tiny)
plotshape(buy, title="buy", text="Buy", color=color.green, style=shape.labelup, location=location.belowbar, size=size.small, textcolor=color.white, transp=0)  //plot for buy icon
plotshape(sell, title="sell", text="Sell", color=color.red, style=shape.labeldown, location=location.abovebar, size=size.small, textcolor=color.white, transp=0)  //plot for sell icon


//
multiplier = input(title="TP VWAP Deviation", type=input.float, defval=2, minval=1)
src5 = vwap
len5 = input(title="TP length", defval=150, minval=1)
offset = 0

calcSlope(src5, len5) =>
    sumX = 0.0
    sumY = 0.0
    sumXSqr = 0.0
    sumXY = 0.0
    for i = 1 to len5
        val = src5[len5-i]
        per = i + 1.0
        sumX := sumX + per
        sumY := sumY + val
        sumXSqr := sumXSqr + per * per
        sumXY := sumXY + val * per
        
        
    slope = (len5 * sumXY - sumX * sumY) / (len5 * sumXSqr - sumX * sumX)
    average = sumY / len5
    intercept = average - slope * sumX / len5 + slope
    [slope, average, intercept]

var float tmp = na
[s, a, i] = calcSlope(src5, len5)

vwap1=(i + s * (len5 - offset))
sdev = stdev(vwap, len5)
dev = multiplier * sdev
top=vwap1+dev
bott=vwap1-dev

//
z1 = vwap1 + dev
x1 = vwap1 - dev

low1 = crossover(close, x1)  
high1 = crossunder(close, z1) 

plotshape(low1, title="low", text="TP", color=color.red, style=shape.labelup, location=location.belowbar, size=size.small, textcolor=color.white, transp=0)  //plot for buy icon
plotshape(high1, title="high", text="TP", color=color.green, style=shape.labeldown, location=location.abovebar, size=size.small, textcolor=color.white, transp=0)  //plot for sell icon



//
// Testing Start dates
testStartYear = input(2016, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
//Stop date if you want to use a specific range of dates
testStopYear = input(2030, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)


testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false

l = buy
s1 = sell
        
if l and testPeriod()
    strategy.entry("buy", strategy.long)
if s1 and testPeriod()
    strategy.entry("sell", strategy.short)



Больше