슈퍼트렌드 채널에 기반한 양자 거래 전략

저자:차오장, 날짜: 2024-02-05 13:57:28
태그:

img

전반적인 설명

이 전략은 자동화 된 양 거래를 실현하기 위해 슈퍼 트렌드 채널 지표에 기반한 엔트리 및 출구 신호를 생성합니다. 슈퍼 트렌드 채널 지표는 트렌드 방향을 결정하기 위해 브레이크아웃 포인트와 지원 / 저항 수준을 명확하게 식별 할 수 있습니다. 이 전략은 긴 및 짧은 거래를 수행하는 이 지표의 장점을 통합합니다.

전략 원칙

이 전략은 ATR와 돈치안 채널을 사용하여 긴 포지션과 짧은 포지션에 대한 두 개의 스톱 로스 라인을 계산합니다. 구체적으로, ATR 기간과 멀티플라이서 매개 변수를 사용하여 ATR 값을 계산하고 가장 높은 최고와 가장 낮은 최저의 평균에서 더하고 빼어 긴 및 짧은 스톱 로스 라인을 얻습니다. 닫기 가격이 긴 스톱 로스 라인을 상향으로 넘으면 긴 신호가 생성됩니다. 닫기 가격이 짧은 스톱 로스 라인을 아래로 넘으면 짧은 신호가 유발됩니다.

롱 또는 쇼트 포지션을 취한 후, 스톱-러스 라인은 수익을 잠금하기 위해 동적으로 업데이트됩니다. 새로운 스톱-러스 라인은 이전보다 낮거나 높지 않을 것이며, 스톱-러스 침투를 피합니다. 현재와 이전 스톱-러스 라인 사이에 새로운 높은 또는 낮은 것이 나타날 때, 스톱-러스 라인은 최신 가격에 조정됩니다.

이점 분석

이 전략의 가장 큰 장점은 슈퍼 트렌드 채널 지표가 트렌드 방향과 주요 지원 / 저항 수준을 명확하게 식별 할 수 있다는 것입니다. 동적인 ATR 스톱 로스와 함께 단일 거래 손실을 효과적으로 제어 할 수 있습니다.

특히, 슈퍼 트렌드 채널 지표의 두 개의 스톱 로스 라인은 포지션 비용 기반과 최신 지원/ 저항을 나타냅니다. 그들은 엔트리와 출구에 대한 매우 명확한 지침을 제공합니다. 한편, 스톱 로스 라인은 수익을 잠금하고 스톱 로스 침투를 방지하기 위해 동적으로 업데이트됩니다.

일반적으로, 이 전략은 트렌드가 결정될 때 적시에 시작되며, 동적 스톱 로스를 통해 위험을 제어하여 비교적 견고한 양적 거래 전략이 됩니다.

위험 분석

이 전략의 주요 위험은 스톱 로스 침투 가능성에 있다. 가격이 격렬하게 변동할 때, 새로운 스톱 로스 라인은 이전보다 낮거나 높을 수 있으며, 스톱 로스 침투와 손실 증가로 이어질 수 있다.

또한, 슈퍼 트렌드 채널 지표에 의해 생성 된 엔트리 신호는 범위 시장에서 잘 작동하지 않으며 때때로 잘못된 거래로 이어집니다. 전략을 활성화하기 전에 트렌드 방향을 결정하기 위해 수동 개입이 필요합니다.

최적화 방향

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

  1. ATR 기간과 멀티플리커 매개 변수를 최적화하여 다양한 값을 백테스팅하고 수익률과 샤프 비율과 같은 메트릭을 분석하여 최상의 조합을 찾습니다.

  2. 신호 필터링을 위한 다른 지표를 추가하여 잘못된 입력을 피합니다. 이동 평균, 볼링거 밴드 등은 트렌드 방향을 결정하는 데 사용될 수 있습니다.

  3. 거래량 지표를 포함하여 스톱 로스 포지션을 정밀 조정합니다. 수익을 추가로 차단하기 위해 거래량 급증에 따라 스톱 로스 라인을 조정할 수 있습니다.

  4. 적응적 매개 변수 최적화를 위한 머신러닝 모델을 도입한다. RNN 및 LSTM와 같은 기술을 활용하여 최적 매개 변수 값을 동적으로 예측할 수 있다.

결론

이 전략은 트렌드 방향과 상대적으로 높은 승률에 대한 명확한 판단과 함께 슈퍼 트렌드 채널 지표에서 출발합니다. 또한 단일 거래 손실을 제어하기 위해 동적 ATR 추적 스톱 로스를 적용합니다. 매개 변수 최적화, 지표 최적화 등을 통해 성능을 더욱 향상시킬 수 있습니다. 일반적으로 자동 양 거래에 적합한 강력한 전략입니다.


/*backtest
start: 2024-01-05 00:00:00
end: 2024-02-04 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//EU ESCREVI ISSO TUDO, PARA FICAR BEM CLARO

strategy("SuperTrend Strategy", overlay=true)


//AQUI OS INPUTS PARA A SUPERTREND
length = input(title="ATR Period", type=input.integer, defval=7)
mult = input(title="ATR Multiplier", type=input.float, step=0.1, defval=7)
showLabels = input(title="Show Buy/Sell Labels ?", type=input.bool, defval=true)

//AQUI O CALCULO DO ATR STOPS
atr = mult * atr(length)



//AQUI A TRANSFORMAÇÃO DO ATR STOPS EM SUPERTREND
//-
//A LÓGICA PARA LONGSTOP
longStop = hl2 - atr
longStopPrev = nz(longStop[1], longStop)
longStop := close[1] > longStopPrev ? max(longStop, longStopPrev) : longStop

//A LÓGICA PARA SELLSTOP
shortStop = hl2 + atr
shortStopPrev = nz(shortStop[1], shortStop)
shortStop := close[1] < shortStopPrev ? min(shortStop, shortStopPrev) : shortStop


//DIREÇÃO DO INDICADOR
dir = 1
dir := nz(dir[1], dir)
dir := dir == -1 and close > shortStopPrev ? 1 : 
   dir == 1 and close < longStopPrev ? -1 : dir


//DEFININDO AS CORES DAS LINHAS DA SUPERTREND
longColor = color.lime
shortColor = color.red


//PLOTANDO NO GRÁFICO A SUPERTREND E A ESTRATÉGIA
plot(dir == 1 ? longStop : na, title="Long Stop", style=plot.style_linebr, linewidth=3, color=longColor)
buySignal = dir == 1 and dir[1] == -1
plot(dir == 1 ? na : shortStop, title="Short Stop", style=plot.style_linebr, linewidth=3, color=shortColor)
sellSignal = dir == -1 and dir[1] == 1

//DEFININDO AS FUNÇÕES DE COMPRA E VENDA
strategy.entry("long", strategy.long, when = buySignal)
strategy.entry("short", strategy.short, when = sellSignal)




더 많은