적응형 트레일링 스톱 로스 시스템과 결합된 다중 지표 모멘텀 돌파 전략

OBV RSI MFI EMA Net Volume Trailing Stop momentum BREAKOUT
생성 날짜: 2025-07-08 14:35:20 마지막으로 수정됨: 2025-07-08 14:35:20
복사: 0 클릭수: 273
avatar of ianzeng123 ianzeng123
2
집중하다
319
수행원

적응형 트레일링 스톱 로스 시스템과 결합된 다중 지표 모멘텀 돌파 전략 적응형 트레일링 스톱 로스 시스템과 결합된 다중 지표 모멘텀 돌파 전략

개요

이 전략은 거래량 확인과 동력 지표의 연동 작용을 사용하여 시장 돌파 기회를 잡기 위해 여러 지표가 결합된 정량 거래 시스템입니다. 이 전략은 거래량 누적 지표 (OBV), 순 거래량 (Net Volume), 상대적으로 강한 지표 (RSI) 및 자본 흐름 지표 (MFI) 를 통합하고, 지수 이동 평균 (EMA) 와 함께 추세를 확인하고, 동적 손실 추적 메커니즘을 채택하여 수익성과 위험 통제를 효과적으로 균형 잡습니다.

재검토 데이터에 따르면, 이 전략은 지난 12 개월 동안 15 분 시간 주기에서 83.20%의 승률을 달성했으며, 평균 거래 당 746.18 USDT의 수익을 올렸고, 가장 좋은 단일 거래는 65,654 USDT의 수익을 올렸고, 총 381 개의 거래가 완료되었습니다. 이러한 데이터는 이 전략이 고주파 거래 환경에서 상당한 안정성과 수익 잠재력을 가지고 있음을 보여줍니다.

전략 원칙

이 전략의 핵심 논리는 여러 지표의 공동 확인 메커니즘에 기반하고 있으며, 구체적으로 작동하는 원리는 다음과 같습니다:

  1. 입학 조건이 시스템은 주로 다단계 기회를 포착하고, 다음의 모든 조건이 충족될 때 구매 신호를 유발한다:

    • OBV 지표가 21주기 간단한 이동 평균보다 높아서 거래량이 가격 상승을 뒷받침한다는 것을 나타냅니다.
    • 순거래량은 양수이며, 현재 기간 동안의 구매 압력이 판매 압력보다 크다는 것을 확인합니다.
    • RSI 지표가 45 이상으로, 충분한 동력이 있지만 과다 구매가 되지 않았음을 나타냅니다.
    • MFI 지표가 50이하로, 유입 잠재력이 여전히 충분하다는 것을 나타냅니다.
  2. 출전 메커니즘3차 방어를 적용한 다이내믹 트래킹 스탠드 시스템:

    • 트리거 오프셋 (Trigger Offset): 가격 상승이 입시 가격 0.35%를 초과할 때 트래킹 스톱을 활성화합니다.
    • 트레일 오프셋 (Trail Offset): 0.3%의 최고점을 넘어서면 평준화를 촉발합니다.
    • 최대 손실 제어 (Max Loss): 추적 스톱이 활성화되었는지 여부에 관계없이, 가격이 3% 이상의 입시 가격으로 떨어지면 필수적으로 평점
  3. 기술 지표 포트폴리오

    • OBV와 이동 평균의 비교는 거래량의 누적 경향을 감지하기 위해 사용됩니다.
    • 단기 거래 압력의 실시간 지표인 순 거래량
    • RSI는 가격 동력의 상태를 식별하는 데 사용됩니다.
    • MFI는 자본의 흐름과 시장의 활성을 평가하는 데 사용됩니다.
    • 21주기 EMA는 전체 트렌드 방향을 확인하는 데 사용됩니다.

이러한 다단계 확인 메커니즘은 입력 신호의 품질을 보장하고, 동적 추적 스톱은 수익을 효과적으로 잠금하고 위험을 통제한다.

전략적 이점

이 전략의 코드 구조와 논리를 깊이 살펴보면 다음과 같은 중요한 장점을 볼 수 있습니다.

  1. 다차원 신호 확인: 가격, 거래량, 동력의 3 차원의 지표와 결합하여 가짜 신호의 확률을 크게 감소시킵니다. OBV, 순 거래량, RSI 및 MFI가 동시에 조건을 충족하면 입구 신호의 신뢰성이 크게 향상됩니다.

  2. 수요량에 의한 가격행동: OBV와 순 거래량으로의 이중 검증을 통해 가격변동이 거래량으로 충분히 뒷받침되는지 확인하고 ‘무수 하락’의 함정에 빠지지 않도록 한다.

  3. 지능화 동적 상쇄이 전략은 고정된 스톱를 사용하지 않고, 가격 행동에 따라 자동으로 스톱 위치를 조정합니다. 이 방법은 자금을 보호하면서 가격에 충분한 변동 공간을 제공합니다.

  4. 위험 계층적 통제이변량을 유발하고, 이변량을 추적하고, 최대 손실 3단 메커니즘을 통해 위험의 정교한 관리가 이루어지고, 단일 보호 메커니즘의 실패로 인한 중대한 손실을 방지한다.

  5. 고주파 거래 적응성15분 시간 프레임에 최적화하여 하루의 변동성을 포착하여 단기 시장 감정 변동성을 활용하여 여러 거래 기회를 창출합니다.

  6. 안정적인 승률83.20%의 성공률은 전략의 일관된 신호 품질을 나타냅니다. 이는 양적 거래 전략의 장기적인 지속 가능성에 중요합니다.

전략적 위험

이 전략은 훌륭하게 작동했지만, 코드 분석을 통해 다음과 같은 잠재적인 위험을 식별할 수 있었습니다.

  1. 변동성 의존성전략은 충분한 시장 변동에 의존하여 추적 중지 장치를 작동시킵니다. 낮은 변동성 환경에서 장기간 지분을 보유하여 수익을 효과적으로 잠금 할 수 없습니다. 해결 방법: 시간 기반의 정지 메커니즘을 추가할 수 있으며, 낮은 파동 동안 트리거 편향량 매개 변수를 조정할 수 있다.

  2. 평균 손실이 더 크다.: 재검토 자료에 따르면 평균 손실 ((-30,713 USDT) 은 평균 이익 ((7,097 USDT) 보다 훨씬 크다. 승률이 높음에도 불구하고, 소수의 큰 손실은 전체 성과에 심각한 영향을 미칠 수 있다. 해결 방법: 더 엄격한 최대 손실 제어를 설정하거나 더 많은 출전 필터링 조건을 추가하는 것을 고려할 수 있습니다.

  3. 이윤 요인이 낮다:0.231의 수익률은 위험과 이익의 비율이 최적화할 수 있는 공간이 있다는 것을 나타냅니다. 해결 방법: 최대 손실 비율을 줄이거나 일부 수익 잠금 장치를 추가해야 할 수도 있습니다.

  4. 단방향 선호이 전략은 여러 가지 기회를 최적화하는데 초점을 맞추고 있으며, 지속적인 하락시장에서 좋지 않은 성과를 낼 수 있다. 해결 방법: 활성화 코드에 정의되어 있지만 사용되지 않은 코어 조건을 고려하거나 전체 시장 추세 필터를 추가하십시오.

  5. 매개변수 민감도3가지의 핵심 파라미터를 추적한다. 트리거 오브스피어, 트리거 오브스피어, 최대 손실. 이 세가지의 핵심 파라미터는 전략의 성과에 큰 영향을 미치며, 파라미터를 잘못 설정하면 조기 출전이나 과도한 손실이 발생할 수 있다. 해결 방법: 변수 감수성 분석을 수행하여 최적의 변수 범위를 결정하고 시장의 변동성 동력에 따라 이러한 변수를 조정하는 것을 고려하십시오.

전략 최적화 방향

정책 코드의 심층적인 분석을 바탕으로 다음과 같은 몇 가지 최적화 방향을 제시합니다.

  1. 적응 변수 조정: 현재 전략은 고정된 추적 스톱 로즈 파라미터를 사용하며, 시장의 변동성 (ATR 지표와 같은) 에 따라 동적으로 조정하는 것을 고려할 수 있다. 높은 변동성 시장에서 편향량을 증가시키고, 낮은 변동성 시장에서 편향량을 감소시켜 전략이 다른 시장 환경에 더 잘 적응하도록 한다.

  2. 트렌드 강도 필터링: 입시 조건에 트렌드 강도 평가를 추가하여 ADX ((평균 방향 지수)) 를 추가하여, 트렌드가 충분히 강할 때만 입시하고, 정비 시장에서 과도한 거래를 피하십시오. 이것은 가짜 돌파 신호를 효과적으로 줄일 수 있습니다.

  3. 입국 및 출퇴근 분량 메커니즘: 수정 코드는 배치된 창고와 배치된 평고를 구현합니다. 예를 들어, 자금을 3 개로 나누고, 기본 조건이 충족되면 입금 13, 조건이 더 강할 때 입금, 같은 출전이 3 번 완료됩니다. 이렇게하면 평균 포지션 가격을 최적화하고 시기를 선택하는 압력을 줄일 수 있습니다.

  4. 통합 시장 환경 분석: 더 높은 시간 주기에 시장 환경 평가를 추가하여, 예를 들어 1시간 또는 4시간 차트의 트렌드 방향을 판단하고, 더 큰 트렌드 지원 경우에만 15분 신호를 실행하여 신호 품질을 향상시킵니다.

  5. 이윤 요소를 최적화: 일부 이익 잠금 메커니즘을 추가하여, 예를 들어, 이익이 일정 비율에 도달하면, 일부 포지션을 고정하여 이익을 제거하고, 나머지 부분은 추적 스톱로스를 계속 사용합니다. 이것은 높은 승률과 평균 수익 손실 비율을 개선하는 모순을 균형을 잡을 수 있습니다.

  6. 더 많은 코스피 전략: 활성화 코드에서 이미 정의된 코카이 조건과 코카이 전략을 위해 특별히 최적화하여 전략이 다양한 시장 환경에서 안정적인 성능을 유지할 수 있도록합니다.

  7. 시간 필터: 중요한 경제 자료가 발표되기 전과 후와 같은 알려진 낮은 유동성 또는 높은 변동성 시기를 피하기 위해 시간 필터 조건을 추가하여 비정상적인 상황에 대한 위험을 줄입니다.

요약하다

이 다중 지표 동력 돌파 전략은 거래량 분석, 동력 지표 및 트렌드 확인을 교묘하게 결합하여 논리적으로 엄격한 거래 시스템을 구축합니다. 그것의 핵심 장점은 입시 품질을 향상시키기 위해 다차원 신호 확인을 이용하는 데 있으며, 또한 적응 추적 스톱 메커니즘을 통해 위험을 동적으로 관리하는 데 있습니다.

83.20%의 높은 성공률이 인상적이지만, 평균 손실이 평균 수익보다 더 큰 것은 전략이 위험 관리에서 개선할 여지가 있음을 나타냅니다. 권장된 최적화 조치를, 특히 동적 파라미터 조정, 배치 운영 및 부분 이익 잠금 등을 시행함으로써 전략은 높은 성공률을 유지하면서 전반적인 위험-이익 비율을 크게 개선할 수 있습니다.

경험 많은 양적 거래자를 위해, 이 전략은 개인적인 위험 선호와 재원 관리 원칙에 따라 맞춤형 조정을 할 수 있는 견고한 프레임 워크를 제공합니다. 가장 중요한 것은, 거래자는 이 전략의 뒤에 있는 논리적인 원리를 이해해야 하며, 과거의 역추적 성과에만 집중해서는 안 됩니다. 시장 환경은 끊임없이 변화하고 있기 때문에, 성공적인 전략은 적응력과 튼튼함을 필요로 합니다.

전략 소스 코드
/*backtest
start: 2025-06-07 00:00:00
end: 2025-07-04 08:00:00
period: 2m
basePeriod: 2m
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

//@version=6
strategy("BullFinder_15M_OBV_RSI_MFI", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// === Göstergeler ===
// OBV
obv = ta.cum(math.sign(ta.change(close)) * volume)
obvMA = ta.sma(obv, 21)

// Net Volume
netVol = request.security(syminfo.tickerid, "1", volume - volume[1])

// RSI & MFI
rsi = ta.rsi(close, 14)
mfi = ta.mfi(hlc3, 14)
ema21 = ta.ema(close, 21)

// === Trailing Stop Parametreleri ===
trigger_offset = input.float(0.35, "Trigger Offset (%)") / 100
trail_offset   = input.float(0.3,  "Trail Offset (%)") / 100
max_loss       = input.float(3.0,  "Max Loss (%)")     / 100

// === Durum Değişkenleri ===
var float highestPrice = na
var bool  trailActive = false

// === GİRİŞ KOŞULLARI ===
// Long (Aynı kaldı)
longCond = obv > obvMA and netVol > 0 and rsi > 45 and mfi < 50

// Short (Genişletildi - v2.9)
shortCond1 = rsi > 70 and obv < obv[1] and netVol < 0 and close < close[1]              // Reversal
shortCond2 = rsi > 65 and mfi > 80 and close < ema21                                    // Weak Pullback
shortCond  = shortCond1 or shortCond2

// === Giriş Emirleri ===
if longCond
    strategy.entry("Long", strategy.long)
    highestPrice := close
    trailActive := false

if shortCond
    // strategy.entry("Short", strategy.short)
    highestPrice := close
    trailActive := false

// === Long Trailing Stop ===
if strategy.position_size > 0
    highestPrice := math.max(highestPrice, high)
    triggerPrice = strategy.opentrades.entry_price(0) * (1 + trigger_offset)
    lossLevel    = strategy.opentrades.entry_price(0) * (1 - max_loss)
    trailLevel   = highestPrice * (1 - trail_offset)

    if not trailActive and close > triggerPrice
        trailActive := true

    if (trailActive and close < trailLevel) or close < lossLevel
        strategy.close("Long")

// === Short Trailing Stop ===
if strategy.position_size < 0
    highestPrice := math.min(highestPrice, low)
    triggerPrice = strategy.opentrades.entry_price(0) * (1 - trigger_offset)
    lossLevel    = strategy.opentrades.entry_price(0) * (1 + max_loss)
    trailLevel   = highestPrice * (1 + trail_offset)

    if not trailActive and close < triggerPrice
        trailActive := true

    if (trailActive and close > trailLevel) or close > lossLevel
        strategy.close("Short")


// === ALERT ŞARTLARI ===
alertcondition(longCond, title="BullFinder Long Signal", message="BullFinder: Long Entry on {{ticker}} at {{close}}")