RSI 및 1시간 트렌드를 기반으로 한 이중 이동 평균 전략

저자:차오장, 날짜: 2024-03-29 11:05:04
태그:

img

전반적인 설명

이 전략은 1시간 시간 내에 긴 신호와 짧은 신호를 생성하는 주요 지표로 상대 강도 지표 (RSI) 와 두 가지 간단한 이동 평균 (SMA) 을 사용합니다. RSI와 SMA의 조건을 자유화함으로써 신호 트리거의 빈도가 증가합니다. 또한 전략은 리스크 관리를 위해 평균 진정한 범위 (ATR) 지표를 사용하여 수익을 취하고 손실을 멈추는 수준을 동적으로 설정합니다.

전략의 주요 아이디어는 다음과 같습니다.

  1. RSI 지표를 사용하여 잠재적인 과반 구매 및 과반 판매 조건을 각각 긴 및 짧은 신호로 식별합니다.
  2. 빠른 SMA와 느린 SMA의 크로스오버를 사용하여 잠재적 인 상승 추세 (황금 십자) 및 하락 추세를 결정합니다 (죽음 십자).
  3. RSI와 SMA 조건이 모두 충족되면 긴 또는 짧은 방향으로 포지션을 오픈합니다.
  4. ATR 지표를 사용하여 각 거래의 위험을 제어하는 동적 취득 및 중지 손실 수준을 계산합니다.
  5. 그래프 배경 색상의 변화를 통해 전략 신호의 트리거를 시각적으로 표시하여 전략 논리를 디버깅하고 이해하는 것을 용이하게합니다.

전략 원칙

  1. RSI 인디케이터: RSI가 50보다 낮을 때 시장이 과판되고 가격이 상승할 가능성이 있음을 나타냅니다. 따라서 긴 신호를 유발합니다. RSI가 50보다 높을 때 시장이 과반되고 가격이 떨어질 가능성이 있음을 나타냅니다. 따라서 짧은 신호를 유발합니다.
  2. 이중 이동 평균 크로스오버: 빠른 SMA가 느린 SMA (황금 십자) 위를 넘을 때 잠재적인 상승 추세를 나타내고 긴 신호를 유발합니다. 빠른 SMA가 느린 SMA (죽음 십자) 아래를 넘을 때 잠재적인 하락 추세를 나타내고 짧은 신호를 유발합니다.
  3. 진입 조건: RSI와 이중 이동 평균 조건이 충족되면 신호의 신뢰성을 향상시키는 긴 또는 짧은 진입 조건으로 해당 방향으로 지점이 열립니다.
  4. 리스크 관리: ATR 지표는 동적 인 영업 수익 및 스톱 로스 수준을 계산하는 데 사용됩니다. 영업 수익 수준은 엔트리 가격 이상/아래의 ATR의 1.5배로 설정되며, 스톱 로스 수준은 엔트리 가격 이상/아래의 ATR의 1배로 설정됩니다. 이는 시장 변동성에 따라 영업 수익 및 스톱 로스 수준을 조정하여 각 거래의 위험을 제어 할 수 있습니다.

전략적 장점

  1. 적응력: RSI와 이중 이동 평균에 대한 조건을 자유화함으로써 전략은 1시간 이내에 다른 시장 조건에 적응하고 더 많은 거래 기회를 포착 할 수 있습니다.
  2. 리스크 관리: ATR 지표를 사용하여 동적으로 수익을 취하고 손실을 멈추는 수준을 설정하면 시장 변동성에 따라 유연한 조정이 가능하며 각 거래의 위험 노출을 효과적으로 제어합니다.
  3. 단순성 및 사용 편의성: 전략 논리는 명확하고, 사용된 지표는 단순하고 이해하기 쉽고, 이해와 구현을 촉진합니다.
  4. 시각 보조: 전략 신호의 트리거는 차트 배경 색상의 변화를 통해 시각적으로 표시되며 디버깅 및 최적화에 도움이 됩니다.

전략 위험

  1. 빈번한 거래: RSI와 이중 이동 평균에 대한 자유화 된 조건으로 인해 전략은 상대적으로 빈번한 거래 신호를 생성하여 거래 비용을 증가시키고 전반적인 수익성에 영향을 줄 수 있습니다.
  2. 측면 시장: 낮은 변동성 측면 시장에서 RSI와 이중 이동 평균은 잘못된 신호를 자주 생성하여 전략 성과가 좋지 않을 수 있습니다.
  3. 트렌드 부족: 전략은 주로 트렌드를 결정하기 위해 RSI와 이중 이동 평균에 의존하지만 일부 경우 시장은 명확한 트렌드 특성이 없어 전략 신호가 비효율적일 수 있습니다.
  4. 매개 변수 민감성: 전략의 성능은 RSI, SMA 및 ATR의 매개 변수 설정에 민감할 수 있습니다. 다른 매개 변수 조합은 전략 성능에 상당한 차이를 초래할 수 있습니다.

전략 최적화 방향

  1. 매개 변수 최적화: 전략의 안정성 및 신뢰성을 향상시키는 역사적 데이터에서 가장 좋은 성능의 매개 변수 조합을 찾기 위해 RSI, SMA 및 ATR의 매개 변수를 최적화합니다.
  2. 신호 필터링: 다른 기술적 지표 또는 시장 정서 지표를 도입하여 RSI와 이중 이동 평균에 의해 생성된 신호의 2차 확인을 제공하여 잘못된 신호의 발생을 줄이십시오.
  3. 동적 중량 조정: 시장 트렌드의 강도에 따라 RSI와 이중 이동 평균 신호의 중량을 동적으로 조정하여 트렌드가 명백할 때 더 높은 중량과 옆 시장에서 더 낮은 중량을 부여하여 전략의 적응력을 향상시킵니다.
  4. 영업이익 및 스톱-러스 최적화: 최적의 영업이익 및 스톱-러스 비율을 찾기 위해 ATR 곱셈을 최적화하여 전략의 위험 조정 수익을 향상시킵니다. 또한 지원 / 저항 기반 또는 시간 기반 방법과 같은 다른 영업이익 및 스톱-러스 방법을 도입하는 것을 고려하십시오.
  5. 멀티 타임프레임 분석: 다른 시간 프레임 (예를 들어, 4 시간, 매일) 의 신호를 결합하여 1 시간 시간 프레임에서 신호를 필터하고 확인하여 신호 신뢰성을 향상시킵니다.

요약

이 전략은 간단하고 사용하기 쉬운 두 가지 기술적 지표인 RSI와 이중 이동 평균을 결합하여 동적 위험 관리를 위해 ATR 지표를 활용하는 동안 1시간 시간 내에 트렌드를 따르는 신호를 생성합니다. 전략 논리는 명확하고 이해하기 쉽고 구현하기 쉽고 초보자도 학습 및 사용하기에 적합합니다. 그러나 전략에는 빈번한 거래, 측면 시장에서 낮은 성능 및 트렌드 부족과 같은 잠재적 위험도 있습니다. 따라서 실용적인 응용에서는 전략이 더 이상 최적화되고 개선되어야합니다.


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

//@version=5
strategy("Debugged 1H Strategy with Liberal Conditions", shorttitle="1H Debug", overlay=true, pyramiding=0)

// Parameters
rsiLength = input.int(14, title="RSI Length")
rsiLevel = input.int(50, title="RSI Entry Level") // More likely to be met than the previous 70
fastLength = input.int(10, title="Fast MA Length")
slowLength = input.int(21, title="Slow MA Length")
atrLength = input.int(14, title="ATR Length")
atrMultiplier = input.float(1.5, title="ATR Multiplier for SL")
riskRewardMultiplier = input.float(2, title="Risk/Reward Multiplier")

// Indicators
rsi = ta.rsi(close, rsiLength)
fastMA = ta.sma(close, fastLength)
slowMA = ta.sma(close, slowLength)
atr = ta.atr(atrLength)

// Trades
longCondition = ta.crossover(fastMA, slowMA) and rsi < rsiLevel
shortCondition = ta.crossunder(fastMA, slowMA) and rsi > rsiLevel

// Entry and Exit Logic
if (longCondition)
    strategy.entry("Long", strategy.long)
    strategy.exit("Exit Long", "Long", profit=atrMultiplier * atr, loss=atr)

if (shortCondition)
    strategy.entry("Short", strategy.short)
    strategy.exit("Exit Short", "Short", profit=atrMultiplier * atr, loss=atr)

// Debugging: Visualize when conditions are met
bgcolor(longCondition ? color.new(color.green, 90) : na)
bgcolor(shortCondition ? color.new(color.red, 90) : na)

더 많은