
이 전략은 HMA (Hull Moving Average) 지표와 K 선의 기술적 분석을 사용하여 가격의 동적 판단과 돌파구 작업을 수행합니다.
HMA 지표는 2005년 앨런 헐 (Alan Hull) 에 의해 생성되었으며, 민감하고 부드러운 이동 평균을 만드는 것을 목표로 한다. 계산 방법은 다음과 같다:
(1) 반주기 DMA를 계산하기
(2) 전체 주기 평균 SMA를 계산합니다.
(3) DMA와 SMA의 차이를 계산하는 DIFF
(4) DIFF의 SQRT (주기) 주기 평균을 계산하여 HMA를 얻는다.
전략은 HMA 지표의 상위 돌파구와 하위 돌파구를 신호로 삼고, K선 엔티티 부분의 돌파구와 결합하여 구매 및 판매 신호를 생성한다. 동시에 중지 손실 및 중지 원칙을 설정하고, 수익 및 손실 상황을 실시간으로 모니터링하여 수익 보호를 실현한다.
HMA 지표의 ‘Convergence’ 특성은 가격 변화에 매우 민감하게 만들면서도 평균의 평평함을 유지하며, 잘못된 신호를 피한다.
이중 뚫림 메커니즘, 신호의 신뢰성을 높이고, 을 피한다.
다이내믹 스포드 스포드 스과 수익 보호, 위험과 수익을 최적화하기 위해.
모든 거래가 자동화되고, 모든 거래가 단순화됩니다.
시장이 급격하게 변동할 때, 정지 손실이 발생할 확률이 높습니다.
거래 빈도가 높고, 수수료 비용이 증가한다.
잘못된 변수 설정은 많은 가짜 신호를 생성할 수 있다.
정지상태를 최적화하고, 합리적인 회귀를 설정한다.
거래 빈도를 조정하여 수수료의 영향을 줄이십시오.
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)