LazyBear 압력 모멘텀을 기반으로 한 양적 모멘텀 전략


생성 날짜: 2023-12-21 14:22:49 마지막으로 수정됨: 2023-12-21 14:22:49
복사: 0 클릭수: 926
avatar of ChaoZhang ChaoZhang
1
집중하다
1621
수행원

LazyBear 압력 모멘텀을 기반으로 한 양적 모멘텀 전략

개요

이 전략의 주요 아이디어는 LazyBear의 Squeeze Momentum 지표에 기반하여 구매와 판매의 시간을 분석한다. 그것은 판매와 구매의 신호로 트렌드 전환점, 위치 고점 및 저점을 분석하여 판매 및 구매의 신호를 분석한다. 이것은 다중 전략이기 때문에 상승 추세를 식별하기 위해 50 주기의 지수 이동 평균도 고려한다.

전략 원칙

이 전략은 브린 벨트 지표와 켈트너 통로 지표가 결합되어 트렌드 및 압력 구간을 식별한다. 구체적으로, 그것은 20주기의 브린 벨트와 20주기 켈트너 통로의 상하 궤도를 계산한다. 브린 벨트가 켈트너 통로 안에 완전히 떨어지면, 압축 신호로 간주된다. 브린 벨트 하하 궤도가 켈트너 통로 하 궤도를 초과하고 브린 벨트 상하 궤도가 켈트너 통로 상하 궤도보다 낮으면 압축 구간으로 식별된다. 반대로, 브린 벨트 하하 궤도가 켈트너 통로 하 궤도보다 낮고 브린 벨트 상하 궤도가 켈트너 통로 상하 궤도보다 높으면 비 압축 구간으로 식별된다.

또한, 이 전략은 선형 회귀를 사용하여 동력의 변화 트렌드 및 슬라이드를 분석한다. 그것은 지난 20 주기의 가격에서 전형적인 가격의 선형 회귀 값을 것이다. 선형 회귀 값의 슬라이드가 긍정적이면 상승 트렌드로 간주되며, 슬라이드가 부정적이면 하향 트렌드로 간주된다.

가짜 신호를 필터링하기 위해, 이 전략은 또한 종식 가격이 50 일 지수 이동 평균보다 높는지, 그리고 50 일 지수 이동 평균이 상승 중인지 판단한다. 이 두 가지 조건이 동시에 충족될 때만 구매 신호가 실행된다.

전략적 강점 분석

이것은 매우 똑똑한 전략이며, 동시에 두 가지 다른 유형의 지표를 사용하여 시장에 대한 다차원 판단을 할 수 있으며, 가짜 신호를 효과적으로 피할 수 있습니다. 구체적으로, 다음과 같은 장점이 있습니다:

  1. 브린 벨트, 켈트너 채널 및 동력 지표를 통합하여 다차원 분석을 수행하여 판단 정확도를 향상시킵니다.

  2. 압축 구간은 동량 반전의 고저를 효과적으로 식별하고, 전환을 정확하게 포착할 수 있다.

  3. 종결 가격과 50일 지수 이동 평균에 기반한 트렌드 필터링을 통해 종결 시 재개 포지션을 피할 수 있다.

  4. 압축 영역에서만 신호를 발산하면 가짜 신호를 줄이고 수익률을 높일 수 있다.

  5. 이 정책의 매개 변수는 최적화 공간이 넓고, 조정 주기 등의 매개 변수를 통해 타겟팅 최적화를 할 수 있다.

  6. 장기적 측면을 고려하여, 대주기적 경향을 고려하고, 중장기적 지표와 결합하여, 다방향을 명확히 한다.

위험 분석

비농업은 여러 기술적인 지표들을 통해 판단되지만, 여전히 위험성이 있습니다:

  1. 브린 벨트와 켈트너 통로가 분산되면 구매/판매 기회를 놓치게 됩니다.

  2. 이 전략은, “전략의 손실을 줄 수 있다”는 뜻입니다.

  3. 높은 변동성 상황에서, 압축은 눈에 띄지 않을 수 있으며, 신호는 덜 보인다.

  4. 콩고, 고래, 곰이 전환하면 조정 손실이 발생할 수 있습니다.

이러한 위험들을 방지하기 위해, 우리는 다음과 같은 방법을 사용합니다.

  1. 브린 벨트와 켈트너 통로가 가능한 한 동시화되도록 최적화 파라미터.

  2. 단기 손실을 통제하기 위해 스톱 라인을 설정하십시오.

  3. 이 전략은 조합 전략의 일부로 사용되며 다른 전략과 함께 사용된다.

  4. 높은 변동성이 있는 상황에서는 적당히 지위를 낮춰야 한다.

최적화 방향

이 전략은 크게 개선될 수 있습니다. 주요 개선방향은 다음과 같습니다.

  1. 브린 벨트와 켈트너 통로의 길이를 최적화하여 가능한 한 동시적으로 유지한다.

  2. 다양한 곱셈 인자를 테스트하여 최적의 변수 조합을 찾습니다.

  3. RSI 등과 같은 다른 지표를 추가하여 확인해보세요.

  4. 이 전략을 선택적으로 사용하는 것은 시장을 판단하는 모델에 기반한 것이다.

  5. 기계 학습과 같은 방법을 적용하여 동적으로 최적화 매개 변수.

  6. 다른 동전을 탐색하여 가장 적합한 거래 품종을 찾습니다.

  7. 이 전략이 더 긴 기간 (태양선, 주경선 등) 에 효과가 있는지 탐구한다.

요약하다

LazyBear 압력矩량 동력 전략은 여러 가지 기술 지표를 종합적으로 사용하여 압축 영역에서 동력 전환을 정확하게 식별하여 거래하고, 비 트렌드 상황에서 자주 포지션을 열지 않습니다. 그것은 체계적으로 양적 거래 규칙을 정의하고, 재측정에서 우수한 성능을 발휘합니다. 최적화 매개 변수 설정, 새로운 판단 지표 도입 등의 방법을 통해 이 전략은 많은 개선의 여지가 있으며, 양적 거래자가 더 깊이 연구하고 적용할 가치가 있습니다.

전략 소스 코드
/*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")