이 전략은 동적 거래자 지수 ((TDI) 를 주요 기술 지표로 사용하여, 다양한 주기의 이동 평균과 결합하여 거래 신호를 생성한다. 이 전략은 과매매 시의 역전 기회를 발견하는 것을 목적으로 한다.
이 전략은 먼저 13주기 길이의 RSI값을 계산한다. 그리고 RSI의 34주기 간단한 이동 평균을 계산한다. 그리고 RSI의 34주기 표준 차이를 1.6185번으로 하향으로 계산한다.
그리고 RSI의 2주기 길이의 빠른 MA와 7주기 길이의 느린 MA를 계산합니다. 그리고 더 높은 주기를 통해 이러한 지표의 역사값을 얻습니다. 빠른 MA가 느린 MA를 위쪽에서 통과하면 구매 신호가 발생하고 빠른 MA가 느린 MA를 아래쪽에서 통과하면 판매 신호가 발생합니다.
이 전략은 RSI 지표의 mean reversion 특성을 활용하여 동적 지표 implement 반전 거래. RSI의 상하계는 과매매 영역을 반영하고, 중하계는 평균 가격을 반영한다. 빠른 느린 MA의 교차는 역동적인 양의 변화와 반전 기회를 반영한다. 전체적으로, 이 전략은 반전 지점의 정밀도를 캡처하고, 반전 통제가 이상적이다.
구체적으로, RSI 위아래는 합리적인 초매 초매한 경계를 설정하여 적절한 시기에 비정상적인 상황을 발견하는 데 도움이됩니다. 중간 경로는 균형 가격을 파악합니다. 빠른 MA는 단기간의 소음을 필터링하고, 느린 MA는 중기간의 추세를 판단합니다. 둘을 함께 사용하면 역전 기회를 효과적으로 식별 할 수 있습니다. 또한, 다른 주기적 지표의 조합이 사용되어 여러 시간 척도에서 전략을 확인 할 수 있으며, 잘못된 판단의 위험을 줄입니다.
이 전략은 주로 역전 거래에 기반하며, 일정 시간 효율성 위험이 있다. 시장이 부진하는 것과 같은 장기적인 비합리적인 확장이 발생하면 이 전략은 연속적인 손실을 초래한다. 또한, 빠른 속도로 MA를 적절하게 설정하지 않으면 일부 역전 기회를 놓치거나 잘못된 판단을 일으킬 수 있다.
위와 같은 위험을 제어하기 위해, 적절한 MA 주기를 조정하거나, 손실 제도를 증가시키는 것이 좋습니다. 시장이 비합리적인 단계에 진입했을 때, 포지션을 줄이거나 심지어 거래를 중단해야합니다. 일반적으로 특정 시장 환경에 대한 전략적 조정이 중요합니다.
이 전략은 다음과 같은 부분에서 최적화될 수 있습니다.
다양한 길이의 RSI 주기 변수를 테스트하여 현재 시장에 가장 적합한 설정을 찾습니다.
빠른 MA와 느린 MA의 길이를 최적화하고, 반전 및 필터 잡음을 균형 잡는다
최대 인출을 제어하기 위해 변동율 기반의 손실을 증가시킵니다.
거래량 변화와 같은 다른 요소를 주문 논리에 포함시켜서 성공률을 높이는 시도
REUSE의 동일한 거래 신호의 효과를 여러 시간 프레임에서 테스트합니다.
개발 매개 변수 적응 최적화 메커니즘, 정책 매개 변수 동적으로 조정
이 RSI 역전 전략의 전체 구조는 합리적이며 거래 논리는 명확하게 설명할 수 있다. 맞춤형 공간과 최적화 잠재력을 가지고 있다. 매개 변수 조정과 위험 통제가 이루어지면 역전 기회를 잡는 능력이 기대할 만하다. 다음 단계는 더 많은 피드백과 매개 변수 조정을 통해 전략을 최적화하여 전략의 위험 저항성과 수익 수준을 향상시키는 것이다.
/*backtest
start: 2022-11-06 00:00:00
end: 2023-11-12 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy("TDI - Traders Dynamic Index [Mehdi]", shorttitle="TDIMEHDI")
rsiPeriod = input(13, minval = 1, title = "RSI Period")
bandLength = input(34, minval = 1, title = "Band Length")
lengthrsipl = input(7, minval = 0, title = "Fast MA on RSI")
lengthtradesl = input(2, minval = 1, title = "Slow MA on RSI")
p1 = input("15", title = "Signal Timeframe")
src = close // Source of Calculations (Close of Bar)
r = rsi(src, rsiPeriod) // RSI of Close
ma = sma(r, bandLength) // Moving Average of RSI [current]
offs = (1.6185 * stdev(r, bandLength)) // Offset
up = ma + offs // Upper Bands
dn = ma - offs // Lower Bands
mid = (up + dn) / 2 // Average of Upper and Lower Bands
fastMA = sma(r, lengthrsipl) // Moving Average of RSI 2 bars back
slowMA = sma(r, lengthtradesl) // Moving Average of RSI 7 bars back
hline(20) // ExtremelyOversold
hline(30) // Oversold
hline(50) // Midline
hline(70) // Overbought
hline(80) // ExtremelyOverbought
up1 = request.security(syminfo.tickerid, p1, up)
dn1 = request.security(syminfo.tickerid, p1, dn)
mid1 = request.security(syminfo.tickerid, p1, mid)
slowMA1 = request.security(syminfo.tickerid, p1, slowMA)
fastMA1 = request.security(syminfo.tickerid, p1, fastMA)
plot(up1, "Upper Band", color = #3286c3, linewidth = 2) // Upper Band
plot(dn1, "Lower Band", color = #3286c3, linewidth = 2) // Lower Band
plot(mid1, "Middle of Bands", color = yellow, linewidth = 2) // Middle of Bands
plot(slowMA1, "Slow MA", color=green, linewidth=2) // Plot Slow MA
plot(fastMA1, "Fast MA", color=red, linewidth=1) // Plot Fast MA
if (crossover(slowMA1, fastMA1))
strategy.entry("Buy", strategy.long, comment="Buy")
if (crossunder(slowMA1, fastMA1))
strategy.entry("Sell", strategy.short, comment="Sell")