Hull Moving Average Swing 거래 전략

저자:차오장, 날짜: 2023-10-07 15:24:31
태그:

전반적인 설명

이 전략은 헐 이동 평균 지표에 기반한 단기 거래 전략입니다. 전략은 트렌드 다음 전략에 속하는 거래 신호를 생성하기 위해 헐 이동 평균 라인의 황금 십자와 죽은 십자 를 사용합니다.

전략 논리

이 전략은 주로 Hull Moving Average 지표에 기반합니다. Hull Moving Average 라인은 두 개의 이동 평균으로 구성됩니다. 먼저 그것은 hullperiod의 기간과 함께 가격의 중간 이동 평균 라인 nma를 계산합니다. 그런 다음 그것은 nmas의 절반의 기간과 함께 빠른 이동 평균 라인 n2ma를 계산합니다. n2ma가 nma를 넘을 때 구매 신호가 생성됩니다. n2ma가 nma를 넘을 때 판매 신호가 생성됩니다.

일부 잘못된 신호를 필터링하기 위해 전략은 또한 홀 라인 (Hull_Line) 을 도입합니다. 홀 라인은 nma와 n2ma 사이의 차이의 선형 회귀 결과입니다. 가격과 홀 라인 사이에 오차가있을 때 전략은 거래 신호를 건너뛰게됩니다.

특히 전략 규칙은 다음과 같습니다.

  1. nma를 계산해 피오드와 함께 계산해

  2. n2ma를 계산해, nma 기간의 절반을 계산해

  3. n2ma와 nma의 차이는 계산

  4. Moving average the diff with period sqrt ((hullperiod)) 는 Hull Line Hull_Line 를 얻습니다.

  5. 가격이 홀 라인을 넘으면 구매 신호가 생성됩니다.

  6. 가격이 홀 라인을 넘으면 판매 신호가 생성됩니다.

  7. 가격과 헬 라인 사이에 차이가 있다면 신호를 건너뛰어

  8. 포지션의 특정 비율로 입력, 출구 중지 손실을 채택

이점 분석

이 전략의 장점은 다음과 같습니다.

  1. 헐 이동 평균에 기초, 그것은 빠르게 추세를 포착하고 추세를 따라 할 수 있습니다

  2. 가짜 신호를 필터링하고 신호 품질을 개선하기 위해 허ల్ 라인을 사용

  3. 좋은 리스크/이익 비율과 마취율, 단기 거래에 적합하다

  4. 다양한 시장 환경에 적응 할 수있는 유연한 매개 변수 조정

  5. 역전 스톱 손실을 채택, 시간 손실을 중지 할 수 있으며 위험을 제어

  6. 특정 기간에 체계적 위험을 피하기 위해 계절성을 결합

위험 분석

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

  1. 트렌드를 따라 전략, 하루 종일 거래 할 수 없습니다

  2. 트렌드 역전 시 더 큰 손실

  3. 이동 평균의 지연, 시간에 전환점을 포착 할 수 없습니다

  4. 높은 거래 빈도는 더 높은 거래 비용으로 이어집니다.

  5. 부적절한 매개 변수 설정은 범위 제한 시장에서 수익성이 낮아질 수 있습니다.

이러한 위험을 통제하기 위해 다음의 조치를 취할 수 있습니다.

  1. 단일 손실을 통제하기 위해 마틴게일 스톱 로스 전략을 채택하십시오.

  2. 다양한 시장 환경에서 매개 변수를 최적화하고 테스트 견고성

  3. 트렌드 판단 지표를 결합하여 역전 시 추세를 피합니다.

  4. 거래 빈도를 낮추기 위해 보유 시간을 늘려

최적화 방향

이 전략은 다음 측면에서도 최적화 될 수 있습니다.

  1. 더 나은 진입을 위해 동력 지표를 결합하여 트렌드의 시작점을 찾습니다.

  2. 트렌드 방향과 강도를 판단하는 데 도움이 되는 머신 러닝 모델을 추가

  3. 실시간 시장 역동성에 기초한 매개 변수를 조정하기 위해 적응 가능한 매개 변수 설정을 채택합니다.

  4. 다양한 시간 프레임에 대한 다른 위치 크기와 함께 다 시간 프레임 허크 시스템을 구성

  5. 부적절한 모멘텀을 가진 잘못된 브레이크를 피하기 위해 볼륨 지표를 결합하십시오.

  6. 변동성 기반의 포지션 크기를 동적으로 조정하기 위해 변동성 기반 포지션 크기를 추가하는 모델

요약

헐 이동 평균 스윙 거래 전략은 전반적으로 추세를 따르는 효율적인 단기 트렌드 트레이딩 전략이다. 트렌드를 따르는 목적으로 트렌드 방향을 결정하기 위해 헐 이동 평균 시스템을 사용합니다. 단일 이동 평균 시스템과 비교하면 더 높은 신호 품질과 매개 변수 유연성을 가지고 있습니다. 이 전략의 장점은 상대적으로 작은 드라우다운으로 트렌드 변화를 빠르게 파악하는 데 있습니다. 약점은 트렌드 역전과 대처할 수 없다는 것입니다. 우리는 위험을 제어하고 더 많은 시장 환경에서 전략을 견고하게 만들기 위해 매개 변수 최적화, 스톱 손실 전략, 보조 모델 등을 사용할 수 있습니다.


/*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


더 많은