리소스 로딩... 로딩...

RSI 평균 반전 브레이크업 전략

저자:차오장, 날짜: 2024-12-05 16:53:44
태그:RSISMAATR

img

전략 개요

이 전략은 RSI 지표와 평균 회전 원리에 기반한 양적 거래 시스템이다. 가격 범위 분석과 폐쇄 가격 위치와 결합하여 과소 구매 및 과소 판매 조건을 탐지하여 시장 회전 기회를 식별합니다. 핵심 개념은 극단적인 시장 조건 후 평균 회전 기회를 포착하고 엄격한 진입 기준과 동적 스톱 로스 메커니즘을 통해 위험을 관리하는 것입니다.

전략 원칙

이 전략은 거래 신호를 결정하기 위해 여러 필터링 메커니즘을 사용합니다. 첫째, 가격은 초판 시장 상태를 나타내는 10 기간의 최저치를 만들어야합니다. 둘째, 하루의 가격 범위는 시장 변동성을 증가시키는 지난 10 일 동안 가장 큰 범위가어야합니다. 마지막으로, 폐쇄 가격이 하루의 범위의 상위 쿼틸에 있는지 확인하여 잠재적 인 반전 신호를 확인합니다. 엔트리는 브레이크아웃 확인을 통해 실행되며, 거래 조건이 충족된 후 2 일 이내에 가격이 이전 최고치를 넘으면 긴 거리를 이동합니다. 스톱-러스는 수익을 보호하기 위해 후속 메커니즘을 통해 구현됩니다.

전략적 장점

  1. 다중 필터링 조건은 신호 품질을 향상시키고 잘못된 신호를 줄입니다.
  2. 기술 가격 패턴, 변동성 및 추진력 등 여러 차원을 통합합니다.
  3. 효율적인 이익 보호를 위해 후속 스톱 손실 메커니즘을 사용합니다.
  4. 출입 메커니즘은 조기 출입을 피하기 위해 출입 확인을 사용합니다.
  5. 거래 논리는 명확하고 이해하기 쉽고 실행하기 쉽습니다.

전략 위험

  1. 강한 트렌드 시장에서 빈번한 스톱 로스를 유발할 수 있습니다.
  2. 엄격한 진입 조건은 일부 거래 기회를 놓칠 수 있습니다.
  3. 거래 빈도가 높을 필요가 있어 거래비용이 높아질 수 있습니다.
  4. 낮은 변동성 환경에서 효과적인 거래 신호를 찾는 데 어려움을 겪을 수 있습니다.
  5. 스톱 로스 설정은 너무 보수적이어서 전체 수익에 영향을 줄 수 있습니다.

전략 최적화 방향

  1. 강한 트렌드 환경에서 거래를 일시 중지하기 위해 트렌드 필터를 도입할 수 있습니다.
  2. 추가 확인을 위해 부피 지표를 추가하는 것을 고려하십시오.
  3. 시장 변동성에 기초한 동적 조정으로 스톱 로스 설정을 최적화합니다.
  4. 장기 오스설레이션을 피하기 위해 위치 유지 시간 제한을 추가
  5. 신호 신뢰성을 향상시키기 위해 여러 시간 프레임 분석을 구현하는 것을 고려하십시오.

요약

이 전략은 명확한 논리를 가진 잘 구성된 평균 회귀 전략이다. 다중 조건 필터링과 동적 스톱 로스 관리를 통해 전략은 위험을 제어하는 동시에 시장 과반 판매 리바운드 기회를 효과적으로 포착한다. 일부 제한이 있지만 합리적인 최적화와 정교화로 전반적인 성능을 향상시킬 수 있다. 투자가들은 실시간 거래에서 전략을 적용할 때 특정 시장 특성과 그들의 위험 관용에 기반한 매개 변수를 조정하는 것이 좋습니다.


/*backtest
start: 2024-11-04 00:00:00
end: 2024-12-04 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Larry Conners SMTP Strategy", overlay=true, margin_long=100, margin_short=100)

// --- Inputs ---
// Corrected the input type declaration by removing 'type='
tickSize = input.float(0.01, title="Tick Size (e.g., 1/8 for stocks)")

// --- Calculate conditions ---
// 1. Today the market must make a 10-period low
low10 = ta.lowest(low, 10)
is10PeriodLow = low == low10

// 2. Today's range must be the largest of the past 10 bars
rangeToday = high - low
maxRange10 = ta.highest(high - low, 10)
isLargestRange = rangeToday == maxRange10

// 3. Today's close must be in the top 25 percent of today's range
rangePercent = (close - low) / rangeToday
isCloseInTop25 = rangePercent >= 0.75

// Combine all buy conditions
buyCondition = is10PeriodLow and isLargestRange and isCloseInTop25

// --- Buy Entry (on the next day) ---
var float buyPrice = na
var bool orderPending = false
var float stopLoss = na  // Initialize stopLoss at the top level to avoid 'Undeclared identifier' errors

if (buyCondition and strategy.position_size == 0)
    buyPrice := high + tickSize
    stopLoss := low
    orderPending := true

// Condition to place buy order the next day or the day after
if orderPending and ta.barssince(buyCondition) <= 2
    strategy.entry("Buy", strategy.long, stop=buyPrice)
    orderPending := false

// --- Stop-Loss and Trailing Stop ---
if (strategy.position_size > 0)
    stopLoss := math.max(stopLoss, low) // Move stop to higher lows (manual trailing)
    strategy.exit("Exit", from_entry="Buy", stop=stopLoss)

// --- Plotting ---
// Highlight buy conditions
bgcolor(buyCondition ? color.new(color.green, 50) : na)
//plotshape(series=buyCondition, location=location.belowbar, color=color.green, style=shape.labelup, text="Buy Setup")

// Plot Stop-Loss level for visualization
//plot(strategy.position_size > 0 ? stopLoss : na, color=color.red, linewidth=2, title="Stop-Loss Level")

관련

더 많은