동적 볼륨 이동 평균 추세 추종 및 HLCC4 돌파 거래 전략

VWMA HLCC4 MA
생성 날짜: 2025-02-18 18:12:05 마지막으로 수정됨: 2025-02-18 18:12:05
복사: 5 클릭수: 441
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

동적 볼륨 이동 평균 추세 추종 및 HLCC4 돌파 거래 전략

개요

이 전략은 다중 시간 주기를 기반으로 한 트렌드 추적 시스템으로, 주기 50주기 트랜스포메이션 중화 이동 평균 ((VWMA) 을 대 트렌드 필터로 결합하고, 현재 시간 주기의 200주기 VWMA 및 HLCC4 가격 돌파구를 구체적인 거래 신호로 사용합니다. 이것은 엄격한 트렌드 확인과 다중 시간 주기의 검증을 통해 거래의 신뢰성을 높이기 위해 더 많은 일을하는 전략입니다.

전략 원칙

이 전략의 핵심 논리는 다음과 같은 핵심 요소들을 포함하고 있습니다.

  1. 주주 50주기 VWMA를 대동향 판단기준으로 사용하여, 가격이 이 평균선 위에 있을 때만 포지션을 열 수 있다.
  2. 입시 조건은 두 개의 연속적인 K 선의 종결값이 200주기 VWMA 위에 있고, 두 번째 K 선의 종결값이 첫 번째 K 선의 HLCC4 평균값보다 높아야 한다는 것을 충족해야 한다.
  3. 출구 신호는 일선 레벨에 기반하며, 일선 200주기 VWMA 아래로 하루 일선 종결 가격이 떨어질 때 평지한다.
  4. 전략은 고정 포지션 관리 방식을 채택하고, 매 거래마다 계정 권익의 10%를 사용한다.
  5. 최근 5년 동안의 주간 기간을 재검토하여 전략이 근래 시장 환경에서의 효과를 보장한다.

전략적 이점

  1. 다중 시간 주기 검증: 주경선과 해경선의 조합을 통해 큰 추세를 파악하고 시장 변화에 신속하게 대응할 수 있다.
  2. 리스크 관리가 개선되었다: VWMA를 간단한 이동 평균 대신 사용하여 시장의 실제 움직임을 더 잘 반영할 수 있다.
  3. 트렌드 확인이 엄격하다: 복수의 조건이 동시에 충족되어야 입학이 가능하며, 가짜 침입의 위험이 낮아진다.
  4. 포지션 관리 합리적인: 고정 비율의 포지션 관리 방식은 위험을 통제하고 수익 공간을 유지합니다.
  5. 자동화 수준: 전략이 명확하고 거래가 완전히 자동화 될 수 있습니다.

전략적 위험

  1. 추세 역전 위험: 시장의 격렬한 변동으로 인해 큰 회전이 발생할 수 있습니다.
  2. 슬라이드 포인트 효과: 시장 유동성이 부족할 때 실제 거래 가격이 이론 가격과 편차할 수 있다.
  3. 신호 지연: 더 긴 기간의 평균선을 사용하기 때문에, 전략이 트렌드 전환점에서의 반응이 상대적으로 지연될 수 있다.
  4. 허위 침입 위험: 여러 번 확인되었지만 허위 침입으로 인한 손실이 발생할 수 있습니다.
  5. 한방 거래 제한: 전략이 너무 많아서 하향 추세에서 잠재적인 하락 기회를 놓치게 됩니다.

전략 최적화 방향

  1. 동적 변수 최적화: 시장의 변동에 따라 VWMA의 주기적 변수를 자동으로 조정할 수 있다.
  2. 포지션 관리 최적화: 변동율에 기반한 동적 포지션 관리 시스템을 도입한다.
  3. 출전 메커니즘 개선: 이동 상쇄 또는 기술 지표에 기반한 동적 상쇄를 추가할 수 있다.
  4. 시장 정서 지표: RSI 또는 MACD와 같은 지표와 결합하여 신호의 신뢰성을 높인다.
  5. 거래량 분석을 도입: 거래량 분석을 심화하고 VWMA의 계산 방법을 최적화한다.

요약하다

이 전략의 핵심 장점은 트렌드 확인 메커니즘과 명확한 거래 논리입니다. 강력한 시장에서 중·장기 트렌드 기회를 잡기 위해 적합합니다. 제안된 최적화 방향을 통해 전략은 더 향상시킬 여지가 있습니다.

전략 소스 코드
/*backtest
start: 2024-02-19 00:00:00
end: 2025-02-17 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("Long-Only 200 WVMA + HLCC4 Strategy (Weekly 50 VWMA Filter, Daily Exit, Last 5 Years)", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// Parameters
wvma_length = input(200, title="200 WVMA Length")

// Restrict backtesting to the last 5 years
var int backtest_start_year = na
if na(backtest_start_year)
    backtest_start_year = year - 5  // Calculate the start year (5 years ago)

// Check if the current time is within the last 5 years
within_backtest_period = true

// Fetch Weekly 50 VWMA
weekly_vwma_50 = request.security(syminfo.tickerid, "W", ta.vwma(close, 50))

// Basic Condition: Price must be above Weekly 50 VWMA
above_weekly_vwma = (close > weekly_vwma_50)

// 200 Weighted Volume Moving Average (WVMA) on the current timeframe
wvma = ta.vwma(close, wvma_length)
plot(wvma, title="200 WVMA", color=color.blue, linewidth=2)

// HLCC4 Calculation
hlcc4 = (high + low + close + close) / 4

// Fetch Daily 200 WVMA
daily_wvma = request.security(syminfo.tickerid, "D", ta.vwma(close, wvma_length))

// Fetch Daily Close
daily_close = request.security(syminfo.tickerid, "D", close)

// Long Entry Condition
long_condition = (close[1] > wvma[1]) and (close > wvma) and (close > hlcc4[1])

// Long Exit Condition (Daily Close below Daily 200 WVMA)
exit_condition = (daily_close < daily_wvma)

// Check if there is an open position
var bool in_position = false

// Execute trades only within the last 5 years and above Weekly 50 VWMA
if within_backtest_period and above_weekly_vwma
    if (long_condition and not in_position)
        strategy.entry("Buy", strategy.long)
        in_position := true

    if (exit_condition and in_position)
        strategy.close("Buy")
        in_position := false

// Plotting Entry and Exit Signals
plotshape(series=long_condition and not in_position and within_backtest_period and above_weekly_vwma, style=shape.labelup, location=location.belowbar, color=color.green, text="Buy", size=size.small)
plotshape(series=exit_condition and in_position and within_backtest_period and above_weekly_vwma, style=shape.labeldown, location=location.abovebar, color=color.red, text="Exit", size=size.small)

// Highlight background for trend direction
bgcolor(long_condition and not in_position and within_backtest_period and above_weekly_vwma ? color.new(color.green, 90) : na, title="Uptrend Background")
bgcolor(exit_condition and in_position and within_backtest_period and above_weekly_vwma ? color.new(color.red, 90) : na, title="Exit Background")

// Plot Weekly 50 VWMA
plot(weekly_vwma_50, title="Weekly 50 VWMA", color=color.orange, linewidth=2)