Hull 이동 평균과 실제 범위를 기반으로 한 추세 추종 전략


생성 날짜: 2024-01-15 15:26:08 마지막으로 수정됨: 2024-01-15 15:26:08
복사: 0 클릭수: 775
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

Hull 이동 평균과 실제 범위를 기반으로 한 추세 추종 전략

개요

이 전략의 핵심 아이디어는 Hull 평균선과 실제 파도 크기를 ((ATR) 결합하여 시장의 경향 방향을 식별하고 트렌드 방향이 확인된 후에 입주를 하는 것이다. 구체적으로, 특정 주기 동안의 Hull 평균선과 이전 주기 Hull 평균선 사이의 차이를 계산하여, 차이는 상승하면 낙관적 추세로 판단하고, 차이는 떨어지면 낙관적 추세로 판단한다. 동시에 ATR 지표의 지표 판단과 결합하여, 트렌드 방향이 확인된 동시에 파도가 계속 확대될 때 입주를 선택한다.

전략 원칙

이 전략은 주로 헐 평균선과 ATR 두 종류의 지표에 기반한다.

헐 평균은 미국의 선물 거래자 앨런 헐 (Alan Hull) 가 개발한 트렌드 추적 형식의 지표이다. 헐 평균은 이동 평균과 비슷하지만, 헐 평균은 더 높은 민감성을 가지고 있으며, 가격 변화의 트렌드를 더 빨리 포착할 수 있다. 전략에는 조정 가능한 변수 hullLength가 설치되어 있으며, 이는 헐 평균의 주기 길이를 제어하고, 현재 주기와 이전 주기의 헐 평균 사이의 차이를 계산하여 현재의 가격 트렌드 방향을 판단한다.

ATR은 Average True Range, 즉 실제 파장이다. 그것은 매일의 가격 변동의 폭을 반영한다. 변동이 커지면 실제 파장은 상승한다. 변동이 줄어들면 실제 파장은 떨어진다.

이 전략의 논리는 다음과 같습니다.

  1. 현재 주기의 Hull 평균 currentHullMA와 이전 주기의 Hull 평균 previousHullMA를 계산합니다.
  2. 둘의 차이를 계산해 hullDiff = currentHullMA - previousHullMA
  3. hullDiff > 0일 때, 다머리 경향으로 판단한다; hullDiff < 0일 때, 공허 경향으로 판단한다
  4. 동시, 트렌드의 대폭 지표로서 일정 주기 (atrLength 설정) 의 ATR 값을 계산합니다.
  5. 다목향으로 판단되고 ATR 값이 price보다 크고 price이 atrLength 주기 전의 가격보다 크면 더 많이; 공백으로 판단되고 ATR 값이 price보다 작고 price이 atrLength 주기 전의 가격보다 작으면 공백
  6. hullDiff의 양과 음으로 평행 신호를 판단한다

전략적 강점 분석

이 전략은 다음과 같은 장점을 가지고 있습니다.

  1. 트렌드 판단과 변동률 지표와 결합하여, 가격 추세가 명확하고 변동성이 커질 때 입주를 선택할 수 있으며, 흔들리는 시장에서 피되는 것을 피할 수 있다.
  2. 헐 평균선은 가격 변화에 더 민감하게 반응하여 새로운 트렌드 방향을 빠르게 판단할 수 있다.
  3. ATR은 시장의 변동성과 열기를 반영하고, 진입 시점을 선택하는데 기초를 제공합니다.
  4. 더 많은 변수를 조정할 수 있으며, 최적화하여 최적의 변수 조합을 얻을 수 있다.

위험 분석

이 전략에는 몇 가지 위험도 있습니다.

  1. 헐 평균선과 ATR 모두 가짜 돌파 문제를 완전히 피할 수 없으며, 여전히 될 가능성이 있다.
  2. 매개 변수 설정이 잘못되면 거래가 빈번하거나 민감하지 않아 전략 효과에 영향을 미칠 수 있습니다.
  3. 급격한 상황, 즉 급격한 상승, 돌파, 또는 폭락에 효과적으로 대처할 수 없습니다.

대응방법:

  1. 틈새를 뚫지 않게 막아두세요.
  2. 반복 테스트를 통해 최적화 매개 변수를 사용하여 지표가 다른 시장 환경에 더 적합하도록하십시오.
  3. 이 전략은 “위험이 닥칠 때, 실행을 중지한다”는 뜻입니다.

최적화 방향

이 전략의 최적화 가능성은 매우 넓고, 다음과 같은 부분에서 시작될 수 있습니다.

  1. 다양한 헐 평균선 주기 변수를 테스트하여 현재 시장 환경에 가장 적합한 주기 설정을 찾습니다.
  2. 다양한 ATR 주기 파라미터 조합을 테스트하여 시장을 가장 잘 포착할 수 있는 주기를 찾습니다.
  3. 다른 종류의 ATR 경화 방법을 시도해보세요 (RMA, SMA, EMA 등) 어떤 방법이 가장 효과적인지 확인해보세요.
  4. 포지션 개시 조건을 최적화, 예를 들어, 변동 지표 Reaction과 ATR의 조합 조건 판단.
  5. 손해 차단 방법을 최적화하고, 손해 차단 범위를 적절히 완화하여, 을 피한다.

요약하다

이 전략은 Hull 평평선의 트렌드 추적 능력과 ATR의 온도 지표 판단 능력을 통합하여 트렌드를 확인하면서 변동이 크고 긍정적 인 시점을 선택하여 무효 신호를 필터링 할 수 있습니다. 지표 매개 변수의 최적화 및 위험 관리 수단의 사용은 전략의 효과를 더욱 강화 할 수 있습니다.

전략 소스 코드
/*backtest
start: 2024-01-07 00:00:00
end: 2024-01-14 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//                                                Hull cross and ATR
strategy("Hull cross and ATR", shorttitle="H&ATR", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, calc_on_order_fills=true, calc_on_every_tick=true, pyramiding=0)
keh=input(title="Hull Length",defval=50)
length = input(title="ATR Length", defval=50, minval=1)
smoothing = input(title="ATR Smoothing", defval="RMA", options=["RMA", "SMA", "EMA", "WMA"])
p=input(ohlc4,title="Price data")
n2ma=2*wma(p,round(keh/2))
nma=wma(p,keh)
diff=n2ma-nma
sqn=round(sqrt(keh))
n2ma1=2*wma(p[1],round(keh/2))
nma1=wma(p[1],keh)
diff1=n2ma1-nma1
sqn1=round(sqrt(keh))
n1=wma(diff,sqn)
n2=wma(diff1,sqn)
ma_function(source, length) => 
    if smoothing == "RMA"
        rma(p, length)
    else
        if smoothing == "SMA"
            sma(p, length)
        else
            if smoothing == "EMA"
                ema(p, length)
            else
                wma(p, length)
plot(ma_function(tr(true), length), title = "ATR", color=black, transp=50)
closelong = n1<n2
if (closelong)
    strategy.close("buy")
closeshort = n1>n2
if (closeshort)
    strategy.close("sell")
if (ma_function(tr(true), length)<p and p>p[length] and n1>n2)
    strategy.entry("buy", strategy.long, comment="BUY")
if (ma_function(tr(true), length)>p and p<p[length] and n1<n2)
    strategy.entry("sell", strategy.short, comment="SELL")