역전 전략의 압축 모멘텀 (Squeeze Momentum on Reversal Strategy) 은 시장에서 잠재적 인 반전을 식별하기 위해 볼링거 밴드 (BB) 및 켈트너 채널 (KC) 인디케이터를 사용하는 기술적 거래 전략이다. 이 전략은 BB와 KC 밴드가 함께 압축되면 시장이 통합 기간에 있음을 나타냅니다. 이것은 반전이 임박하다는 신호가 될 수 있습니다.
이 전략은 먼저 지정된 길이를 위해 BB 및 KC 대역을 계산하여 작동합니다. 기본 길이는 20 바입니다. BB 대역은 기본으로 2.0인 지정된 곱수로 곱됩니다. KC 대역은 기본으로 1.5인 지정된 곱수로 곱됩니다.
다음 단계는 BB 및 KC 밴드가 함께 압축되었는지 확인하는 것입니다. 만약 그렇다면, 전략은 가격이 KC 밴드 위에 있다면 긴 포지션과 가격이 KC 밴드 아래에 있다면 짧은 포지션을 입력합니다. 포지션의 크기는 기본으로 0.0018인 지정된 반전 힘에 의해 결정됩니다.
전략은 BB와 KC 대역이 넓어질 때 지위를 종료합니다. 출구 신호는 가격이 KC 대역 밖에서 움직일 때 생성됩니다.
역전 전략에 대한 압축 모멘텀은 구현하기에는 비교적 간단한 전략이지만 시장에서 잠재적 인 역전을 식별하는 데 효과적일 수 있습니다. 그러나 거래 전략이 수익성이 보장되지 않는다는 것을 기억하는 것이 중요합니다. 실시간 거래에서 사용하기 전에 전략의 역사 데이터를 백테스트하는 것이 항상 중요합니다.
다음은 전략의 다양한 구성 요소에 대한 더 자세한 설명입니다.
볼링거 밴드 (BB): BB 지표는 변동성이 높을 때 폭이 넓어지고 변동성이 낮을 때 좁아지는 이동 평균과 표준편차를 사용하여 가격 주위에서 밴드를 만드는 변동성 지표입니다. 켈트너 채널 (KC): KC 지표는 BB 지표와 유사하지만 다른 이동 평균과 표준편차 계산을 사용합니다. KC 대역은 일반적으로 BB 대역보다 좁아서 변동성에 더 민감합니다. 반전 강도 (Reversal Strength): 반전 강도는 전략이 거래에 들어갈 때 취하는 포지션의 크기를 결정하는 매개 변수입니다. 더 높은 반전 강도는 더 큰 포지션 크기로 이어집니다. 역전 전략의 압축 모멘텀은 다양한 시간 프레임과 시장에서 사용할 수있는 다재다능한 전략입니다. 그러나 트렌딩 시장에서 전략이 가장 효과적이라는 점에 유의해야합니다. 흔들리는 시장에서 전략은 많은 잘못된 신호를 생성 할 수 있습니다.
여기 반전 전략에서 압축 모멘텀을 사용하는 몇 가지 팁이 있습니다:
수익을 보호하기 위해 스톱 로스를 사용하세요. 시장이 당신에게 유리하게 움직일 때 수익을 확보하기 위해 후속 스톱 로스를 사용하세요. 실시간 거래에 사용하기 전에 역사적인 데이터에 대한 전략을 테스트하십시오. 다른 다양한 지표를 사용하여 역전 전략에서 압축 모멘텀으로 생성된 신호를 확인합니다. 역전 전략에 대한 압축 모멘텀은 시장에서 잠재적 인 역전을 식별하는 데 사용할 수있는 강력한 도구입니다. 그러나 전략을 현명하게 사용하고 그 한계를 이해하는 것이 중요합니다. 위의 팁을 따르면이 전략을 사용할 때 성공 가능성을 높일 수 있습니다.
/*backtest start: 2022-09-02 00:00:00 end: 2023-09-08 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // // @author Odyssee // @version=2 // strategy(shorttitle = "Squeeze MOM", title="Squeeze Momentum on Reversal Strategy", overlay=false) length = input(20, title="BB Length") mult = input(2.0,title="BB MultFactor") lengthKC=input(20, title="KC Length") multKC = input(1.5, title="KC MultFactor") strength = input(0.0018, title="Reversal Strength") useTrueRange = input(true, title="Use TrueRange (KC)", type=bool) // Calculate BB source = close basis = sma(source, length) dev = multKC * stdev(source, length) upperBB = basis + dev lowerBB = basis - dev // Calculate KC ma = sma(source, lengthKC) range = useTrueRange ? tr : (high - low) rangema = sma(range, lengthKC) upperKC = ma + rangema * multKC lowerKC = ma - rangema * multKC sqzOn = (lowerBB > lowerKC) and (upperBB < upperKC) sqzOff = (lowerBB < lowerKC) and (upperBB > upperKC) noSqz = (sqzOn == false) and (sqzOff == false) highest = highest(high, lengthKC) lowest = lowest(low, lengthKC) lastsma = sma(close,lengthKC) valin = linreg(source - avg(avg(highest, lowest), lastsma), lengthKC,0) bcolor = iff( valin > 0, iff( valin > nz(valin[1]), lime, green), iff( valin < nz(valin[1]), red, maroon)) scolor = noSqz ? blue : sqzOn ? black : gray plot(valin, color=bcolor, style=histogram, linewidth=4) plot(0, color=scolor, style=cross, linewidth=2) shortcondition = valin > strength and valin < nz(valin[1]) // line become green longcondition = valin < (strength*-1) and valin > nz(valin[1]) // line become maroon if(longcondition) strategy.entry("BUY", strategy.long) if(shortcondition) strategy.entry("SELL", strategy.short)