RSI 지표를 기반으로 한 손절매 매수 및 매도 전략 이동


생성 날짜: 2024-01-17 13:54:43 마지막으로 수정됨: 2024-01-17 13:54:43
복사: 0 클릭수: 656
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

RSI 지표를 기반으로 한 손절매 매수 및 매도 전략 이동

개요

이 전략은 RSI 지표의 구매 신호 라인을 설정하고 판매 신호 라인을 설정하여 모바일 스톱 로드와 결합하여 자동화된 구매 및 판매를 구현합니다. RSI 지표가 구매 신호 라인을 낮게 할 때 구매 신호를 발송하고 RSI 지표가 판매 신호 라인을 높게 할 때 판매 신호를 발송합니다. 동시에 수익을 잠금하고 위험을 제어하기 위해 모바일 스톱 로드를 설정합니다.

전략 원칙

이 전략은 주로 RSI 지표의 오버 바이 오브 셀 영역을 기반으로 구매 및 판매 시기를 판단한다. RSI 지표가 20보다 낮으면 과매매로 간주되며, 80보다 높으면 과매매로 간주된다. 전략은 세 개의 RSI 낮은 구매 라인을 설정한다. 각각 20, 18, 14이다.

전체 전략은 RSI 지표의 오버 바이 오버 셀 영역을 통해 매매 시기를 판단하고, 수익을 잠금하고 위험을 제어하기 위해 스톱 로스를 설정하며, 전형적인 기술 지표 기반의 양적 거래 전략이다.

우위 분석

이 전략은 다음과 같은 장점을 가지고 있습니다.

  1. 고전적이고 널리 검증된 RSI 지표를 사용하여 매매 지점을 판단하여 매매 시기를 효과적으로 잡을 수 있습니다.

  2. 여러 구매 라인을 설정하여, 구매 비용을 낮추기 위해 다양한 가격으로 구매를 할 수 있습니다.

  3. 모바일 스톱로스가 설치되어 손실을 제어하고 수익을 잠금하여 위험을 효과적으로 제어할 수 있습니다.

  4. 전략 논리는 간단하고 명확하며, 이해하기 쉽고 수정할 수 있으며, 실무에서 검증할 수 있습니다.

  5. RSI 지표의 매개 변수는 사용자 정의 가능하며, 다양한 품종과 시장에 대해 매개 변수를 조정할 수 있다.

위험 분석

이 전략에는 몇 가지 위험도 있습니다.

  1. 단일 지표 전략, 가짜 신호를 생성하기 쉽다. RSI 지표가 내리는 신호는 정확하지 않다.

  2. “이런 전략이 없어서 손실이 커질 위험이 있다”.

  3. 오버 바이 오버 세일 영역이 붕괴될 위험이 있습니다. 특히, 충격적인 상황에서는요.

  4. 극단적인 상황에서는, 가격이 직접적으로 스톱로스 라인을 넘어서서 스톱로스를 멈출 수 없습니다.

그 해결책은 다음과 같습니다.

  1. 여러 지표를 조합하여 판단하여 잘못된 신호를 피하십시오.

  2. 더 많은 구역이나 sar를 추가하는 전략

  3. RSI 파라미터를 조정하고, 간격을 줄인다.

  4. 동적 손상 또는 적시에 인적 개입.

최적화 방향

이 전략은 다음과 같은 방향으로 최적화될 수 있습니다.

  1. 다른 지표와 결합하여 지표 조합을 형성하여 가짜 신호를 피한다. 일반적인 조합은: RSI + KDJ, RSI + MACD 등이다.

  2. 트렌드 트래킹 스톱, 타이밍 스톱, 모바일 스톱 채널 등과 같은 스톱 전략을 추가하십시오.

  3. 매개 변수 최적화, 다른 품종, 주기적으로 RSI 매개 변수를 조정한다.

  4. 전략 파생, 断头转策略, 批量进场策略 등 전략 조합의 사용.

  5. 구매/판매 간격을 적절히 줄여서 가짜 신호를 피하십시오.

요약하다

이 전략은 전체적으로 RSI 지표 기반의 전형적인 양적 거래 전략으로 매매 신호를 설정한다. 전략은 간단하고 이해하기 쉽고 실장에 쉽게 있다. 그러나 단 하나의 지표 신호는 신뢰할 수 없으며, 무정부 중단 전략의 위험이 큰 단점이 있다. 우리는 변수 최적화, 전략 조합, 중지 전략을 추가하는 등의 수단으로 이 전략을 더 개선할 수 있다.

전략 소스 코드
/*backtest
start: 2023-12-17 00:00:00
end: 2024-01-16 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("RSI Buy/Sell Strategy", overlay=false)

// Input for RSI period
rsiPeriod = input(12, title="RSI Period")

// Input for RSI levels
rsiBuyLevel1 = 20
rsiBuyLevel2 = 18
rsiBuyLevel3 = 14
rsiSellLevel = input(83, title="RSI Sell Level")

// Input for stop loss percentage
stopLossPercent = input(5, title="Stop Percentage")

// Calculate RSI
rsiValue = ta.rsi(close, rsiPeriod)

// Buy Conditions: RSI below buy levels
buyCondition1 = close[1] > close and rsiValue <= rsiBuyLevel1
buyCondition2 = close[1] > close and rsiValue <= rsiBuyLevel2
buyCondition3 = close[1] > close and rsiValue <= rsiBuyLevel3

// Sell Conditions: RSI above sell level or stop loss
sellCondition = (rsiValue > rsiSellLevel )//or ( close[1] < close * (1 - stopLossPercent / 100))

// Calculate position size based on 10% of current equity
positionSize = strategy.equity * 0.8 / close

// Plot RSI on the chart
plot(rsiValue, title="RSI", color=color.blue)

// Plot horizontal lines for buy and sell levels
hline(rsiBuyLevel1, "Buy Level 1", color=color.green)
hline(rsiBuyLevel2, "Buy Level 2", color=color.green)
hline(rsiBuyLevel3, "Buy Level 3", color=color.green)
hline(rsiSellLevel, "Sell Level", color=color.red)

// Execute Buy and Sell orders with stop loss
strategy.entry("Buy1", strategy.long, when = buyCondition1, qty = positionSize,stop=close * stopLossPercent / 100)
strategy.entry("Buy2", strategy.long, when = buyCondition2, qty = positionSize,stop=close * stopLossPercent / 100)
strategy.entry("Buy3", strategy.long, when = buyCondition3, qty = positionSize,stop=close * stopLossPercent / 100)

strategy.close("Buy1", when = sellCondition)
strategy.close("Buy2", when = sellCondition)
strategy.close("Buy3", when = sellCondition)