RAHA 정량적 동적 가중 이동 평균 단기 추세 전략

RAHA RSI BB SMA MA TP SL
생성 날짜: 2025-07-03 10:18:09 마지막으로 수정됨: 2025-07-29 16:06:48
복사: 0 클릭수: 273
avatar of ianzeng123 ianzeng123
2
집중하다
319
수행원

RAHA 정량적 동적 가중 이동 평균 단기 추세 전략 RAHA 정량적 동적 가중 이동 평균 단기 추세 전략

1. 개요

RAHA의 양적 동적 중도 평균선 단선 트렌드 전략은 로니의 조정 하이브리드 평균 (RAHA) 지표에 기반한 단선 거래 시스템이다. 이 전략은 아아론 로니 페사치 (Aharon Roni Pesach) 에 의해 개발되었으며, 핵심은 특수한 평준 계산 방법을 사용하여 비정상적인 값에 다른 무게를 부여하여 극단적인 값 (특히 높거나 특히 낮다) 에 더 낮은 무게를 부여한다. RAHA의 계산은 데이터에 기반한 표준과 평균의 차이를 사용하여 더 민감하지만 더 안정적인 평준을 생성합니다. 비정상적인 값을 무시하지 않고 비례적으로 고려합니다.

2. 전략 원칙

RAHA의 양적 동적 가중 평균선 단선 트렌드 전략의 핵심은 그것의 독특한 평균선 계산 방법이다. 전통적인 평균선은 각 가격점에게 동일한 무게를 부여하지만, RAHA는 가격점과 평균값의 오차 정도에 따라 동적으로 무게를 조정한다. 구체적으로 다음과 같은 단계를 통해 구현된다:

  1. 먼저 표준 SMA 평균과 표준 격차를 계산합니다.
  2. 각 가격점의 평균과 오차에 따라 가중치를 계산합니다: 가중치 = 1 / (1 + 감수성 *) 가격-평균/표준차)
  3. 이 중량을 사용하여 중도 평균을 계산합니다.

이 전략은 시장의 추세를 포착하기 위해 다른 주기 RAHA 평균선 ((5, 10, 20, 40) 을 사용합니다. 입시 신호는 다음과 같은 조건에 기반합니다.

  • RAHA 40 아래로 기울기 ((현재 값이 이전 값보다 작다)
  • RAHA 10 아래에 착용하거나 RAHA 20 아래에 위치
  • RAHA 5는 아래로 기울었다.
  • 3개의 빨간 이 연속으로 나오지 않습니다.
  • 또는 특별한 경우: 가격이 완전히 브린의 상단에 위치하고 음선을 니다.

입시 후, 전략은 다음과 같은 규칙을 사용하여 포지션을 관리합니다:

  • 진입 시 최대 가격으로 설정된 스톱 손실
  • 이윤 목표 (TP) 는 3배의 스톱로스 거리 빼기 입시 가격으로 설정됩니다.
  • 포지션 크기는 자본의 1% 나누기 절감 비율로 계산됩니다.
  • 만약 3개의 빨간 선이 연속적으로 나타난다면, 스톱은 전의 K 선의 높은 점으로 조정됩니다.
  • 출구 조건은 RAHA 10을 RAHA 10에서 RAHA 20을 통과하거나 스톱로스를 돌파하는 것입니다.

3. 전략적 장점

RAHA의 양적 동적 가중 평균선 단선 트렌드 전략은 여러 가지 장점이 있습니다:

  1. 동적 무게 균형:RAHA 지표는 극한값에 낮은 무게를 부여하여 더 민감하지만 더 안정적인 평균선 시스템을 만듭니다. 이것은 가짜 신호를 줄이면서 실제 시장 변화에 민감하게 작용합니다.

  2. 다단계 추세 확인전략: 여러 주기 (5, 10, 20, 40) 의 RAHA 지표를 사용하여 트렌드를 확인합니다. 이러한 다중 검증 메커니즘은 잘못된 신호율을 줄이는 데 도움이됩니다.

  3. 위험 관리 적응: 포지션 크기는 스톱 로드 거리 기반으로 자동으로 조정되며, 각 거래의 위험은 자본의 1%에 통제됩니다. 이 메커니즘은 전략이 다양한 변동률 환경에 적응할 수 있도록 합니다.

  4. 동적 정지 손해 조정: 전략은 거래 과정에서 시장 상황에 따라 중지 손실을 조정합니다. 3 개의 빨간색 이 연속적으로 나타나면 중지 손실이 증가합니다. 이것은 이익을 잠금하고 철수를 줄이는 데 도움이됩니다.

  5. 유연한 출전 메커니즘이 전략은 기술 지표 반전과 손해 중지 촉발의 여러 출전 메커니즘을 결합하여 다양한 시장 조건에서 출전을 최적화하는 데 도움이되는 유연성을 제공합니다.

  6. 비정상적인 상황 포착전략은 특히 브린의 상단에서 판매하는 신호를 주목합니다. 이것은 시장의 과도한 확장을 거치면서 회귀 기회를 잡는 데 도움이되며 종종 상당한 수익을 창출합니다.

  7. 명확한 시각화전략: 전략은 차트에 입력 및 출력 포인트를 표시하여 거래자가 거래 논리를 직관적으로 이해할 수 있도록하고 후속 분석 및 개선을 용이하게합니다.

4. 전략적 위험

RAHA의 양적 동적 가중평균 선 단선 트렌드 전략은 많은 장점이 있지만 다음과 같은 위험이 있습니다.

  1. 급격한 변동의 위험: 전략은 주로 트렌드 지속에 의존하며, 트렌드가 급격하게 변하면 큰 손실을 초래할 수 있다. 해결책은 더 민감한 반전 지표 또는 시장 감정 지표를 추가하는 것을 고려하는 것이다.

  2. 매개변수 민감도:RAHA 계산의 감수성 파라미터 ((현재 1.5로 설정되어 있습니다) 는 전략 성능에 중요한 영향을 미칩니다. 다른 시장이나 다른 기간에는 다른 파라미터 설정이 필요할 수 있습니다. 파라미터 최적화 및 감수성 분석을 수행하는 것이 좋습니다.

  3. 연속적인 손실 위험: 높은 변동성 또는 가로 시장에서, 전략은 연속적인 스톱로스를 유발할 수 있으며, 이는 자본 곡선의 하락을 초래할 수 있다. 시장 환경 필터를 추가하고, 부적절한 시장 조건에서 거래를 중단하는 것을 고려할 수 있다.

  4. 계산 복잡도RAHA 지표의 계산은 비교적 복잡하며, 데이터를 순환 처리해야 하며, 이는 실시간 거래에서 약간의 지연을 초래할 수 있다. 높은 주파수 거래 환경에서 계산 효율을 평가해야 한다.

  5. 포지션 위험: 전략은 각 거래의 위험을 제한하지만, 전체 포지션 위험을 고려하지 않습니다. 여러 거래에서 동시에 포지션을 열면, 전체 위험은 예상보다 높을 수 있습니다. 전체 위험 제어 장치를 추가하는 것이 좋습니다.

  6. 브린은 비정상적인 입장을 가지고 있습니다.부린 벨트 상단 기반의 진입은 극단적인 상황에서는 너무 일찍 진입할 수 있다. 거래량 확인이나 다른 기술 지표 보조 판단과 같은 추가 필터링 조건을 추가하는 것을 고려할 수 있다.

  7. 고정배수 정지 위험: 전략은 고정된 3배의 중지 거리를 수익 목표로 사용하며, 이는 다른 시장 환경에서 충분히 유연하지 않을 수 있습니다. 시장의 변동성이나 지지부진의 움직임에 따라 수익 목표를 조정하는 것을 고려하십시오.

5. 전략적 최적화

전략에 대한 심층적인 분석을 바탕으로 다음과 같은 최적화 방향이 제시되었습니다.

  1. 감수성 변수현재 전략은 고정된 감수성 파라미터를 사용하고 있습니다. 시장의 변동성에 따라 감수성을 자동으로 조정하는 것을 고려할 수 있습니다. 낮은 변동성 시장에서 감수성을 높이기 위해 더 높은 값을 사용하고 높은 변동성 시장에서 안정성을 높이기 위해 더 낮은 값을 사용합니다.

  2. 시장 환경 필터 추가: 트렌드 강도 지표 ((ADX) 또는 변동률 지표 ((ATR) 와 같은 시장 환경 판단 메커니즘을 도입하여 단선 전략에 적합하지 않은 시장 환경에서 거래를 줄이거나 피하십시오.

  3. 출전 메커니즘을 최적화: 현재 전략의 출전은 주로 기술 지표 반전 및 중지에 기반한다. 1: 1 리스크 수익률을 달성할 때 비용 지점으로 중지 손실을 이동하거나 지지 저항 지점을 기반으로 다중 수익 목표를 설정하는 것과 같은 더 유연한 부분 이익 잠금 메커니즘을 추가하는 것이 고려 될 수 있습니다.

  4. 거래량 확인: 입구 신호 발생 시 교량 확인을 늘리면 가짜 돌파와 가짜 신호를 줄일 수 있다. 특히 부린 벨트 위의 특수 입구 조건에 대해 교량 확인은 특히 중요하다.

  5. 시간 필터: 거래의 다른 시점에서의 성과를 분석하여, 특정 시점 (시장 개시 또는 종료 전) 에서 전략이 더 잘 수행되는 것을 발견 할 수 있습니다. 시간 필터를 추가하면 전략의 전반적인 효율성을 향상시킬 수 있습니다.

  6. 기본 필터를 추가: 주식이나 특정 상품에 적용되는 경우, 중요한 데이터를 발표할 시점이나 특정 계절적 요인의 영향을 제외하는 기간과 같은 기본 필터 조건을 추가하는 것이 고려 될 수 있습니다.

  7. 기계 학습 최적화: 기계 학습 방법을 사용하여 전략 파라미터를 최적화하거나, 역사적 패턴을 인식하여 입출장 및 퇴출 결정을 강화합니다. 이것은 전통적인 기술 분석에서 무시 될 수있는 패턴을 발견하기 위해 역사적 데이터를 깊이 분석 할 수 있습니다.

  8. 위험 균형 장치: 계좌의 순액과 개설된 포지션에 기반한 동적 리스크 조정 메커니즘을 추가하여, 특히 연속적으로 포지션을 개설하는 경우, 전체 리스크가 미리 설정된 한계를 초과하지 않도록합니다.

6. 요약

RAHA 양적 동적 가중평균선 단선 트렌드 전략은 독특한 평평선 계산 방법을 사용하여 가격 데이터를 처리하고, 이상적인 값에 다른 무게를 부여하여 더 민감하지만 더 안정적인 평평선 지표를 만드는 것이 핵심입니다. 전략은 다중 주기 RAHA 지표의 협동 판단을 통해 브린 벨트와 같은 보조 지표와 결합하여 완전한 거래 의사 결정 시스템을 형성합니다.

이 전략의 가장 큰 장점은 자율적 인 위험 관리 및 동적 인 손해 조정 장치로 인해 다양한 시장 환경에서 안정적인 위험 통제를 유지할 수 있습니다. 또한 다층의 추세 확인 및 유연한 출구 메커니즘은 전략의 강성을 강화합니다.

그러나, 전략은 또한 몇 가지 과제에 직면합니다. 예를 들어, 변수 감수성, 트렌드 반전 위험 및 연속 중단 위험 등이 있습니다. 적응 변수, 시장 환경 필터, 출구 메커니즘을 최적화하고 거래량 확인을 증가시키는 등의 방법을 도입함으로써 전략의 성능을 더욱 향상시킬 수 있습니다.

전체적으로 RAHA의 양적 동적 중도평균형 단선 트렌드 전략은 혁신적인 기술 지표와 전통적인 거래 철학을 결합하는 잠재력을 보여줍니다. 지속적인 최적화와 다양한 시장 환경에 적응함으로써 이 전략은 단선 거래자의 강력한 도구가 될 수 있으며 시장에서 더 안정적인 수익을 얻을 수 있습니다.

전략 소스 코드
/*backtest
start: 2025-01-01 00:00:00
end: 2025-04-10 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

//@version=5
strategy("RAHA Strategy - Short", overlay=true)

// === RAHA Weighted Average Function ===
raha_weighted(src, len, sensitivity) =>
    mean = ta.sma(src, len)
    dev = ta.stdev(src, len)
    sumWeighted = 0.0
    sumWeights = 0.0
    for i = 0 to len - 1
        val = nz(src[i])
        weight = 1 / (1 + sensitivity * math.abs(val - mean) / dev)
        sumWeighted += val * weight
        sumWeights += weight
    sumWeights > 0 ? sumWeighted / sumWeights : na

// === RAHA Calculations ===
sensitivity = 1.5
raha5 = raha_weighted(close, 5, sensitivity)
raha10 = raha_weighted(close, 10, sensitivity)
raha20 = raha_weighted(close, 20, sensitivity)
raha40 = raha_weighted(close, 40, sensitivity)

// === Upper Bollinger Band on RAHA 20 ===
bbDev = ta.stdev(raha20, 20)
bbUpper = raha20 + 2.0 * bbDev

// === Short Entry Conditions ===
raha40SlopeDown = raha40 < raha40[1]
crossoverDownRAHA = ta.crossunder(raha10, raha20) or raha10 < raha20
raha5SlopeDown = raha5 < raha5[1]
bearishOutsideBollinger = high > bbUpper and low > bbUpper and close < open

// === Position Management Variables ===
var float entryHigh = na
var float entryPrice = na
var float stop = na
var float tp = na
var int redCount = 0
var int lastEntryBar = na

// === Enter Only When No Open Trade ===
canEnter = strategy.position_size == 0 and ((raha40SlopeDown and crossoverDownRAHA and raha5SlopeDown) or bearishOutsideBollinger)
canEnterFiltered = canEnter and (na(lastEntryBar) or strategy.opentrades == 0 or bar_index > lastEntryBar)

// === Enter Position ===
if canEnterFiltered
    entryHigh := high
    entryPrice := close
    stop := entryHigh
    if stop > entryPrice
        tp := entryPrice - 3 * (stop - entryPrice)
        capital = strategy.equity
        stopPct = math.max(0.0001, (stop - entryPrice) / entryPrice)
        positionValue = 0.01 * capital / stopPct
        // 计算理想仓位
        idealQty = (0.01 * capital / stopPct) / entryPrice

        // 计算资金限制下的最大仓位
        maxAffordableQty = capital / entryPrice

        // 取两者较小值
        finalQty = math.min(idealQty, maxAffordableQty)

        if finalQty > 0 and finalQty < 1e12
            strategy.entry("RAHA Short", strategy.short, qty=finalQty)
            redCount := 0
            lastEntryBar := bar_index

// === Manage Open Position ===
if strategy.position_size < 0
    redCount := close < open ? redCount + 1 : 0
    if redCount >= 3
        stop := high[1]
        redCount := 0

// === Exit Conditions ===
exit1 = close > raha10 and open < raha10
exit2 = ta.crossover(raha10, raha20)
exit3 = close > stop

if low <= tp and (exit1 or exit2)
    strategy.close("RAHA Short")

if exit3
    strategy.close("RAHA Short")

// === Plot Entry and Exit Arrows ===
inPosition = strategy.position_size < 0
exitCondition = inPosition and ((low <= tp and (exit1 or exit2)) or exit3)

plotshape(canEnterFiltered, title="Short Entry", location=location.abovebar, style=shape.labeldown, text="Short", color=color.red, textcolor=color.white)
plotshape(exitCondition, title="Close Position", location=location.belowbar, style=shape.labelup, text="Close", color=color.green, textcolor=color.white)