슈퍼 Z 양적 트렌드 전략

저자:차오장, 날짜: 2023-11-27 18:41:59
태그:

img

전반적인 설명

수량 트렌드 전략 (Super Z quantitative trend strategy) 은 양적 지표에 기반한 트렌드 추적 전략이다. 이 전략은 트렌드를 결정하고 추적하기 위해 슈퍼 트렌드 지표와 결합된 사용자 지정 지표를 사용합니다.

전략 원칙

이 전략의 핵심 지표는 사용자 지정 양적 지표 VHMA입니다. VHMA 지표는 허스 이동 평균 라인을 기반으로 계산됩니다. 허스 MA를 매끄럽게하기 위해 제곱근 함수를 적용하면 매끄러운 곡선을 형성합니다. VHMA 곡선은 가격 트렌드의 방향을 판단 할 수 있습니다. VHMA가 상승하면 가격이 상승 추세를 나타냅니다. 떨어지면 가격이 하락 추세를 나타냅니다.

이 전략은 또한 슈퍼 트렌드 지표를 포함합니다. 슈퍼 트렌드 지표는 트렌드 방향을 결정하는 데 VHMA 지표를 돕기 위해 더 긴 주기의 가격 추세를 발견 할 수 있습니다. 가격이 슈퍼 트렌드 라인을 통과하면 트렌드 역전을 나타냅니다.

따라서이 전략은 VHMA 지표를 사용하여 단기 트렌드 방향을 판단하고 슈퍼 트렌드 지표에 의해 장기 트렌드 전환점을 결정하여 전체 트렌드의 추적을 실현합니다. 특정 거래 논리는 슈퍼 트렌드 라인을 뚫을 때 거래 신호를 발행하는 것입니다.

이점 분석

이 전략은 다음과 같은 장점을 가지고 있습니다.

  1. VHMA 지표는 매우 부드럽고 잘못된 신호를 줄일 수 있습니다. 그것은 정확하고 신뢰할 수있는 경향 방향을 판단 할 수 있습니다.

  2. 슈퍼 트렌드 지표와 결합하면 장기적인 트렌드 반전을 신속하게 발견하고 구매 및 판매 시기를 파악 할 수 있습니다.

  3. 다른 색상의 고체 K선과 홀로 K선을 사용하여 종료 가격과 개시 가격 사이의 크기 관계를 묘사하여 트렌드를 판단하는 데 도움이되는 시각적 지표를 형성합니다.

  4. 다중 타임프레임 디자인을 채택하고, 효율적인 필터링을 달성하기 위해 상위 타임프레임에서 트렌드 방향을 결정하고, 상위 타임프레임에서 거래 신호를 발행할 수 있습니다.

  5. 전략 매개 변수는 안정성을 위해 최적화되어 있으며 다양한 시장 환경에 적합합니다.

위험 분석

이 전략은 또한 다음과 같은 위험을 가지고 있습니다.

  1. 양적 지표는 백트테스트 효과를 가지고 있으며 실제 효과는 백트테스트보다 약할 수 있습니다.

  2. 슈퍼 트렌드 지표 매개 변수를 잘못 설정하면 놓친 거래 기회나 불필요한 거래로 이어질 수 있습니다.

  3. 실제 거래 조건에서도 다중 시간 프레임 디자인은 실패할 수 있습니다.

대책:

  1. 미끄러짐 설정을 높이고 역 테스트 효과를 줄이기 위해 매개 변수를 최적화합니다.

  2. 슈퍼 트렌드 지표 매개 변수를 조정하고 매개 변수 설정을 최적화합니다.

  3. 여러 시간 프레임에 대한 안정성을 보장하기 위해 여러 시간 프레임 일치 방법을 테스트합니다.

최적화 방향

이 전략은 다음과 같은 측면에서 최적화 될 수 있습니다.

  1. VHMA 지표를 대체하기 위해 다른 평형 이동 평균 지표를 시험한다.

  2. 슈퍼 트렌드 지표를 대체하기 위해 다른 트렌드 지표를 시도하십시오.

  3. 기계 학습 모델 훈련 지표 매개 변수를 높여

이러한 최적화 조치는 복잡한 시장 조건에 대한 전략의 적응력을 향상시킬 수 있습니다.

요약

슈퍼 Z 양적 트렌드 전략은 슈퍼 트렌드 지표와 결합한 사용자 지정 트렌드 지표 VHMA를 통해 가격 트렌드의 판단 및 추적을 실현합니다. 전략은 좋은 안정성과 훌륭한 실제 효과를 가지고 있습니다. 지속적인 테스트와 최적화를 통해이 전략은 효율적이고 안정적인 양적 트렌드 추적 전략이 될 가능성이 있습니다.


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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
//Original script
//https://www.tradingview.com/script/wYknDlLx-super-Z/

//@version=4
strategy("Super Z strategy - Thanks to Rafael Zioni", shorttitle="Super Z strategy",overlay=true )
src5 = input(close)
    
tf = input(1440)
len5 = timeframe.isintraday and timeframe.multiplier >= 1 ? 
   tf / timeframe.multiplier * 7 : 
   timeframe.isintraday and timeframe.multiplier < 60 ? 
   60 / timeframe.multiplier * 24 * 7 : 7

ma = ema(src5*volume, len5) / ema(volume, len5)


//script taken from https://www.tradingview.com/script/kChCRRZI-Hull-Moving-Average/

src1 = ma

p(src1, len5) =>
    n = 0.0
    s = 0.0
    for i = 0 to len5 - 1
        w = (len5 - i) * len5
        n := n + w
        s := s + src5[i] * w
    s / n

hm = 2.0 * p(src1, floor(len5 / 2)) - p(src1, len5)
vhma = p(hm, floor(sqrt(len5)))
lineColor = vhma > vhma[1] ? color.lime : color.red
plot(vhma, title="VHMA", color=lineColor ,linewidth=3)
hColor = true,vis = true
hu = hColor ? (vhma > vhma[2] ? #00ff00 : #ff0000) : #ff9800

vl = vhma[0]
ll = vhma[1]
m1 = plot(vl, color=hu, linewidth=1, transp=60)
m2 = plot(vis ? ll : na,  color=hu, linewidth=2, transp=80)

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

b = timeframe.isintraday and timeframe.multiplier >= 1 ? 
   60 / timeframe.multiplier * 7 : 
   timeframe.isintraday and timeframe.multiplier < 60 ? 
   60 / timeframe.multiplier * 24 * 7 : 7



//
res5 = input("D", type=input.resolution)

o = security(syminfo.tickerid, res5, open, barmerge.gaps_off, barmerge.lookahead_on)
c = security(syminfo.tickerid, res5, close, barmerge.gaps_off, barmerge.lookahead_on)
hz = security(syminfo.tickerid, res5, high, barmerge.gaps_off, barmerge.lookahead_on)
l = security(syminfo.tickerid, res5, low, barmerge.gaps_off, barmerge.lookahead_on)



col = c >= o ? color.lime : color.red

ppo = plot(b ? o >= c ? hz : l : o, color=col, title="Open", style=plot.style_stepline, transp=100)
ppc = plot(b ? o <= c ? hz : l : c, color=col, title="Close", style=plot.style_stepline, transp=100)

plot(b and hz > c ? hz : na, color=col, title="High", style=plot.style_circles, linewidth=2,transp=60)
plot(b and l < c ? l : na, color=col, title="Low", style=plot.style_circles,linewidth=2, transp=60)

fill(ppo, ppc, col)

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

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

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

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

// Calculate trend var
trend = 0
trend := c > down_trend[1] ? 1: c < 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( c, st_line)
sell=crossunder(c, st_line)
signal=input(false)

/////////////// Plotting /////////////// 
plotshape(signal and buy, style=shape.triangleup, size=size.normal, location=location.belowbar, color=color.lime)
plotshape(signal and sell, style=shape.triangledown, size=size.normal, location=location.abovebar, color=color.red)


if (buy)
    strategy.entry("My Long Entry Id", strategy.long)

if (sell)
    strategy.entry("My Short Entry Id", strategy.short)

더 많은