이중 HULL 이동 평균 전략

저자:차오장, 날짜: 2023-09-15 16:39:48
태그:

전략 개요:

이중 HULL 이동 평균 전략 (Double HULL Moving Average Strategy) 은 앨런 헐 (Alan HULL) 이 만든 HULL 이동 평균 (HMA) 인디케이터를 기반으로 한 거래 전략이다. 이 전략은 두 개의 HMA 라인, 장기 라인 및 단기 라인을 사용하여 입점 및 출구 지점을 결정한다. HMA는 가격 데이터에 가중 평균을 적용하여 지연을 줄이는 향상된 이동 평균이다. 단기 및 장기 라인의 크로스오버는 구매 및 판매 신호를 생성하는 데 사용됩니다.

HMA를 계산하는 공식은 다음과 같습니다.

HmaL = wma(2 * wma(close, round(PDL/2)) - wma(close, PDL), round(sqrt(PDL)))
HmaS = wma(2 * wma(close, round(PDS/2)) - wma(close, PDS), round(sqrt(PDS)))

여기서 PDL는 장기 기간을 나타내고 PDS는 단기 기간을 나타냅니다. 전략은 구매 및 판매 조건을 결정하기 위해 단기 및 장기 라인의 값을 비교합니다.

장점:

  1. 낮은 지연: HMA는 전통적인 이동 평균에 비해 더 적은 지연을 가지고 있으며 가격 트렌드 변화에 더 빠르게 반응하고 구매 및 판매에 더 정확한 신호를 제공합니다.
  2. 단순성: 이 전략은 크로스오버 분석을 위해 두 개의 이동 평균선을 사용하므로 이해와 구현이 비교적 간단합니다.
  3. 높은 사용자 정의: 전략의 기간 매개 변수는 특정 시장과 거래 도구에 따라 조정 할 수 있으며, 다른 시장 조건에 더 적응 할 수 있습니다.

위험성:

  1. 시장의 변동성: 시장의 변동성 기간 동안 이동 평균선은 자주 교차할 수 있으며, 이는 잘못된 신호를 생성하고 과도한 거래와 손실로 이어질 수 있는 빈번한 신호로 이어질 수 있습니다.
  2. 미끄러짐과 지연: 전략의 실행은 미끄러짐과 지연의 영향을 받으며, 특히 고주파 거래에서 실행된 가격이 예상 가격과 벗어나 거래 결과에 영향을 줄 수 있습니다.
  3. 단일 지표에 대한 의존성: 전략은 다른 기술적 지표나 시장정보를 포함하지 않고 HMA 지표에만 의존하며, 이는 시장 변화와 동향의 전체 범위를 포착하는 능력을 제한할 수 있습니다.

결론:

이중 HULL 이동 평균 전략 (Double HULL Moving Average Strategy) 은 HULL 이동 평균 지표에 기반한 거래 전략이다. 입점과 출점을 결정하기 위해 단기 및 장기 HMA 라인의 크로스오버를 활용한다. 이 전략은 지연, 단순성 및 높은 사용자 정의와 같은 장점을 제공합니다. 그러나 시장 변동성, 미끄러짐 및 지연 및 단일 지표에 의존하는 것과 관련된 위험도 포함됩니다. 실용적인 응용에서는 전략은 다른 기술적 지표와 위험 관리 방법을 통합하여 특정 상황에 따라 조정 및 최적화되어 거래 성공과 수익성을 향상시킬 수 있습니다.


/*backtest
start: 2023-09-07 00:00:00
end: 2023-09-14 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
// Credit Indicator from KIVANC
// author and idea: KIVANC @fr3762 on twitter
// creator: Alan HULL
// 
strategy("Double HULL Moving Average Strategy", overlay=true)
PDL=input(title="LongerPeriod", defval=21, minval=1,maxval=500)
PDS=input(title="ShorterPeriod",  defval=8, minval=1,maxval=500)

// === INPUT BACKTEST RANGE ===
FromYear  = input(defval = 2019, title = "From Year", minval = 2009)
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 2009)
ToMonth   = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 31, title = "To Day", minval = 1, maxval = 31)

// === FUNCTION EXAMPLE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => true // create function "within window of time"

HmaL=wma(2*wma(close,round(PDL/2))-wma(close,PDL),round(sqrt(PDL)))
HmaS=wma(2*wma(close,round(PDS/2))-wma(close,PDS),round(sqrt(PDS)))
plot(HmaL,color=red, linewidth=2)
plot(HmaS,color=blue, linewidth=2)

Buy = HmaS > HmaL
Sell = HmaS < HmaL

strategy.entry("Buy",true,when=window() and Buy)
strategy.close_all(when=window() and Sell)

더 많은