슈퍼트렌드채널을 기반으로 한 양적거래전략


생성 날짜: 2024-02-05 13:57:28 마지막으로 수정됨: 2024-02-05 13:57:28
복사: 1 클릭수: 697
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

슈퍼트렌드채널을 기반으로 한 양적거래전략

개요

이 전략은 초 트렌드 채널 지표에 기반하여 엔트리 및 엑시트 신호를 설계하여 자동화 된 수량 거래를 구현합니다. 초 트렌드 채널 지표는 돌파구를 명확하게하고 저항 지점을 지원하여 트렌드 방향을 결정하는 데 도움이됩니다. 이 전략은 이 지표의 장점을 통합하여 장단한 양방향 거래를 수행합니다.

전략 원칙

이 전략은 ATR과 동치안 통로를 사용하여 두 개의 긴 스톱 라인을 계산한다. 구체적으로, ATR 사이클과 ATR 곱하기 변수를 통해 ATR 값을 계산한 다음 최고 가격과 최저 가격의 평균과 더하여 두 개의 긴 스톱 라인을 얻는다.

추가 하락 후, 수익을 잠금하기 위해 실시간으로 스톱 라인을 업데이트합니다. 새로운 스톱 라인은 이전 값보다 낮거나 높지 않으며, 스톱 라인이 뚫리지 않도록합니다. 스톱 라인과 이전 스톱 라인 사이에 새로운 높거나 새로운 낮이가있을 때 스톱 라인을 최신 가격으로 업데이트하십시오.

우위 분석

이 전략의 가장 큰 장점은 초 트렌드 채널 지표가 트렌드 방향과 핵심 지원 저항 지점을 명확하게 판단할 수 있다는 것입니다. ATR 동적 중지 손실과 결합하면 단편 손실을 효과적으로 제어 할 수 있습니다.

특히, 2개의 스톱 라인이 트렌드 채널 지표에 있습니다. 하나는 지주 비용을 나타내고 다른 하나는 최근 지지 또는 압박 지점을 나타냅니다. 이것은 엔트리와 엑시트에 대한 매우 명확한 근거를 제공합니다. 동시에, 스톱 라인은 실시간으로 업데이트되어 수익을 고정시킬 수 있으며 스톱이 뚫리지 않도록 할 수 있습니다.

전체적으로, 이 전략은 트렌드를 확인한 후 적시에 엔트리를 입력하고, 동적으로 스톱로스를 통해 위험을 제어하는, 비교적 안정적인 양적 거래 전략이다.

위험 분석

이 전략의 주요 위험은, 스톱 라인이 뚫릴 수 있는 상황이 있다는 것입니다. 가격이 급격히 변동할 때, 새로운 스톱 라인이 이전 값보다 낮거나 높을 수 있으며, 이로 인해 스톱 라인이 뚫려 손실이 증가합니다.

또한, 위기상황에서, 초트렌드 채널 지표가 생성하는 엔트리 신호는 효과가 좋지 않아 잘못된 거래가 발생할 수 있습니다. 이 경우 트렌드를 판단한 후 전략을 다시 시작하는 인적 개입이 필요합니다.

최적화 방향

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

  1. ATR 주기 및 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)