이 전략은 HMA (Hull Moving Average) 지표와 K-line의 기술 분석을 사용하여 가격에 대한 추진력 판단과 돌파구 거래를 실현합니다.
HMA 지표는 2005년에 Alan Hull에 의해 민감하고 부드러운 이동 평균을 만들기 위해 만들어졌습니다. 계산 방법은 다음과 같습니다.
(1) 반주기의 이중 평형 평균 DMA를 계산
(2) 전체 주기의 평균 SMA를 계산
(3) DMA와 SMA 사이의 차이 DIFF를 계산합니다.
(4) HMA를 얻기 위해 DIFF의 SQRT (주기) 사이클 평균선을 계산합니다.
이 전략은 HMA 지표의 상향 및 하향 돌파구를 신호로 사용하고, K-라인의 엔티티 부분의 돌파구와 결합하여 구매 및 판매 신호를 생성합니다. 동시에 수익을 보호하기 위해 수익 및 손실 상황을 실시간으로 모니터링하기 위해 스톱 손실을 설정하고 수익 원칙을 취합니다.
HMA 지표의
이중 돌파 메커니즘은 신호의 신뢰성을 향상시키고 함락되는 것을 피합니다.
동적 스톱 로스 및 이익 보호는 위험과 수익을 최적화합니다.
완전히 자동화된 거래는 작업을 단순화시킵니다.
시장의 격렬한 변동에서는 스톱 로스가 발생할 확률이 더 높습니다.
높은 거래 빈도는 수수료 비용을 증가시킵니다.
부적절한 파라미터 설정은 많은 잘못된 신호를 생성할 수 있습니다.
스톱 로스를 최적화하고 수익을 취하고 합리적인 리트랙을 설정합니다.
수수료 영향을 줄이기 위해 거래 주파수를 조정합니다.
최적의 매개 변수를 결정하기 위해 HMA 사이클과 돌파구 조건을 테스트하고 최적화합니다.
트렌드 판단 지표를 포함하여 역 트렌드 거래를 피합니다.
더 많은 시장 환경에 적응하기 위해 데이터 소스 전환에 대한 자동 판단을 증가시킵니다.
자동 매개 변수 최적화를 위해 기계 학습 알고리즘을 강화합니다.
24시간 실시간 거래 확인을 위해 서버에 배치합니다.
HMA 모멘텀 브레이크아웃 전략은 헐 이동 평균의 독특한 장점을 활용하여 시장의 모멘텀을 정확하게 파악합니다. 이중 브레이크아웃 필터링 메커니즘은 신호 품질을 향상시키고 동적 스톱 이익과 스톱 손실은 수익을 보호합니다. 이 전략은 사용하기 쉽고 효과적이며 홍보 할 가치가있는 매우 실용적인 양적 거래 도구입니다.
/*backtest start: 2022-12-28 00:00:00 end: 2024-01-03 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 //SeaSide420 strategy("Hull Moving Average and Daily Candle Crossover", shorttitle="Hull&D", overlay=true, default_qty_type=strategy.percent_of_equity, max_bars_back=720, default_qty_value=100, calc_on_order_fills= true, calc_on_every_tick=true, pyramiding=0) // settings---------------------- q=input(title="HullMA",defval=5) SL = input(defval=-10000.00, title="Stop Loss in $", type=float, step=1) TP = input(defval=500.00, title="Target Point in $", type=float, step=1) price=input(ohlc4,title="Price data") ot=1 p=price[1] // Daily candle crossover--------- dt = 0.0010 Daily=(p-p[1])/p[1] //-------------------------------- // Hull MA's---------------------- n2ma=2*wma(p,round(q/2)) nma=wma(p,q) diff=n2ma-nma sqn=round(sqrt(q)) n2ma1=2*wma(p[1],round(q/2)) nma1=wma(p[1], q) diff1=n2ma1-nma1 sqn1=round(sqrt(q)) n1=wma(diff,sqn) n2=wma(diff1,sqn) //--------------------------------- // Plotting------------------------ z1e=n1>n2?green:black z2e=n1>n2?black:red z3e=n1>n2?green:red n1e=plot(n1, title="HMA1", color=z1e, linewidth=2, offset=2) n2e=plot(n2, title="HMA2", color=z2e, linewidth=2, offset=2) fill(n1e, n2e, color=z3e, transp=80) // Order controls------------------- closelong = n1<n2 and n1[1]<n2[1] and n1[2]<n2[2] or strategy.openprofit<SL or strategy.openprofit>TP if (closelong) strategy.close("Long") closeshort = n1>n2 and n1[1]>n2[1] and n1[2]>n2[2] or strategy.openprofit<SL or strategy.openprofit>TP if (closeshort) strategy.close("Short") longCondition = n1>n2 and n1[1]>n2[1] and n1[2]>n2[2] and strategy.opentrades<ot and Daily>dt and close>n1 if (longCondition) strategy.entry("Long",strategy.long) shortCondition = n1<n2 and n1[1]<n2[1] and n1[2]<n2[2] and strategy.opentrades<ot and Daily<dt and close<n1 if (shortCondition) strategy.entry("Short",strategy.short)