게으른 곰의 압축을 기반으로 한 모멘텀 전략

저자:차오장, 날짜: 2023-12-21 14:22:49
태그:

img

전반적인 설명

이 전략의 주요 아이디어는 매출 및 매출의 타이밍을 분석하기 위해 LazyBear의 압축 모멘텀 지표에 기반합니다. 모멘텀 트렌드의 굴절 지점을 분석하여 각각 매출 및 매출 신호로 정점과 굴절 지점을 찾습니다. 긴 전략이기 때문에 상승 추세를 식별하기 위해 50 기간 기하급수적 이동 평균도 고려합니다. 촛불의 폐쇄 가격이 50EMA 이상이고 50EMA의 기울기가 상승 추세를 보이고 있다면 구매 신호가 실행됩니다.

전략 원칙

이 전략은 트렌드와 압축 구역을 식별하기 위해 볼링거 밴드와 켈트너 채널을 통합합니다. 구체적으로 20주기 볼링거 밴드와 20주기 켈트너 채널을 계산합니다. 볼링거 밴드가 완전히 켈트너 채널 내에 떨어지면 압축 신호로 간주됩니다. 압축 구역은 볼링거 밴드의 하단 밴드가 켈트너 채널의 하단 밴드 위에 올라가고 볼링거 밴드의 상단 밴드가 켈트너 채널의 상단 밴드 아래에 올라갈 때 식별됩니다. 반대로 볼링거 밴드의 하단 밴드가 켈트너 채널의 하단 밴드 아래에 떨어지고 볼링거 밴드의 상단 밴드가 켈트너 채널의 상단 밴드 위에 올라갈 때 압축 구역입니다.

또한, 전략은 모멘텀 기울기의 변화를 분석하기 위해 선형 회귀를 사용합니다. 그것은 지난 20 기간 동안의 가격의 선형 회귀 값을 전형적인 가격을 빼내 계산합니다. 선형 회귀 값의 기울기가 양면이면 상승 추세로 간주됩니다. 기울기가 음면하면 하향 추세입니다. 압축 구역 내에서 모멘텀 기울기의 반전이있는 경우 구매 또는 판매를 신호합니다. 구체적으로 압축 구역 내에서 모멘텀 전환이 긍정적에서 부정적인로 전환되면 판매 신호를 발산합니다. 압축 구역 내에서 모멘텀 전환이 부정적인에서 긍정적으로 전환되면 구매 신호를 발산합니다.

잘못된 신호를 필터링하기 위해 전략은 또한 폐쇄 가격이 50 일 지수 이동 평균 이상이고 50 일 지수 이동 평균이 상승 경사면인지 판단합니다. 두 조건이 충족되면 구매 신호가 실행됩니다.

이점 분석

이것은 매우 똑똑한 전략이며, 시장의 다차원적 판단을 위해 두 가지 다른 유형의 지표를 활용하여 잘못된 신호를 효과적으로 피할 수 있습니다. 구체적으로 그 장점은 다음과 같습니다.

  1. 볼링거 밴드, 켈트너 채널 및 모멘텀 지표의 포괄적인 적용

  2. 압축 구역은 효율적으로 모멘텀 역전의 정점과 골짜기를 식별하고 정확하게 턴을 캡처 할 수 있습니다.

  3. 폐쇄 가격과 50일 EMA에 기반한 트렌드 필터링은 통합 과정에서 반복적인 포지션 개척을 피합니다.

  4. 압축 구역에서만 발산되는 신호는 잘못된 신호를 줄이고 수익률을 향상시킵니다.

  5. 큰 매개 변수 최적화 공간은 조정 기간 등을 통해 표적 최적화를 허용합니다.

  6. 장기 및 단기 결합, 큰 사이클 트렌드를 고려하고 중장기 지표를 통합하면 장기 방향이 분명합니다.

위험 분석

이 전략에는 여러 가지 기술 지표가 있지만 여전히 몇 가지 위험이 있습니다.

  1. 볼링거 밴드와 켈트너 채널이 갈라질 때 구매/판매 기회를 놓치는 것

  2. 시장이 급격히 상승하거나 하락할 때 큰 손실이 발생할 수 있습니다.

  3. 높은 변동성 시장에서, 압축 상황은 명백하지 않을 수 있으며, 그 결과 신호가 줄어들 수 있습니다.

  4. 황소-곰 전환시 조정 손실에 유연합니다.

이러한 위험을 피하기 위해 다음과 같은 조치를 취할 수 있습니다.

  1. 볼링거 대역과 켈트너 채널을 최대한 동기화하기 위해 매개 변수를 최적화합니다.

  2. 한 번의 손실을 제어하기 위해 손실을 멈추도록 설정합니다.

  3. 이 전략을 포트폴리오 전략의 일부로 다른 전략과 결합하여 사용하십시오.

  4. 높은 변동성 시장에서 적당하게 포지션을 줄이세요.

최적화 방향

이 전략의 최적화를 위한 방안은 여전히 많이 남아 있으며, 주로 다음과 같은 방향으로 이루어집니다.

  1. 볼링거 대역과 켈트너 채널의 기간을 최적화하여 가능한 한 동기화합니다.

  2. 최적의 매개 변수 조합을 찾기 위해 다른 곱셈 인수를 테스트합니다.

  3. 확인을 위해 RSI 등 다른 지표를 도입해보세요.

  4. 웬후아 5가지 컬러 라인 모델을 기반으로 시장 단계에 따라 선택적으로 이 전략을 활용합니다.

  5. 동적으로 매개 변수를 최적화하기 위해 기계 학습 등을 채택합니다.

  6. 가장 적합한 거래 상품을 찾기 위해 다른 동전들에 대한 백테스트.

  7. 이 전략의 효과를 더 긴 시간 (일일, 주간 등) 에서 탐구하십시오.

결론

라지베어 압축 모멘텀 전략은 다양한 기술적 지표를 종합적으로 사용하여 압축 구역 동안 거래의 모멘텀 역전을 정확하게 식별하고, 트렌드 없는 시장에서 반복적인 포지션 개척을 피합니다. 체계적으로 정량화 가능한 구매 및 판매 규칙을 정의하고, 백테스트에서 우수한 성과를 거두었습니다. 매개 변수 설정을 최적화하고, 새로운 판단 지표를 도입하여이 전략은 개선의 여지가 있으며 양 트레이더에 의해 심도있는 연구와 응용이 가치가 있습니다.


/*backtest
start: 2023-11-20 00:00:00
end: 2023-12-20 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4

//
// @author LazyBear 
// List of all my indicators: https://www.tradingview.com/v/4IneGo8h/
//
initialBalance = 8000

strategy("Crypto momentum 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")

useTrueRange = input(true, title="Use TrueRange (KC)", type=input.bool)

// Calculate BB
source = close
basis = sma(source, length)
ema = ema(source, 50)
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

val = linreg(source - avg(avg(highest(high, lengthKC), lowest(low, lengthKC)), sma(close, lengthKC)), lengthKC, 0)

slope = (val - val[2])
emaSlope = (ema - ema[1])


bcolor = iff(slope > 0, color.lime, color.red)
scolor = noSqz ? color.green : sqzOn ? color.black : color.green
squeeze = (noSqz ? 0 : sqzOn ? 1 : 0)

plot(val, color=color.gray, style=plot.style_line, linewidth=1, title="momentum")
plot(slope, color=bcolor, style=plot.style_circles, linewidth=2, title="slope")
plot(0, color=scolor, style=plot.style_line, linewidth=2, title="squeeze-zero")

co = crossover(slope / abs(slope), 0)
cu = crossunder(slope / abs(slope), 0)

if co and source > ema and emaSlope > 0
    strategy.entry("long", strategy.long, comment="long")
if cu
    strategy.close("long")


더 많은