이중 기간 헐 이동 평균 추세 추적 및 동적 손절매 양적 거래 전략

HMA Hull Moving Average TREND FOLLOWING TAKE PROFIT CROSSOVER CROSSUNDER
생성 날짜: 2025-06-03 10:02:32 마지막으로 수정됨: 2025-06-03 10:02:32
복사: 0 클릭수: 360
avatar of ianzeng123 ianzeng123
2
집중하다
319
수행원

이중 기간 헐 이동 평균 추세 추적 및 동적 손절매 양적 거래 전략 이중 기간 헐 이동 평균 추세 추적 및 동적 손절매 양적 거래 전략

개요

이 전략은 헐 이동 평균 ((HMA) 의 이중 주기적 조합을 활용하여 완전한 트렌드 추적 거래 시스템을 구축한다. 구체적으로, 이 전략은 HMA 200을 입시 신호 지표로 사용하며, HMA 150은 동적 정지 신호 생성에 사용한다. HMA 200을 돌파할 때 구매 또는 판매 신호를 유발하고, HMA 150과 특정 교차 관계가 있을 때 정지를 실행한다. 이 전략은 또한 조정 가능한 재검정 날짜 범위를 포함하며, 거래자는 특정 기간 동안 전략의 성능을 평가할 수 있다.

전략 원칙

이 전략의 핵심은 두 개의 다른 주기적인 헐 이동 평균 (HMA) 을 기반으로 합니다: HMA 200 및 HMA 150 ᄂ HMA는 전통적인 이동 평균에 비해 지연성을 크게 줄이면서도 부드러움을 유지할 수 있는 고급 이동 평균 지표입니다. 전략의 입문 논리는 가격과 느린 HMA 200 선의 교차 관계에 기반합니다.

정지 논리는 더 빠른 HMA 150을 역동적 기준점으로 사용한다: 다단계 입장에 있어서는 가격이 HMA 150을 넘으면 정지 시동을 걸고, 공백 입장에 있어서는 가격이 HMA 150을 넘으면 정지 시동을 걸는다. 이 디자인은 정지 수준을 고정된 수익 목표를 사용하는 대신 시장 역동성에 따라 조정할 수 있게 한다.

코드에는 구성 가능한 역추적 날짜 범위 기능이 구현되어 있으며, 연초일과 연말일을 설정하여 거래자는 특정 역사 기간에 대한 전략 성능 분석을 수행하여 다양한 시장 환경에서 전략을 더 정확하게 평가할 수 있습니다. 전략에는 HMA 라인, 입문 신호 및 정지 신호를 차트에 직관적으로 표시하는 시각화 구성 요소가 포함되어있어 거래자가 시장 상태와 전략 의사 결정을 직관적으로 이해할 수 있습니다.

전략적 이점

  1. 뒤처짐을 줄여라HMA는 전통적인 이동 평균에 비해 낮은 지연성을 가지고 있으며, 진입 및 출퇴근 신호를 더 적시에 제공하고, 시장 변화에 더 빠르게 반응하여 잠재적인 기회 비용을 줄일 수 있습니다.

  2. 쌍주기 균형 설계전략: 다른 주기의 HMA를 각각 입문과 정지용으로 사용하여 균형 잡힌 방법을 형성합니다. 더 긴 주기 ((200) 는 트렌드 방향을 안정적으로 식별하는 데 사용되며, 더 짧은 주기 ((150) 는 더 민감한 이익 보호를 위해 사용되며, 트렌드 캡처 및 이익 잠금의 이중 목표를 달성합니다.

  3. 완전히 자동화된 거래 시스템전략은 명확한 입출입 규칙을 가지고 있으며, 완전히 자동화 할 수 있으며, 인간의 감정적 간섭을 줄이고 거래 규율을 향상시킵니다. 차트의 시각적 신호는 전략 의사 결정을 명확하게합니다.

  4. 유연한 피드백 기능: 구성 가능한 날짜 범위는 거래자가 특정 역사적 기간에 대한 전략 테스트를 할 수있게 해줍니다. 이는 다양한 시장 환경에서 전략의 성능을 분석하고 매개 변수 설정을 최적화하는 데 도움이됩니다.

  5. 논리적으로 간단합니다.전략의 핵심 논리는 간단하고 직설적이며, 이해하기 쉽고 수정할 수 있으며, 거래자가 자신의 필요에 따라 사용자 정의 및 확장할 수 있으며, 모든 수준의 거래자가 사용할 수 있습니다.

  6. 트렌드 추적 장점: 트렌드 추적 전략으로서, 강한 트렌드 시장에서 큰 수익을 얻을 수 있으며, 특히 지속적인 단방향의 시장 환경에서 두드러지게 나타납니다.

전략적 위험

  1. 지역 시장의 부진: 모든 트렌드 추적 전략과 마찬가지로, 수평 정리 또는 급격히 변동하는 시장에서 좋지 않은 성과를 낼 수 있으며, 종종 잘못된 신호와 손실 거래가 발생할 수 있습니다.

  2. 손해 방지 장치의 부재: 현재 전략에는 통합된 스톱스 메커니즘이 없으며, 트렌드가 역전되면서도 스톱스 조건을 촉발하지 않은 경우 큰 회수로 이어질 수 있다. 실제 적용에서, 단일 거래의 최대 손실을 제한하기 위해 적절한 스톱스 규칙을 추가하는 것이 고려되어야 한다.

  3. 고정 변수 제한HMA 주기는 () 200 및 150) 가 고정되어 있으며 모든 시장이나 시간 프레임에 적합하지 않을 수 있습니다. 다른 거래 품종과 시간 주기는 최적의 결과를 얻기 위해 다른 파라미터 설정이 필요할 수 있습니다.

  4. 강세에서 조기 탈퇴: 강한 추세에서 HMA 150 기반의 정지 메커니즘은 수익성있는 거래를 조기 종료하고 수익의 일부를 놓칠 수 있습니다. 이것은 동적 정지 방법과 추세 지속성 사이의 고유한 모순입니다.

  5. 포지션 관리 부족이 전략은 포지션 크기 조정이나 위험 관리 기능을 포함하지 않으며, 모든 거래는 동일한 자본 비율을 사용하며, 이는 경우에 따라 과도한 위험 노출로 이어질 수 있다.

  6. 단일 지표 의존이 전략은 HMA 지표에만 의존하며, 다른 기술 지표나 필터를 사용하지 않고 신호를 확인하여 가짜 신호의 위험을 증가시킬 수 있습니다.

전략 최적화 방향

  1. 손해배상 장치에 가입: 동적 또는 고정된 중지 규칙, 예를 들어 ATR에 기반한 중지, 비율 중지 또는 지원 / 저항 수준에 기반한 중지, 단일 거래의 최대 손실 위험을 제한하기 위해. 이것은 특히 트렌드가 급격히 역전되는 경우, 자금의 안전을 보호하기 위해 중요합니다.

  2. 적응형 변수 설계: 시장의 변동성이나 다른 시장 특성의 역학에 따라 HMA 주기를 조정하여 전략이 다른 시장 환경에 적응 할 수 있도록합니다. 예를 들어, 변동성이 높을 때 더 긴 주기를 사용하거나, 변동성이 낮을 때 더 짧은 주기를 사용하십시오.

  3. 시장 환경 필터를 추가합니다.: 분기 시장 또는 트렌드 시장의 검출을 구현하는 메커니즘, 분기 시장에서 거래를 피하거나 전략 파라미터를 조정한다. ADX, 블린 대역폭과 같은 지표를 사용하여 시장 상태를 평가 할 수 있다.

  4. 통합 거래량 분석: 트렌드 강도를 확인하기 위해 거래량 지표를 추가하고, 거래량이 지원되는 경우에만 신호를 실행하여 가짜 브레이크로 인한 손실 거래를 줄인다.

  5. 지능형 포지션 관리: 변동성, 계정 규모 또는 위험 매개 변수에 따라 포지션 크기를 조정하여 위험 균형과 자금의 장기적인 안정적 성장을 보장합니다. 예를 들어, ATR 기반의 포지션 크기를 계산하거나 고정 위험 비율 방법을 구현합니다.

  6. 다중 시간 프레임 분석: 더 높은 시간 프레임의 트렌드 분석을 추가하고, 높은 시간 프레임의 트렌드 방향이 일치하는 경우에만 거래를 실행하여 신호 품질과 성공률을 향상시킵니다.

  7. 추적 손실을 실현: HMA 지수, ATR 또는 비율 회수에 기초하여 추적 중지 손실을 달성 할 수 있습니다.

요약하다

이중주기 헐 이동 평균 트렌드 추적과 동적 정지량화 거래 전략은 동적 정지 메커니즘을 결합한 직관적이고 효과적인 트렌드 추적 방법을 제공합니다. 두 개의 다른 주기의 헐 이동 평균의 낮은 지연 특성을 활용하여 이 전략은 트렌드를 포착하고 이익을 보호하는 사이에 균형을 잡습니다. 전략의 주요 장점은 명확한 신호 생성, 감소 된 신호 지연 및 사용자 정의 가능한 피드백 기간으로 트렌드 추적자의 거래에 유용한 도구가됩니다.

그러나, 이 전략은 또한 일부 제한이 있습니다. 지역 시장에서 좋지 않은 성과, 중지 장치의 부족 및 고정 변수의 제한이 있습니다. 제안 된 최적화 조치를 실행하여, 예를 들어, 중지 규칙을 추가, 적응 변수 조정, 시장 환경 필터링 및 지능형 위치 관리, 이 전략은 다양한 시장 환경에 적합한 더 안정적인 거래 시스템으로 발전 할 수 있습니다.

결국, 헐의 이동 평균을 기반으로 한 이중 주기 전략은 양적 거래자에게 개인 위험 선호와 거래 목표에 따라 추가적으로 사용자 정의 및 확장 할 수있는 견고한 기반을 제공합니다. 실제 응용에서는 거래자는 항상 위험 관리의 중요성을 염두에 두어야하며 실제 거래 전에 충분한 회귀 및 모형 거래 검증을 수행해야합니다.

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

//@version=5
//@strategy HMA 200/150 Trading Strategy
//@description A trend-following strategy using HMA 200 for entry signals and HMA 150 for take profit signals. Buys when price closes above HMA 200, sells when price closes below HMA 200. Take profit for buys when price closes below HMA 150, and for sells when price closes above HMA 150. Includes date range inputs for backtesting.
//@author [TrendBlazeX]

strategy("HMA 200/150 Trading Strategy", overlay=true, margin_long=100, margin_short=100)

// Input for backtest period
var start_year = input.int(2023, "Start Year", minval=1900, maxval=2100, group="Backtest Period")
var start_month = input.int(1, "Start Month", minval=1, maxval=12, group="Backtest Period")
var start_day = input.int(1, "Start Day", minval=1, maxval=31, group="Backtest Period")
var end_year = input.int(2025, "End Year", minval=1900, maxval=2100, group="Backtest Period")
var end_month = input.int(12, "End Month", minval=1, maxval=12, group="Backtest Period")
var end_day = input.int(31, "End Day", minval=1, maxval=31, group="Backtest Period")

// Convert dates to timestamps
start_timestamp = timestamp(start_year, start_month, start_day, 0, 0)
end_timestamp = timestamp(end_year, end_month, end_day, 23, 59)

// Check if current bar is within the date range
in_date_range = time >= start_timestamp and time <= end_timestamp

// Calculate HMAs
hma200 = ta.hma(close, 200)
hma150 = ta.hma(close, 150)

// Define conditions for buy and sell signals
buySignal = ta.crossover(close, hma200) and in_date_range
sellSignal = ta.crossunder(close, hma200) and in_date_range

// Define take profit conditions
buyTakeProfit = ta.crossunder(close, hma150) and in_date_range
sellTakeProfit = ta.crossover(close, hma150) and in_date_range

// Strategy entry and exit
if (buySignal)
    strategy.entry("Buy", strategy.long)

if (sellSignal)
    strategy.entry("Sell", strategy.short)

if (buyTakeProfit)
    strategy.close("Buy", comment="TP Buy")

if (sellTakeProfit)
    strategy.close("Sell", comment="TP Sell")

// Plot HMAs on chart
plot(hma200, color=color.blue, title="HMA 200", linewidth=2)
plot(hma150, color=color.orange, title="HMA 150", linewidth=2)

// Plot signals on chart
plotshape(buySignal, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(sellSignal, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)
plotshape(buyTakeProfit, title="Buy TP", location=location.abovebar, color=color.yellow, style=shape.diamond, size=size.tiny)
plotshape(sellTakeProfit, title="Sell TP", location=location.belowbar, color=color.yellow, style=shape.diamond, size=size.tiny)