이 전략은 브린밴드 지표를 사용하여 시장 동향 방향을 판단하고 동력 지표를 사용하여 트렌드 추적 거래를 구현합니다. 전략 이름의 진동량은 브린밴드 지표를 사용하여 동력 지표를 나타냅니다. 브린밴드 지표는 브린밴드 지표를 사용하여 트렌드 방향을 결정합니다.
이 전략은 크게 세 부분으로 나뉘어 있습니다.
브린밴드 방향 결정. 브린밴드 중경은 평행선을, 브린밴드 하경은 변동 범위를 나타냅니다. 가격이 상승할 때 과잉 구매, 상승할 때 과잉 판매를 나타냅니다. 브린밴드 방향은 가격 트렌드 방향을 나타냅니다.
운동량을 계산한다. 이 전략은 hull 운동량을 선택한다. hull 운동량은 빠른 이동평균을 빼고 느린 이동평균을 얻는다.
교차 신호. 빠른 이동 평균선이 아래에서 느린 이동 평균선을 통과할 때 더 많은 신호가 생성됩니다. 위에서 아래를 통과할 때 빈 신호가 생성됩니다.
거래 규칙은: 브린 벨트 방향은 큰 추세를 나타내고, 동력 지표의 교차는 출입 시기를 나타냅니다. 동력 교차가 브린 벨트 방향과 일치하면 거래 신호가 생성됩니다. 즉, 브린 벨트 대표의 추세를 추적합니다.
추세와 동력을 결합하여 가짜 돌파구를 피한다. 브린 벨트를 사용하여 큰 수준의 추세를 판단하고 동력 지표를 사용하여 특정 출입 시기를 판단하여 지역 돌파구를 쫓는 포름셋 위험을 피한다.
더 나은 위험 통제. 브린 벨트는 단순한 이동 평균보다 더 효과적인 스톱 손실 지점을 제공합니다.
트렌드를 추적하는 것이 더 효율적입니다. 동력 지표는 진입 후 충분한 힘이 있음을 보장하며 가격을 원래 방향으로 계속 추진하여 트렌드를 더 부드럽게 추적합니다.
브린밴드는 실패 위험을 결정한다. 브린밴드는 항상 완전히 정확한 경향을 결정하지 않으며 방향 신호를 잘못 제공하여 손실률을 증가시킬 수 있다.
트렌드 역전 위험. 브린밴드가 큰 수준의 트렌드를 올바르게 반영하더라도 중단기간에 가격 역전이 발생할 수 있으며 거래할 때 신중한 판단이 필요합니다.
파라미터 최적화 위험. 전략 파라미터, 예를 들어 계산 주기는 최적화되어 최적의 거래 효과를 얻기 위해 다른 시장 데이터에 맞게 최적화되어야 한다.
더 많은 지표 FILTER와 결합하여; 브린 벨트와 허드 역량 이외에 MACD, KDJ 등의 다른 지표가 추가되어 지표 FILTER를 형성하여 판단 정확도를 향상시킬 수 있습니다.
적응적 매개 변수 최적화. 기계 학습 알고리즘을 추가하여 다양한 품종과 시장 환경에 따라 매개 변수를 실시간으로 최적화하여 전략 안정성을 향상시킵니다.
Stop Loss 전략 최적화. Stop Loss 전략을 최적화, 큰 트렌드가 변하기 전에 수익을 최대한 차단하고, 트렌드가 반전되면 가장 빨리 손실을 중지.
이 전략은 브린밴드 (Brain Belt) 를 통합하여 큰 차원의 트렌드를 결정하고, 헐 동력 지표 (Hull Dynamic Indicator) 를 통해 특정 입구 시기를 결정하여 트렌드를 효과적으로 추적할 수 있다. 또한, 더 많은 지표 필터 (indicator filter), 파라미터 적응 최적화 (parameter adaptive optimization) 및 스톱 손실 전략 최적화 (stop loss strategy optimization) 를 추가하는 것에서 개선할 수 있는 부분에서 안정성과 수익률을 높이기 위해 개선할 수 있는 부분도 있다.
/*backtest start: 2024-01-26 00:00:00 end: 2024-02-25 00:00:00 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 // Hull Moving Average Crossover by SeaSide420 strategy("Hull Moving Average Crossover Strategy", overlay=true) keh=input(title="HullMA cross",defval=10) p=input(ohlc4) n2ma=2*ta.wma(p,math.round(keh/2)) nma=ta.wma(p,keh) diff=n2ma-nma sqn=math.round(math.sqrt(keh)) n2ma1=2*ta.wma(p[1],math.round(keh/2)) nma1=ta.wma(p[1],keh) diff1=n2ma1-nma1 sqn1=math.round(math.sqrt(keh)) n1=ta.wma(diff,sqn) n2=ta.wma(diff1,sqn) hullcross1 = n1 hullcross2 = n2 longcross1=(n1[0]-n1[3])+(n1[0]-n2[4])*100 longcross2=(n2[0]-n2[3])+(n2[0]-n1[4])*100 closelong = n1<n2 and longcross1<longcross2 if (closelong) strategy.close("Long") closeshort = n1>n2 and longcross1>longcross2 if (closeshort) strategy.close("Short") longCondition = n1>n2 and longcross1>longcross2 and strategy.opentrades<1 if (longCondition) strategy.entry("Long",strategy.long) shortCondition = n1<n2 and longcross1<longcross2 and strategy.opentrades<1 if (shortCondition) strategy.entry("Short",strategy.short) b=hullcross1>hullcross2?color.green:color.red c=hullcross2>hullcross1?color.green:color.red plot(ta.cross(hullcross1, hullcross2) ? hullcross1 : na,color=c, linewidth = 5, offset=3) barcolor(longcross1 < longcross2 ? color.black : color.white) bgcolor(longcross2 < longcross1 ? color.green : color.black, transp=85) plotshape(ta.cross(longcross2, longcross1) ? longcross2 : na, text="X", style=shape.labeldown, location=location.bottom)