RSI 전략에 의해 구동되는 합리적인 거래 로봇

저자:차오장, 날짜: 2024-02-19 14:43:34
태그:

img

전반적인 설명

이 거래 전략은 세 가지 강력한 기술 지표 - 상대적 강도 지수 (RSI), 볼링거 밴드 및 지원 / 저항 수준 - 를 통합하여 자동화 된 거래 결정을 가능하게합니다. 로봇은 수동 개입 없이 현행 시장 조건에 따라 잠재적 인 입점 및 출구 지점을 지능적으로 식별 할 수 있습니다.

전략 논리

이 거래 로봇의 핵심 논리는 RSI, 볼링거 밴드 및 지원/저항 분석에 기반합니다.

첫째, RSI는 현재 추세의 강도를 측정합니다. RSI 70 이상은 과잉 매입 시장을 암시하고 RSI 30 이하는 과잉 판매 시장을 암시합니다.

둘째, 볼링거 밴드는 시장의 변동성 범위를 정의합니다. 상부와 하부 밴드는 시장의 정상적인 변동 범위를 포함합니다. 상부 밴드를 만지면 하향 반전이 발생할 가능성이있는 상대적으로 높은 구역을 나타냅니다. 마찬가지로, 하부 밴드를 만지면 하향 반기가 예상되는 상대적으로 낮은 구역을 나타냅니다.

마지막으로, 지원 및 저항 수준은 볼링거 밴드에서 도출 할 수 있습니다. 지원은 하부 밴드 주위에서 위치하고 저항은 상부 밴드 주위에서 떠돌고 있습니다. 이것은 상승 추세가 저항 주위에서 판매 압력을 겪을 수 있음을 암시하며 잠재적인 하락으로 이어질 수 있습니다. 반대로 하락 추세는 지원 주위에서 구매 수요를 충족시킬 수 있으며 기술적 리바운드를 유발합니다.

이러한 지표를 통합함으로써, 출입 논리는 다음과 같이 정의됩니다. 가격이 지원과 일치하는 하위 대역 (oversold zone) 에 닿을 때 길게 이동합니다. 가격이 상위 대역 (oversold zone) 을 넘어서고 높은 저항을 초과 할 때 짧게 이동합니다. 출구 논리는 이동 평균의 방향 변화에 의해 지배됩니다.

주요 이점

  1. 여러 지표를 결합하여 강력한 신호 신뢰성

  2. 수동 간섭 없이 완전 자동화

  3. 이동 중 인스턴트 업데이트를 위한 실시간 알림

  4. 직관적인 차트 주석 거래 수준을 시각화하기 위해

  5. 기기 및 시간 프레임에 걸쳐 최적화를 위한 사용자 정의 가능한 매개 변수

위험 관리

  1. 예외적인 변동성 때문에 스톱 로스가 발생할 수 있습니다. 합리적인 스톱 로스 수준은 최대 손실을 제한하는 데 도움이 될 수 있습니다.

  2. 열등한 매개 변수 조정은 과도한 거래 또는 신호 품질이 떨어질 수 있습니다. 최적의 설정을 위해 백테스트 결과를 기반으로 매개 변수를 정밀 조정해야합니다.

  3. 시스템 장애는 신호 장애 또는 실행 지연을 유발할 수 있습니다. 탄력적인 연결과 컴퓨팅 인프라는 중요합니다.

더 나은 기회

  1. 스톱 로스 로직을 적용하여 하향 리스크를 더욱 제한합니다.

  2. 보다 지능적인 리스크 관리를 위해 계좌 자금에 따른 포지션 크기 규정을 도입한다.

  3. 예측 능력을 향상시키기 위해 역사적 데이터에 대한 모델을 훈련함으로써 기계 학습을 활용합니다.

  4. 각 제품에 맞게 가장 좋은 매개 변수 집합을 발견하기 위해 다양한 제품에 대한 매개 변수 최적화를 수행합니다.

결론

이 전략은 강력한 적응력과 다재다능성을 보여준다. 시장 상황을 평가하기 위해 여러 지표를 모니터링함으로써 자동 실행을 위해 트렌드 역전 수준을 신뢰할 수 있다. 알고리즘의 지속적인 개선은 지속적으로 알파를 생성하기 위해 전략 성능을 높여 줄 것이다. 양적 거래에 적합한 우수한 알고-트레이딩 솔루션이다.


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

//@version=4
strategy("RSI, Bollinger Bands, and Support/Resistance Trading Bot", overlay=true)

// Define RSI parameters
rsiLength = input(14, title="RSI Length")
rsiOverbought = input(70, title="Overbought Level")
rsiOversold = input(30, title="Oversold Level")

// Define Bollinger Bands parameters
bbLength = input(20, title="Bollinger Bands Length")
bbMultiplier = input(2, title="Bollinger Bands Multiplier")

// Calculate RSI
rsiValue = rsi(close, rsiLength)

// Calculate Bollinger Bands
basis = sma(close, bbLength)
upperBand = basis + bbMultiplier * stdev(close, bbLength)
lowerBand = basis - bbMultiplier * stdev(close, bbLength)

// Calculate Support and Resistance based on Bollinger Bands
support = basis - bbMultiplier * stdev(close, bbLength)
resistance = basis + bbMultiplier * stdev(close, bbLength)

// Strategy logic
rsiCondition = rsiValue > rsiOverbought or rsiValue < rsiOversold
touchingUpperBand = close >= upperBand
touchingLowerBand = close <= lowerBand

// Entry conditions
longCondition = touchingLowerBand and low <= support
shortCondition = touchingUpperBand and high >= resistance

// Exit conditions
longExitCondition = crossover(close, basis)
shortExitCondition = crossunder(close, basis)

// Automatic close if moving in opposite direction
if (strategy.position_size > 0 and shortCondition)
    strategy.close("Long")

if (strategy.position_size < 0 and longCondition)
    strategy.close("Short")

// Strategy orders
strategy.entry("Long", strategy.long, when=longCondition)
strategy.entry("Short", strategy.short, when=shortCondition)

// Plot entry and exit arrows
plotarrow(series=longCondition ? 1 : na, colorup=color.new(color.green, 0), offset=-1, minheight=5)
plotarrow(series=shortCondition ? 1 : na, colordown=color.new(color.red, 0), offset=-1, minheight=5)
plotarrow(series=longExitCondition ? -1 : na, colorup=color.new(color.red, 0), offset=-1, minheight=5)
plotarrow(series=shortExitCondition ? -1 : na, colordown=color.new(color.green, 0), offset=-1, minheight=5)

// Plot Bollinger Bands on chart
plot(upperBand, title="Upper Band", color=color.red)
plot(lowerBand, title="Lower Band", color=color.green)

// Highlight areas where price touches Bollinger Bands
bgcolor(touchingUpperBand ? color.new(color.red, 90) : na)
bgcolor(touchingLowerBand ? color.new(color.green, 90) : na)

// Plot Support and Resistance
plot(support, title="Support", color=color.blue)
plot(resistance, title="Resistance", color=color.purple)

// Plot RSI on chart
hline(rsiOverbought, "Overbought Level", color=color.red)
hline(rsiOversold, "Oversold Level", color=color.green)
plot(rsiValue, title="RSI", color=color.blue)


더 많은