US30 다단계 추세 확인 및 위험 관리 전략

RSI SMA EMA 趋势确认 风险管理 交易分级 波动性分析 仓位管理
생성 날짜: 2025-04-01 13:41:30 마지막으로 수정됨: 2025-04-01 13:41:30
복사: 2 클릭수: 308
avatar of ianzeng123 ianzeng123
2
집중하다
319
수행원

US30 다단계 추세 확인 및 위험 관리 전략 US30 다단계 추세 확인 및 위험 관리 전략

개요

이 전략은 다중 지표 확인 및 등급 평가 시스템에 기반한 단선 거래 전략이다. 이 전략은 플러그그램 크기, 거래량 변화 및 RSI 지표를 분석하여 거래 신호의 강도를 평가하며, 신호를 A, B, C로 세 단계로 나눈다. A 레벨의 신호는 가장 강하고 C 레벨의 신호는 가장 약하다. 이 전략은 자동으로 스톱 및 스톱 손실 위치를 설정하는 것과 같은 위험 관리 기능을 통합하고, 차트 표기 및 거래 상기 기능을 제공하여 거래자가 거래 신호를 실시간으로 추적 할 수 있도록 한다.

전략 원칙

이 전략의 핵심 원칙은 다음과 같은 몇 가지 핵심 요소의 조합에 기반합니다.

  1. 트렌드 판단: 200 EMA를 주요 트렌드 판단 도구로 사용한다. 가격은 200 EMA 위에 더 많은 기회를 찾고, 200 EMA 아래에 더 적은 기회를 찾는다.

  2. 평선 교차 신호: 전략은 20주기의 EMA와 SMA를 사용하며, 이 두 평선선이 교차할 때 초기 신호를 생성한다. 다중 신호를 하는 것은 EMA 상단 SMA를 통과해야 하며, 공백 신호를 하는 것은 EMA 밑단 SMA를 통과해야 한다.

  3. RSI 확인: 9주기 RSI 지표를 사용하여, 다중 할 때 RSI가 50보다 크기를 요구하며, 공백 할 때 RSI가 50보다 작기를 요구한다.

  4. 몸체 크기의 평가: 전략적 분석 의 크기와 지난 20개의 의 평균 부피를 비교하여 현재의 가격 동력을 판단한다.

  5. 거래량 확인: 현재 거래량이 이전 주기의 거래량보다 더 많을 것을 요구하여 충분한 시장 참여를 보장합니다.

  6. 신호 등급 시스템:

    • A등급 ((최강): 은 매우 크다 ((20주기 평균보다 2배 크다) 거래량이 증가하고 RSI는 강렬한 확인 방향 ((RSI>55 또는 <45)
    • B급 (중급): 더 큰 규모, 거래량이 증가
    • C등급 ((약한)): 큰 체이지만 거래량이 증가하거나 RSI가 하나만 확인되는 경우
  7. 위험 관리: 조정 가능한 스톱 (설정 0.5%) 및 스로프 (설정 0.3%) 레벨이 포함되어 있으며, 입점 가격의 비율로 설정된다.

전략은 이러한 복수의 확인 조건을 통해 충분한 시장 운동과 트렌드 확인이 있을 때만 거래에 진입하는 것을 보장하고, 가짜 신호를 줄입니다.

전략적 이점

  1. 등급 평가 시스템가장 큰 장점은 고유 한 신호 등급 메커니즘에 있습니다. 거래자는 자신의 위험 선호도에 따라 가장 강력한 신호만 거래 할 수 있습니다 (A 레벨) 또는 더 많은 거래 기회를 포함 할 수 있습니다 (B 레벨 및 C 레벨).

  2. 다중 인증 메커니즘: 기술 지표 ((RSI, 평균선), 가격 행동 ((체 크기) 및 시장 참여 ((거래량) 의 여러 확인을 결합하여 가짜 신호의 가능성을 효과적으로 감소시킵니다.

  3. 내장 위험 관리: 자동화 된 스톱 스톱 손실 설정은 각 거래의 위험을 제어하고 단일 거래로 인해 과도한 손실을 방지합니다.

  4. 시각적 피드백 시스템: 거래 신호가 트리거될 때 자동으로 차트에 표기를 표시하고 거래 방향과 신호 강도를 명확하게 표시하여 거래자가 빠르게 식별할 수 있습니다.

  5. 경고 기능: 트레이딩뷰의 알림 시스템이 통합되어 있으며, 트레이더에게 팝업창, 이메일 또는 휴대폰 통보를 통해 알릴 수 있습니다.

  6. 다른 시장 조건에 적응하기: 신호 등급과 다중 지표 확인을 통해, 전략은 다양한 변동성 환경에서 상대적으로 안정적인 성능을 유지할 수 있다.

  7. 사용자 정의: RSI 길이, 평균 주기, 스톱 스톱 손실 비율 및 거래 신호 레벨을 포함한 여러 핵심 매개 변수의 사용자 정의 옵션을 제공하여 개인 선호도 및 시장 조건에 따라 전략을 조정할 수 있습니다.

  8. 트렌드를 따라가는 것과 동력을 결합하는 것이 전략은 트렌드 추종을 ((평균선) 과 동력 확인을 ((RSI, 크기를)) 효과적으로 결합하여 비교적 완전한 거래 시스템을 형성한다.

전략적 위험

  1. 과도한 필터링다중 인증 메커니즘은 거래 기회를 놓칠 수 있으며, 특히 A급 신호만 거래할 경우 거래 빈도를 크게 줄일 수 있습니다.

  2. 매개변수 민감도: 전략은 여러 가지 기술 지표와 파라미터를 사용하며, 이러한 파라미터의 미세한 변화는 성능의 큰 차이를 초래할 수 있습니다. 예를 들어, RSI 길이나 평균선 주기와 피사체 크기의 판단 기준은 다른 시장 조건에 따라 조정해야 할 수 있습니다.

  3. 고정 백분율 스톱 스톱: 전략은 고정된 비율의 스톱로드를 사용한다. 이것은 모든 시장 조건에 적합하지 않을 수 있다. 높은 변동성 환경에서 고정된 스톱로드 수준은 너무 작을 수 있고, 낮은 변동성 환경에서 너무 커질 수 있다.

  4. 시장 소음의 영향1분 시간 프레임에서 시장의 잡음이 더 커지고, 특히 시장의 수평 또는 변동성이 낮은 시기에 더 많은 가짜 신호를 유발할 수 있습니다.

  5. 유동성 위험: 거래하지 않는 시간이나 유동성이 낮은 기간 동안 거래 신호의 질이 떨어질 수 있으며, 슬라이드 포인트 위험이 증가합니다.

  6. 연속적인 손실 위험: 계열 시스템을 사용하더라도 시장의 급격한 변화로 인해 지속적인 손실이 발생할 수 있으므로 적절한 자금 관리 전략이 필요합니다.

  7. 역전향 위험이 전략은 주로 단기 평균선 교차와 RSI 확인을 기반으로 하며, 강력한 반향상태에서 잘못된 신호를 일으킬 수 있다.

이러한 위험을 완화하기 위한 방법은 다음과 같습니다: 더 긴 시간 프레임의 필터 조건을 사용, 동적으로 중지 중지 손실 수준을 조정, 특정 시장 시점에 거래 (예를 들어, 변동성이 높거나 유동성이 풍부한 기간), 주기적으로 매개 변수를 재검토하고 최적화, 그리고 각 거래의 리스크 을 엄격하게 제어.

전략 최적화 방향

  1. 동적 중지 중지 손실: 고정된 퍼센트의 스톱 스톱 로즈를 시장의 변동성에 기반한 동적 수준 (ATR 지표와 같은) 으로 변경하여 다른 시장 조건에 더 잘 적응합니다. 최적화 코드는 다음과 같습니다.
   atr = ta.atr(14)
   longSL = close - atr * slMultiplier
   longTP = close + atr * tpMultiplier
  1. 시간 필터: 거래 시간 필터를 추가하여 시장의 변동성이 높고 유동성이 풍부한 시간대에만 거래합니다. 예를 들어 미국 주식 시장의 오픈 시간이나 유럽 및 미국 시장의 중복 시간:
   timeFilter = (hour >= 14 and hour < 16) or (hour >= 9 and hour < 11)
  1. 다중 시간 프레임 분석더 높은 시간 프레임의 트렌드 통합 확인, 더 높은 시간 프레임의 트렌드 방향이 일치하는 경우에만 거래:
   higherTimeframeTrend = request.security(syminfo.ticker, "15", close > ta.ema(close, 200))
   longCondition = longBase and higherTimeframeTrend
  1. 연속 신호 강화: 연속적으로 나타나는 동일한 방향의 신호는 신호 강도를 강화하는 것으로 간주할 수 있으며, 또는 단기간에 여러 번 나타나는 동일한 방향의 신호는 더 강력한 확인으로 간주할 수 있다:
   consecutiveLongSignals = longBase and longBase[1]
  1. 적응 지표 변수: 적응된 RSI와 평균선 길이를 사용하여 시장의 변동성에 따라 자동으로 매개 변수를 조정합니다:
   adaptiveLength = math.round(ta.atr(14) / ta.atr(14)[20] * baseLength)
   adaptiveRsi = ta.rsi(close, math.max(2, adaptiveLength))
  1. 이윤/손실 대비 최적화: 각기 다른 신호 레벨에 따라 서로 다른 적당률을 설정합니다. 예를 들어 A급 신호는 더 큰 적당률을 사용할 수 있으며 C급 신호는 더 보수적인 설정을 사용합니다.
   if setupGrade == "A"
       tpMultiplier = 2.0
   else if setupGrade == "B"
       tpMultiplier = 1.5
   else
       tpMultiplier = 1.0
  1. 변동율 필터에 추가이 경우, 상자 거래는 매우 낮은 변동성 환경에서 거래하는 것을 피하고 상자 거래의 잘못된 신호를 줄일 수 있습니다.
   volatilityFilter = ta.atr(14) > ta.sma(ta.atr(14), 20) * 0.8
  1. 일부 수익 잠금 메커니즘: 부분 이익 잠금 메커니즘을 구현하여, 가격이 어느 정도 움직일 때, 손실을 비용 지점으로 이동하거나 부분 이익을 잠금합니다:
   if (strategy.position_size > 0 and close > entryPrice * (1 + partialTpPerc/100))
       strategy.exit("Partial", "Long", qty_percent=50)

이러한 최적화 방향은 전략의 핵심 논리를 그대로 유지하면서 다양한 시장 조건에 대한 전략의 적응성 문제를 해결하고 신호 품질을 향상시키고 위험을 더 잘 관리합니다.

요약하다

이 US30 다단계 트렌드 확인 및 위험 관리 전략은 다중 기술 지표, 트렌드 확인 및 동력 분석을 결합한 단선 거래 시스템이다. 그것의 독특한 것은 계층 평가 시스템을 사용하여 거래 신호의 품질을 평가하는 것이다. (A, B, C 레벨) 거래자는 자신의 위험 선호에 따라 신호 품질을 선택할 수 있다. 전략은 평행선 교차, RSI 확인, 덩어리 크기 및 거래량 변화와 같은 다차원 분석을 통해 신호의 신뢰성을 향상시킨다.

내장된 위험 관리 기능과 명확한 시각적 피드백은 비교적 완전한 거래 시스템으로 만든다. 그러나 이 전략은 짧은 시간 프레임에서 작동할 때 시장의 큰 소음, 파라미터 민감성 및 고정 스톱 로즈의 유연성이 부족한 등의 도전에 직면할 수 있다. 동적 위험 관리, 다중 시간 프레임 분석 및 시장 조건 필터링과 같은 최적화 방향을 통합함으로써 이 전략은 핵심 장점을 유지하면서 다양한 시장 환경에서 적응성과 안정성을 더욱 향상시킬 잠재력을 가지고 있다.

규칙이 명확하고, 위험도 조절이 가능한 단선 거래 전략을 선호하는 거래자들에게 이 시스템은 좋은 출발점을 제공하며, 추가적인 피드백과 최적화를 통해 개인 거래 스타일과 목표 시장 특성에 따라 맞춤형 거래 시스템으로 발전할 수 있다.

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

//@version=5
strategy("US30 1-min Strategy with TP/SL, Grades, Alerts", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// === Inputs ===
rsiLength     = input.int(9, title="RSI Length")
maLength      = input.int(20, title="MA Length (SMA & EMA)")
ema200Length  = input.int(200, title="200 EMA Length")
tpPerc        = input.float(0.5, title="Take Profit %", step=0.1)
slPerc        = input.float(0.3, title="Stop Loss %", step=0.1)

// Grade filters
allowA        = input.bool(true, title="Trade A-Grade Setups")
allowB        = input.bool(true, title="Trade B-Grade Setups")
allowC        = input.bool(false, title="Trade C-Grade Setups")

// === Indicators ===
rsi = ta.rsi(close, rsiLength)
sma = ta.sma(close, maLength)
ema = ta.ema(close, maLength)
ema200 = ta.ema(close, ema200Length)
volumeRising = volume > volume[1]

// === Candle Size Helpers ===
avgBody = ta.sma(math.abs(close - open), 20)
candleBody = math.abs(close - open)
candleLarge = candleBody > avgBody
candleVeryLarge = candleBody > avgBody * 2

// === Setup Grade Conditions ===
gradeA = candleVeryLarge and volumeRising and rsi > 55 or rsi < 45
gradeB = candleLarge and volumeRising
gradeC = candleLarge

// === Setup Conditions ===
// --- Long ---
longBase = close > ema200 and ta.crossover(ema, sma) and rsi > 50 and close > ema and close > sma
// --- Short ---
shortBase = close < ema200 and ta.crossunder(ema, sma) and rsi < 50 and close < ema and close < sma

// === Determine Grade ===
setupGrade = ""
isTrade = false

if longBase
    if gradeA and allowA
        setupGrade := "A"
        isTrade := true
    else if gradeB and allowB
        setupGrade := "B"
        isTrade := true
    else if gradeC and allowC
        setupGrade := "C"
        isTrade := true

if shortBase
    if gradeA and allowA
        setupGrade := "A"
        isTrade := true
    else if gradeB and allowB
        setupGrade := "B"
        isTrade := true
    else if gradeC and allowC
        setupGrade := "C"
        isTrade := true

// === Entry & TP/SL ===
longTP = close * (1 + tpPerc / 100)
longSL = close * (1 - slPerc / 100)
shortTP = close * (1 - tpPerc / 100)
shortSL = close * (1 + slPerc / 100)

// Entry
if longBase and isTrade and (setupGrade == "A" or setupGrade == "B" or setupGrade == "C")
    strategy.entry("Long " + setupGrade, strategy.long)
    strategy.exit("TP/SL", "Long " + setupGrade, limit=longTP, stop=longSL)
    label.new(bar_index, high, "Long " + setupGrade, style=label.style_label_up, color=color.green, textcolor=color.white)
    alert("LONG " + setupGrade + " setup triggered!", alert.freq_once_per_bar)

if shortBase and isTrade and (setupGrade == "A" or setupGrade == "B" or setupGrade == "C")
    strategy.entry("Short " + setupGrade, strategy.short)
    strategy.exit("TP/SL", "Short " + setupGrade, limit=shortTP, stop=shortSL)
    label.new(bar_index, low, "Short " + setupGrade, style=label.style_label_down, color=color.red, textcolor=color.white)
    alert("SHORT " + setupGrade + " setup triggered!", alert.freq_once_per_bar)


// === Plotting MAs ===
plot(ema, title="20 EMA", color=color.red)
plot(sma, title="20 SMA", color=color.blue)
plot(ema200, title="200 EMA", color=color.green)