동적 RSI와 이중 이동 평균 구매/판매 전략

저자:차오장, 날짜: 2024-03-15 14:36:30
태그:

img

전략 개요

동적 RSI 및 이중 이동 평균 구매/판매 전략은 상대 강도 지수 (RSI), 단순 이동 평균 (SMA), 기하급수적 이동 평균 (EMA) 를 결합한 양적 거래 전략이다. 이 전략은 시장에서 이익을 얻기 위해 잠재적 인 구매 및 판매 신호를 캡처하는 것을 목표로 한다. RSI, SMA 및 EMA 사이의 관계를 분석함으로써 전략은 미리 정의된 조건에 따라 구매 및 판매 작전을 유발한다. 또한 전략은 잠재적 인 손실을 제어하고 얻은 이익을 보호하기 위해 수익을 취하고, 손실을 중지하고, 손실을 중단하는 등의 위험 관리 조치를 포함한다.

전략 원칙

이 전략의 핵심 원칙은 시장 트렌드와 구매 및 판매 시기를 결정하기 위해 RSI, SMA 및 EMA 사이의 관계를 활용하는 것입니다. 구체적으로:

  1. 2주기 RSI가 20보다 작거나 같을 때, 현재 종료 가격은 200주기 SMA보다 크거나 같으며, 현재 종료 가격은 20주기 EMA보다 크거나 같을 때 구매 신호가 발사됩니다. 이것은 시장이 과판 상태가 될 수 있음을 나타냅니다. 현재 가격은 장기 및 중장기 이동 평균보다 높고 잠재적으로 좋은 구매 기회를 제안합니다.

  2. 80주기 EMA가 나타나고 2주기 RSI가 80보다 크거나 같을 때 판매 신호가 발동됩니다. 이것은 시장이 과잉 구매 상태가 될 수 있음을 시사하며 현재 가격이 장기 이동 평균 이하이며 잠재적으로 좋은 판매 기회를 나타냅니다.

  3. 2주기 RSI가 80보다 크거나 같을 때, 현재 종료 가격은 200주기 SMA보다 작거나 같으며, 현재 종료 가격은 80주기 EMA보다 작거나 같을 때, 단편 판매 신호가 발생합니다. 이것은 시장이 과소매 상태에있을 수 있음을 나타냅니다. 현재 가격은 장기 및 중장기 이동 평균 이하이며, 단편 판매에 잠재적으로 좋은 기회를 제안합니다.

  4. 가장 낮은 가격이 20주기 EMA보다 작거나 같고 2주기 RSI가 10보다 작거나 같을 때, 단위 포지션을 닫는 신호가 발사됩니다. 이것은 시장이 상향으로 역전될 수 있음을 암시하며 따라서 위험을 피하기 위해 단위 포지션을 닫아야합니다.

구매 및 판매 신호 외에도 전략에는 수익을 취하고, 손실을 중지하고, 손실을 멈추는 것과 같은 위험 관리 조치가 포함되어 있습니다. 사용자는 자신의 위험 선호도에 따라 해당 수익을 취하고, 손실을 멈추고, 손실을 멈추는 수준을 설정할 수 있습니다. 이것은 잠재적 인 손실을 제어하고 얻은 이익을 보호하는 데 도움이됩니다.

전략적 장점

  1. 여러 가지 기술 지표의 조합: 전략은 일반적으로 사용되는 세 가지 기술 지표를 포괄적으로 고려합니다: RSI, SMA 및 EMA. 여러 관점에서 시장 추세와 구매 및 판매 시기를 분석하여 전략의 신뢰성을 향상시킵니다.

  2. 리스크 관리 조치 도입: 리스크 관리 능력을 강화하여 수익을 취하고, 손실을 멈추고, 손실을 멈추는 수준을 설정함으로써 전략은 잠재적 인 손실을 효과적으로 제어하고 얻은 이익을 보호합니다.

  3. 조정 가능한 매개 변수: 사용자는 전략의 다양한 매개 변수를 조정할 수 있습니다. 예를 들어 RSI 기간, SMA 기간 및 EMA 기간, 수익을 취하고 손실을 멈추는 수준, 자신의 선호도와 시장 특성에 따라 다른 거래 스타일과 시장 환경에 적응 할 수 있습니다.

  4. 광범위한 적용 가능성: 전략은 주식, 선물 및 외환과 같은 다양한 금융 시장에 적용 될 수 있으며 강력한 다재다능성과 적용성을 보여줍니다.

전략 위험

  1. 매개 변수 설정 위험: 부적절한 매개 변수 설정은 전략 성능 감소 또는 심지어 상당한 손실로 이어질 수 있습니다. 따라서이 전략을 사용할 때 전략의 견고성을 보장하기 위해 매개 변수를 신중하게 평가하고 최적화해야합니다.

  2. 시장 위험: 전략은 역사적 데이터와 특정 기술 지표에 기반합니다. 시장에서 중요한 변화가 발생하거나 블랙 스완 이벤트가 발생하면 전략은 적시에 적응할 수 없으며 손실이 발생할 수 있습니다. 따라서 시장 역학을 면밀히 모니터링하고 필요한 경우 전략을 조정해야합니다.

  3. 과도한 적합성 위험: 전략 매개 변수가 너무 복잡하거나 특정 역사적 데이터에 최적화되어 있다면 과도한 적합성으로 이어질 수 있으며 실제 적용에서 성능이 떨어질 수 있습니다. 따라서 전략을 개발하고 최적화 할 때 과도한 적합성 위험을 제어하는 것이 중요합니다.

전략 최적화

  1. 동적 매개 변수 조정: 시장 변화와 전략 성과에 따라 RSI 기간, SMA 기간 및 EMA 기간과 같은 전략 매개 변수를 동적으로 조정하고, 다른 시장 환경에 적응하고 전략의 안정성을 향상시킵니다.

  2. 다른 기술적 지표의 도입: 전략의 분석 차원을 풍부하게하고 구매 및 판매 신호의 신뢰성을 향상시키기 위해 볼링거 밴드, MACD 등과 같은 다른 효과적인 기술적 지표를 도입하는 것을 고려하십시오.

  3. 기본 분석과 결합: 기본 분석과 기술 분석을 결합한다. 구매 및 판매 시기를 결정할 때 전략의 포괄성과 정확성을 향상시키기 위해 거시 경제, 산업 동향 및 회사 성과와 같은 기본 요인을 고려한다.

  4. 리스크 관리 강화: 리스크를 더 잘 통제하고 자본 안전을 보호하기 위해 다단계 스톱 로스, 동적 스톱 로스, 리스크 패리티 등을 도입하는 것과 같은 리스크 관리 조치를 최적화합니다.

  5. 백테스팅 및 라이브 거래 최적화: 전략 백테스팅 및 라이브 거래를 정기적으로 수행하고, 다른 시장 조건 하에서 전략의 성능을 분석하고, 잠재적인 문제를 신속히 식별하고 해결하고, 지속적으로 전략을 최적화하고 정비합니다.

요약

동적 RSI 및 이중 이동 평균 구매/판매 전략은 RSI, SMA, EMA와 같은 기술적 지표들을 결합한 양적 거래 전략이다. 전략은 미리 정의된 조건에 기초하여 지표들 간의 관계를 분석하고, 수익을 취하는 것, 스톱 로스, 트레일링 스톱 로스 등의 리스크 관리 조치를 통합하면서 구매 및 판매를 유발한다. 전략의 장점은 여러 기술적 지표를 고려하고, 위험 관리 조치를 도입하고, 조정 가능한 매개 변수, 광범위한 적용성을 포함한다. 그러나 실제 응용에서는 매개 변수 위험, 시장 위험, 과잉 위험 설정 등의 위험에 주의를 기울여야 한다. 전략의 성능과 견고성을 더욱 향상시키기 위해, 동적 매개 변수 조정, 다른 기술적 지표의 결합, 근본 위험 관리, 분석 등을 포함한 최적화 조치가 고려될 수 있다. 또한 장기적 전략의 효율성을 확보하기 위해, 최적화 방법을 도입하고, 주기적으로 리스크 분석을 수행하고, 지속적으로 라이브 분석을 수행하고, 트레이딩 전략을 개선하는 것도 중요한 방법이다.


/*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("ag7 buy sell", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)

inpTakeProfit   = input.int(defval = 100000000, title = "Take Profit", minval = 0)
inpStopLoss     = input.int(defval = 5000, title = "Stop Loss", minval = 0)
inpTrailStop    = input.int(defval = 1000, title = "Trailing Stop Loss", minval = 0)
inpTrailOffset  = input.int(defval = 0, title = "Trailing Stop Loss Offset", minval = 0)

useTakeProfit   = inpTakeProfit  >= 1 ? inpTakeProfit  : na
useStopLoss     = inpStopLoss    >= 1 ? inpStopLoss    : na
useTrailStop    = inpTrailStop   >= 1 ? inpTrailStop   : na
useTrailOffset  = inpTrailOffset >= 1 ? inpTrailOffset : na

longEntry() =>
    ta.rsi(close, 2) <= 20 and close >= ta.sma(close, 200) and ta.ema(close, 20)
longExit() =>
    ta.ema(close, 80) and ta.rsi(close, 2) >= 80

strategy.entry("Compra", strategy.long, when = longEntry())
strategy.close("Compra", when = longExit())
strategy.exit("Feche a ordem", from_entry = "Venda", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)

shortEntry() =>
    ta.rsi(close, 2) >= 80 and close <= ta.sma(close, 200) and ta.ema(close, 80)
shortExit() =>
    low <= ta.ema(close, 20) and ta.rsi(close, 2) <= 10

strategy.entry("Venda", strategy.short, when = shortEntry())
strategy.close("Venda", when = shortExit())
strategy.exit("feche a ordem", from_entry = "Compra", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)


더 많은