이 전략은 헐 이동 평균 지표에 기반한 단기 거래 전략입니다. 전략은 트렌드 다음 전략에 속하는 거래 신호를 생성하기 위해 헐 이동 평균 라인의 황금 십자와 죽은 십자 를 사용합니다.
이 전략은 주로 Hull Moving Average 지표에 기반합니다. Hull Moving Average 라인은 두 개의 이동 평균으로 구성됩니다. 먼저 그것은 hullperiod의 기간과 함께 가격의 중간 이동 평균 라인 nma를 계산합니다. 그런 다음 그것은 nma
일부 잘못된 신호를 필터링하기 위해 전략은 또한 홀 라인 (Hull_Line) 을 도입합니다. 홀 라인은 nma와 n2ma 사이의 차이의 선형 회귀 결과입니다. 가격과 홀 라인 사이에 오차가있을 때 전략은 거래 신호를 건너뛰게됩니다.
특히 전략 규칙은 다음과 같습니다.
nma를 계산해
n2ma를 계산해, nma 기간의 절반을 계산해
n2ma와 nma의 차이는 계산
Moving average the diff with period sqrt ((hullperiod)) 는 Hull Line Hull_Line 를 얻습니다.
가격이 홀 라인을 넘으면 구매 신호가 생성됩니다.
가격이 홀 라인을 넘으면 판매 신호가 생성됩니다.
가격과 헬 라인 사이에 차이가 있다면 신호를 건너뛰어
포지션의 특정 비율로 입력, 출구 중지 손실을 채택
이 전략의 장점은 다음과 같습니다.
헐 이동 평균에 기초, 그것은 빠르게 추세를 포착하고 추세를 따라 할 수 있습니다
가짜 신호를 필터링하고 신호 품질을 개선하기 위해 허ల్ 라인을 사용
좋은 리스크/이익 비율과 마취율, 단기 거래에 적합하다
다양한 시장 환경에 적응 할 수있는 유연한 매개 변수 조정
역전 스톱 손실을 채택, 시간 손실을 중지 할 수 있으며 위험을 제어
특정 기간에 체계적 위험을 피하기 위해 계절성을 결합
이 전략에는 또한 몇 가지 위험이 있습니다.
트렌드를 따라 전략, 하루 종일 거래 할 수 없습니다
트렌드 역전 시 더 큰 손실
이동 평균의 지연, 시간에 전환점을 포착 할 수 없습니다
높은 거래 빈도는 더 높은 거래 비용으로 이어집니다.
부적절한 매개 변수 설정은 범위 제한 시장에서 수익성이 낮아질 수 있습니다.
이러한 위험을 통제하기 위해 다음의 조치를 취할 수 있습니다.
단일 손실을 통제하기 위해 마틴게일 스톱 로스 전략을 채택하십시오.
다양한 시장 환경에서 매개 변수를 최적화하고 테스트 견고성
트렌드 판단 지표를 결합하여 역전 시 추세를 피합니다.
거래 빈도를 낮추기 위해 보유 시간을 늘려
이 전략은 다음 측면에서도 최적화 될 수 있습니다.
더 나은 진입을 위해 동력 지표를 결합하여 트렌드의 시작점을 찾습니다.
트렌드 방향과 강도를 판단하는 데 도움이 되는 머신 러닝 모델을 추가
실시간 시장 역동성에 기초한 매개 변수를 조정하기 위해 적응 가능한 매개 변수 설정을 채택합니다.
다양한 시간 프레임에 대한 다른 위치 크기와 함께 다 시간 프레임 허크 시스템을 구성
부적절한 모멘텀을 가진 잘못된 브레이크를 피하기 위해 볼륨 지표를 결합하십시오.
변동성 기반의 포지션 크기를 동적으로 조정하기 위해 변동성 기반 포지션 크기를 추가하는 모델
헐 이동 평균 스윙 거래 전략은 전반적으로 추세를 따르는 효율적인 단기 트렌드 트레이딩 전략이다. 트렌드를 따르는 목적으로 트렌드 방향을 결정하기 위해 헐 이동 평균 시스템을 사용합니다. 단일 이동 평균 시스템과 비교하면 더 높은 신호 품질과 매개 변수 유연성을 가지고 있습니다. 이 전략의 장점은 상대적으로 작은 드라우다운으로 트렌드 변화를 빠르게 파악하는 데 있습니다. 약점은 트렌드 역전과 대처할 수 없다는 것입니다. 우리는 위험을 제어하고 더 많은 시장 환경에서 전략을 견고하게 만들기 위해 매개 변수 최적화, 스톱 손실 전략, 보조 모델 등을 사용할 수 있습니다.
/*backtest start: 2023-09-06 00:00:00 end: 2023-10-06 00:00:00 period: 6h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 // Hull Moving Average Swing Trader by SEASIDE420 strategy("Hull Moving Average Swing Trader", shorttitle="HMA_Swing_Trader", default_qty_type=strategy.percent_of_equity, default_qty_value=100, calc_on_order_fills=true, calc_on_every_tick=true, pyramiding=0) hullperiod = input(title="HullMA Period", type=input.integer, defval=210, minval=1) price = input(open, type=input.source, title="Price data") FromMonth = input(defval=1, title="From Month", minval=1, maxval=12) FromDay = input(defval=1, title="From Day", minval=1, maxval=31) FromYear = input(defval=2020, title="From Year", minval=2017) ToMonth = input(defval=1, title="To Month", minval=1, maxval=12) ToDay = input(defval=1, title="To Day", minval=1, maxval=31) ToYear = input(defval=9999, title="To Year", minval=2017) start = timestamp(FromYear, FromMonth, FromDay, 00, 00) finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) window() => true n2ma = 2 * wma(price, round(hullperiod / 2)) nma = wma(price, hullperiod) diff = n2ma - nma sqn = round(sqrt(hullperiod)) n2ma1 = 2 * wma(price[1], round(hullperiod / 2)) nma1 = wma(price[1], hullperiod) diff1 = n2ma1 - nma1 n1 = wma(diff, sqn) n2 = wma(diff1, sqn) Hull_Line = n1 / n1 * n2 Hull_retracted = if n1 > n2 Hull_retracted = Hull_Line - 2 else Hull_retracted = Hull_Line + 2 c1 = Hull_retracted + n1 - price c2 = Hull_retracted - n2 + price c4 = n1 > n2 ? color.green : color.red c2p = plot(c2, color=color.black, linewidth=1) c3p = plot(price, color=color.black, linewidth=1) fill(c3p, c2p, color=c4, transp=75) //plot(cross(c1, c2) ? c1 : na, style=plot.style_circles, color=c4, linewidth=4) if price < c2 strategy.close("BUY", when=window()) if price > c2 strategy.close("SELL", when=window()) if price > c2 and price[1] > c1 strategy.entry("BUY", strategy.long, when=window()) if price < c1 and price[1] < c2 strategy.entry("SELL", strategy.short, when=window()) // /L'-, // ,'-. ` ```` / L '-, // . _,--dMMMM\ ` ` ` '`.. / '-, // : _,--, )MMMMMMMMM),. ` ,<> /_ '-,' // ; ___,--. \MM( `-' )M//MM\ ,',.; .-'* ; .' // | \MMMMMM) \MM\ ,dM//MMM/ ___ < ,; `. )`--' / // | \MM()M MMM)__ /MM(/MP' ___, \ \ ` `. `. /__, ,' // | MMMM/ MMMMMM( /MMMMP'__, \ | / `. `-,_\ / // | MM /MMM---' `--'_ \ |-' |/ `./ .\----.___ // | /MM' `--' __,- \"" |-' |_, `.__) . .F. )-. // | `--' \ \ |-' |_, _,-/ J . . . J-'-. `-., // | __ \`. | | | \ / _ |. . . . \ `-. F // | ___ / \ | `| ' __ \ | /-' F . . . . \ '` // | \ \ \ / | __ / \ | |,-' __,- J . . . . . \ // | | / |/ __,- \ ) \ / |_,- __,--' |. .__.----,' // | |/ ___ \ |'. |/ __,--' `.-;;;;;;;;;\ // | ___ \ \ | | ` __,--' /;;;;;;;;;;;;. // | \ \ |-'\ ' __,--' /;;;;;;;;;;;;;;\ // \ | | / | __,--' `--;;/ \;-'\ // \ | |/ __,--' / / \ \ // \ | __,--' / / \ \ // \|__,--' _,-;M-K, ,;-;\ // <;;;;;;;; '-;;;; // :D