라지베어 지표에 기반한 스즈 모멘텀 거래 전략

저자:차오장, 날짜: 2024-02-05 14:48:01
태그:

img

전반적인 설명

이 전략은 LazyBear의 Squeeze Momentum Indicator를 기반으로 하고 있으며, 추가된 모멘텀 필터, 변경된 데이터 소스, 향상된 리스크 관리 시스템 및 사용자 정의 가능한 백테스팅 타임프레임이 있으며, 변동성 압축 후 가격 폭발을 파악하는 것을 목표로 합니다.

전략 논리

이 전략은 가격 채널을 계산하기 위해 볼링거 밴드 (Bollinger Band) 와 켈트너 채널 (Keltner Channels) 을 사용합니다. 브레이크아웃은 변동성을 증가시키는 신호입니다. 라지 베어 (LazyBear) 의 압축 모멘텀 지표 (Squeeze Momentum Indicator) 를 통합하여 선형 회귀를 사용하여 가격 모멘텀 방향을 결정합니다.

이 전략은 모멘텀 필터를 추가하고 절대 모멘텀이 한 임계치를 초과 할 때만 거래합니다. 모멘텀 필터가 통과 된 변동성 압축 (채널 강화) 에 따라 장기 / 단위 트렌드 방향을 판단합니다. 또한 위험을 제어하기 위해 손실 중지, 이익 취득 및 후속 중지 설정합니다.

이점 분석

전략은 포괄적인 판단을 위해 여러 지표를 통합합니다. 위험 관리 메커니즘으로 거래당 손실을 제한합니다. 압축 후 가격 추세를 적시에 판단 할 수 있습니다. 사용자 정의 가능한 매개 변수는 적응력을 제공합니다.

위험 분석

주요 위험은: 잘못된 판단을 유발하는 잘못된 브레이크; 부적절한 매개 변수 설정으로 시간에 반전되지 않는 것; 손실을 증가시키는 스톱 손실 위반. 이러한 경우 매개 변수를 최적화하고 위험 관리 설정을 조정하고 적합한 제품 및 거래 세션을 선택함으로써 완화 할 수 있습니다.

최적화 방향

부피와 같은 다른 지표 필터를 결합하는 것을 고려하십시오. 더 높은 정밀도를 위해 모멘텀 문턱을 세밀하게 조정하십시오. 더 엄격한 위험 통제를 위해 마감 스톱 손실을 추가하십시오. 더 많은 제품에 대한 테스트 효과. 이러한 최적화는 전략을 더 견고하고 일반화 할 수 있습니다.

요약

이 전략은 높은 통합 수준과 개선된 위험 통제 조치로 가격 추세와 변동성을 비교적 포괄적으로 평가합니다. 압축 후 가격 폭염을 잡는 강력한 적응력을위한 최적화 방향에 의해 더욱 향상 될 수 있습니다.


/*backtest
start: 2024-01-05 00:00:00
end: 2024-02-04 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// @version=4
// Strategy based on LazyBear Squeeze Momentum Indicator
// © Bitduke
// All scripts: https://www.tradingview.com/u/Bitduke/#published-scripts

strategy(shorttitle="SMS", title="Squeeze Momentum Strategy", overlay=false )

length = input(12, title="BB Length")
mult = input(2.0, title="BB MultFactor")
lengthKC = input(16, title="KC Length")
mult_kc = input(1.5, title="KC MultFactor")


//FILTERS
useMomAverage = input(false, title="Filter for Momenutum value", type=input.bool)
MomentumMin = input(20, title="Min for momentum")

// Calculate BB
src = ohlc4

ma_1 = sma(src, length)
ma_2 = sma(src, lengthKC)
range_ma = sma(high - low, lengthKC)

dev = mult * stdev(src, length)

upper_bb = ma_1 + dev
lower_bb = ma_1 - dev

upper_kc = ma_2 + range_ma * mult_kc
lower_kc = ma_2 - range_ma * mult_kc

sqz_on = lower_bb > lower_kc and upper_bb < upper_kc
sqz_off = lower_bb < lower_kc and upper_bb > upper_kc
no_sqz = sqz_on == false and sqz_off == false

val = linreg(src - avg(avg(highest(hl2, lengthKC), lowest(low, lengthKC)), sma(hl2, lengthKC)), lengthKC, 0)

bcolor = iff(val > 0, iff(val > nz(val[1]), color.lime, color.green), iff(val < nz(val[1]), color.red, color.maroon))
scolor = no_sqz ? color.blue : sqz_on ? color.black : color.aqua
plot(val, color=bcolor, style=plot.style_histogram, linewidth=4)
plot(0, color=scolor, style=plot.style_cross, linewidth=2)

//LOGIC
//momentum filter
filterMom = useMomAverage ? abs(val) > MomentumMin / 100000 ? true : false : true

//standard condition
longCondition = scolor[1] != color.aqua and scolor == color.aqua and bcolor == color.lime and filterMom
exitLongCondition = bcolor == color.green
shortCondition = scolor[1] != color.aqua and scolor == color.aqua and bcolor == color.red and filterMom
exitShortCondition = bcolor == color.maroon

// Risk Management Sysyem
stop_loss = input(defval = 600, title="Stop Loss", minval = 0)
take_profit = input(defval = 1000, title="Take Profit", minval = 0)
trailing_stop = input(defval = 20, title="Trailing Stop", minval = 0)
// If the zero value is set for stop loss, take profit or trailing stop, then the function is disabled
s_loss = stop_loss >= 1 ? stop_loss : na
tk_profit = take_profit >= 1 ? take_profit : na
tr_stop = trailing_stop >= 1 ? trailing_stop : na


//STRATEGY
strategy.entry("SQ_Long", strategy.long, when=longCondition)
strategy.exit("Exit Long", from_entry = "SQ_Long", profit = take_profit, trail_points = trailing_stop, loss = s_loss)
strategy.close("SQ_Long", exitLongCondition)

strategy.entry("SQ_Short", strategy.short, when=shortCondition)
strategy.exit("Exit Short", from_entry = "SQ_Short", profit = take_profit, trail_points = trailing_stop, loss = s_loss )
strategy.close("SQ_Short", when=exitShortCondition)



더 많은