
이 전략은 홀 이동 평균과 칼만 파동을 결합하여 가격 트렌드를 식별하고 추적하며 트렌드 추적 전략에 속한다. 그것은 두 개의 다른 주기의 홀 이동 평균을 사용하여 거래 신호를 구성하고 칼만 파동과 함께 부드러운 처리를 수행하여 신호 품질과 전략의 안정성을 향상시킵니다.
전략은 24주기 홀 이동 평균 hma와 24주기 트리플 홀 이동 평균 hma3를 사용하여 거래 신호를 구성한다.
하마 3를 상단으로 입으면 구매 신호가 발생하고 하마 3를 하단으로 입으면 판매 신호가 발생한다.
정책은 기본적으로 칼만 필터를 끄고, 칼만 필터를 켜면, hma와 hma3를 칼만 필터 처리하여 과도한 소음을 필터링하여 신호 품질을 향상시킵니다.
칼만파는 예측과 교정 단계를 통해 신호의 무작위적 잡음을 제거한다. 매번의 측정과 이전 예측 사이의 차이는 교정항으로 사용되어 다음 측정값을 더 정확하게 예측한다. 반복적으로 예측과 교정함으로써 잡음의 영향을 점차적으로 줄여서 신호를 더 부드럽게 만든다.
이 전략은 카르만 파동을 사용하여 이동 평균 전략의 안정성을 강화하고, 무작위적 변동의 영향을 제거하고, 지속적인 추세를 추적한다.
단일 이동 평균에 비해 이중 이동 평균 시스템은 지속되는 트렌드를 더 잘 식별한다.
홀 이동 평균은 중화 방식으로 계산되어 최근 가격에 더 큰 무게를 부여하여 가격 변화를 더 민감하게 포착할 수 있다.
칼만 필터는 신호의 무작위 잡음을 효과적으로 필터링하여 가짜 신호를 줄이고 신호 품질을 향상시킵니다.
전략의 매개 변수는 조정할 수 있으며, 주기의 길기와 칼만 파동의 증가는 시장에 따라 조정될 수 있으며, 다른 상황에 적응할 수 있다.
전략은 과도한 무작위적인 변동에 속지 않도록 더 지속적인 추세를 식별할 수 있는 신호를 구축하기 위해 초주기 기술을 사용합니다.
시각적 인터페이스는 신호와 트렌드 상태를 직관적으로 표시하여 조작하기 쉽습니다.
이중 이동 평균 전략은 트렌드 전환점에서 잘못된 신호를 발생시키며, 전환점을 적시에 잡을 수 없습니다.
이동 평균은 지연되어 있고, 가격의 급격한 반전 기회를 놓칠 수 있다.
급격한 변동이 있는 상황에는 적용되지 않으며, 흔들림 뒤집기 단계에서 사용해서는 안된다.
칼만 필터의 파라미터 설정은 전략의 성능에 영향을 미치며, 과도한 증가는 유효한 신호를 필터링할 수 있다.
긴 주기 설정은 반응이 예민하지 않으며, 짧은 주기 설정은 소음에 영향을 받기 쉽다. 시장에 따라 변수를 조정해야 한다.
다수 공백 보유 기간은 고정되지 않으며, 보유하지 않는 단계가 존재하며, 자금 활용 효율성을 떨어뜨린다.
적응형 이동 평균 동적 최적화 파라미터를 적용하여 변동률에 따라 주기 길이를 조정할 수 있습니다.
변동률 지표와 함께 시장 상태를 판단하고, 흔들리는 시장에서 거래를 피하고, 트렌드가 명확할 때만 거래한다.
손실을 방지하고 위험을 통제할 수 있는 전략을 수립할 수 있다.
카르만 필터 파라미터를 최적화하여 추적 민감도와 노이즈 필터링 수준을 균형 잡는다.
다른 지표와 결합하여 신호의 유효성을 확인합니다. 예를 들어, 양력 지표, 브린 띠 판단 트렌드 지속성 등등.
기계학습과 같은 방법을 통해 훈련된 파라미터는 전략이 더 거칠고 적응할 수 있게 해준다.
이 전략은 쌍홀 이동 평균과 칼만 파동을 통해 트렌드를 추적하여 지속되는 트렌드를 효과적으로 식별하여 신호 품질을 향상시킬 수 있습니다. 그러나 변수 최적화, 시장 적응성 조정, 위험 제어에 주의를 기울이면 안정적인 수익을 얻을 수 있습니다. 기계 학습 및 정량 분석은 전략의 성능을 더욱 향상시킬 수 있습니다. 지속적인 최적화를 통해 안정적이고 효율적인 트렌드 추적 거래 전략을 만들 수 있습니다.
/*backtest
start: 2022-10-25 00:00:00
end: 2023-10-31 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Hull Trend with Kahlman Strategy Backtest", shorttitle="HMA-Kahlman Trend Strat", overlay=true)
src = input(hl2, "Price Data")
length = input(24, "Lookback")
showcross = input(true, "Show cross over/under")
gain = input(10000, "Gain")
k = input(true, "Use Kahlman")
hma(_src, _length) =>
wma((2 * wma(_src, _length / 2)) - wma(_src, _length), round(sqrt(_length)))
hma3(_src, _length) =>
p = length/2
wma(wma(close,p/3)*3 - wma(close,p/2) - wma(close,p),p)
kahlman(x, g) =>
kf = 0.0
dk = x - nz(kf[1], x)
smooth = nz(kf[1],x)+dk*sqrt((g/10000)*2)
velo = 0.0
velo := nz(velo[1],0) + ((g/10000)*dk)
kf := smooth+velo
a = k ? kahlman(hma(src, length), gain) : hma(src, length)
b = k ? kahlman(hma3(src, length), gain) : hma3(src, length)
c = b > a ? color.lime : color.red
crossdn = a > b and a[1] < b[1]
crossup = b > a and b[1] < a[1]
p1 = plot(a,color=c,linewidth=1,transp=75)
p2 = plot(b,color=c,linewidth=1,transp=75)
fill(p1,p2,color=c,transp=55)
plotshape(showcross and crossdn ? a : na, location=location.absolute, style=shape.labeldown, color=color.red, size=size.tiny, text="S", textcolor=color.white, transp=0, offset=-1)
plotshape(showcross and crossup ? a : na, location=location.absolute, style=shape.labelup, color=color.green, size=size.tiny, text="B", textcolor=color.white, transp=0, offset=-1)
longCondition = crossup
if (longCondition)
strategy.entry("LE", strategy.long)
shortCondition = crossdn
if (shortCondition)
strategy.entry("SE", strategy.short)