리소스 로딩... 로딩...

QQE와 RSI를 기반으로 한 장기 단기 신호 전략

저자:차오장, 날짜: 2024-05-27 15:17:45
태그:RSIQQE

img

전반적인 설명

이 전략은 QQE 지표와 RSI 지표에 기초한다. 그것은 긴 짧은 신호 간격을 구성하기 위해 RSI 지표의 평탄한 이동 평균과 동적 오스실레이션 범위를 계산한다. RSI 지표가 상부 레일을 뚫을 때 긴 신호를 생성하고, 하부 레일을 뚫을 때 짧은 신호를 생성한다. 전략의 주요 아이디어는 RSI 지표의 트렌드 특성과 QQE 지표의 변동성 특성을 사용하여 시장 트렌드와 변동성 기회의 변화를 포착하는 것이다.

전략 원칙

  1. 트렌드를 판단하는 기초로 RSI 지표의 평형 이동 평균 RsiMa를 계산합니다.
  2. 변동성을 판단하는 기초로 RSI 지표의 절대적인 오차 값 AtrRsi와 그 평형 이동 평균 MaAtrRsi를 계산합니다.
  3. QQE 인자에 따라 동적 진동 범위를 계산하고 RsiMa와 결합하여 긴 단파 및 단파 신호 간격을 구성합니다.
  4. RSI 지표와 긴 짧은 신호 간격 사이의 관계를 판단하십시오. RSI 지표가 긴 대역을 넘을 때 긴 신호를 생성하고 짧은 대역을 넘을 때 짧은 신호를 생성합니다.
  5. 긴 신호가 발생하면 긴 포지션을 열고 짧은 신호가 발생하면 포지션을 닫습니다.

전략적 장점

  1. 그것은 RSI 지표와 QQE 지표의 특성을 결합하여 시장 추세와 변동의 기회를 더 잘 파악할 수 있습니다.
  2. 이는 시장 변동성의 변화에 적응할 수 있는 신호 간격을 구성하기 위해 동적 오스실레이션 범위를 사용합니다.
  3. 그것은 RSI 지표와 변동성 범위를 부드럽게하여 소음 간섭과 빈번한 거래를 효과적으로 줄입니다.
  4. 논리는 더 적은 매개 변수와 함께 명확하고 추가 최적화 및 개선에 적합합니다.

전략 위험

  1. 변동성 있는 시장과 변동성이 낮은 시장에서는 이 전략의 성능이 이상적이지 않을 수 있습니다.
  2. 명확한 스톱 로스 메커니즘이 없기 때문에 시장이 갑자기 뒤집어지면 더 큰 마감 위험에 직면할 수 있습니다.
  3. 매개 변수 설정은 전략 성과에 더 큰 영향을 미치며 다른 시장과 품종에 따라 조정해야합니다.

전략 최적화 방향

  1. 마감 위험을 통제하기 위해 고정 비율의 마감 손실, ATR 마감 손실 등과 같은 명확한 마감 손실 메커니즘을 도입합니다.
  2. 매개 변수 설정을 최적화합니다. 최적의 매개 변수 조합은 유전 알고리즘, 그리드 검색 및 기타 방법을 통해 찾을 수 있습니다.
  3. 거래 신호를 풍부하게하고 전략의 안정성을 향상시키기 위해 거래량 및 포지션 부피와 같은 다른 지표를 도입하는 것을 고려하십시오.
  4. 변동성 있는 시장에서는 전략의 적응성을 높이기 위해 범위 거래 또는 스윙 거래 논리를 도입하는 것을 고려하십시오.

요약

이 전략은 RSI 지표와 QQE 지표에 기반하여 긴 짧은 신호를 구성하며 트렌드 캡처 및 변동성 파악의 특성을 가지고 있습니다. 전략 논리는 더 적은 매개 변수와 함께 명확하며 추가 최적화 및 개선에 적합합니다. 그러나 전략에는 또한 마감 제어 및 매개 변수 설정과 같은 특정 위험이 있습니다. 향후 전략의 견고성과 수익성을 향상시키기 위해 정지 손실 메커니즘, 매개 변수 최적화, 신호 풍부화 및 다른 시장에 적응력과 같은 측면에서 전략을 최적화 할 수 있습니다.


/*backtest
start: 2023-05-21 00:00:00
end: 2024-05-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/

//@version=4
// modified by swigle
// thanks colinmck

strategy("QQE signals bot", overlay=true)


RSI_Period = input(14, title='RSI Length')
SF = input(5, title='RSI Smoothing')
QQE = input(4.236, title='Fast QQE Factor')
ThreshHold = input(10, title="Thresh-hold")

src = close
Wilders_Period = RSI_Period * 2 - 1

Rsi = rsi(src, RSI_Period)
RsiMa = ema(Rsi, SF)
AtrRsi = abs(RsiMa[1] - RsiMa)
MaAtrRsi = ema(AtrRsi, Wilders_Period)
dar = ema(MaAtrRsi, Wilders_Period) * QQE

longband = 0.0
shortband = 0.0
trend = 0

DeltaFastAtrRsi = dar
RSIndex = RsiMa
newshortband = RSIndex + DeltaFastAtrRsi
newlongband = RSIndex - DeltaFastAtrRsi
longband := RSIndex[1] > longband[1] and RSIndex > longband[1] ? max(longband[1], newlongband) : newlongband
shortband := RSIndex[1] < shortband[1] and RSIndex < shortband[1] ? min(shortband[1], newshortband) : newshortband
cross_1 = cross(longband[1], RSIndex)
trend := cross(RSIndex, shortband[1]) ? 1 : cross_1 ? -1 : nz(trend[1], 1)
FastAtrRsiTL = trend == 1 ? longband : shortband

// Find all the QQE Crosses

QQExlong = 0
QQExlong := nz(QQExlong[1])
QQExshort = 0
QQExshort := nz(QQExshort[1])
QQExlong := FastAtrRsiTL < RSIndex ? QQExlong + 1 : 0
QQExshort := FastAtrRsiTL > RSIndex ? QQExshort + 1 : 0

//Conditions

qqeLong = QQExlong == 1 ? FastAtrRsiTL[1] - 50 : na
qqeShort = QQExshort == 1 ? FastAtrRsiTL[1] - 50 : na

// Plotting

plotshape(qqeLong, title="QQE long", text="Long", textcolor=color.white, style=shape.labelup, location=location.belowbar, color=color.green, size=size.tiny)
plotshape(qqeShort, title="QQE short", text="Short", textcolor=color.white, style=shape.labeldown, location=location.abovebar, color=color.red, size=size.tiny)

// trade

//if qqeLong > 0
strategy.entry("buy long", strategy.long, 100, when=qqeLong)
    
if qqeShort > 0
    strategy.close("buy long")
    // strategy.exit("close_position", "buy long", loss=1000)
    // strategy.entry("sell", strategy.short, 1, when=strategy.position_size > 0)
    


관련

더 많은