볼린저 대역폭 확장 이중 이동 평균 추세 스크리닝 전략


생성 날짜: 2023-10-25 15:00:20 마지막으로 수정됨: 2023-10-25 15:00:20
복사: 3 클릭수: 782
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

볼린저 대역폭 확장 이중 이동 평균 추세 스크리닝 전략

이 전략은 부린띠와 쌍평등선을 기반으로 거래 신호를 생성하고, 트렌드 필터링과 결합하여 높은 승률과 좋은 수익률을 추구하는 것을 목표로 한다.

전략 원칙

  1. 브린 띠의 상반, 중반, 하반을 사용하여 다공간 신호를 결정한다. 가격이 상반을 접촉할 때 상공을 보고, 하반을 접촉할 때 상공을 본다.

  2. 길이가 20인 중단기 평균선과 길이가 60인 장기 평균선으로 트렌드를 판단한다. 단기 평균선 상에 장기 평균선을 밟으면 부진하고, 밑에 밟으면 하락한다.

  3. 부린 대역의 폭에 따라 손해 위치를 동적으로 조정한다. 부린 대역 폭이 0.5% 이상일 때, 손해 위치는 하철; 폭이 0.5% 미만일 때, 손해 위치는 하철의 반으로 축소된다.

  4. 입시 조건: 상반시 가격이 하향을 돌파하면 다중 신호로, 하향이 상향을 돌파하면 하향 신호로.

  5. 출구 조건: 다중을 할 때 부린带上轨 또는 단기均线 때 정지; 공백을 할 때 부린带下轨 또는 단기均线 때 정지.

  6. 중단 조건: 다수 할 때 가격이 부린의 아래로 내려가는 동적 영역에서 중단; 공백 할 때 가격이 부린의 위로 올라가는 동적 영역에서 중단.

전략적 이점

  1. 트렌드 판단을 위해 쌍평등선을 사용하여, 추세가 불분명하거나 시장의 잡음을 효과적으로 필터링 할 수 있습니다.

  2. 브린 벨트 중간 궤도는 지원 저항으로, 상단 및 하단 궤도는 동적 중지 위치로, 위험을 제어할 수 있다.

  3. 브린의 대역폭에 따라 중지 손실의 폭을 조정하여 중지 손실이 활성화되는 가능성을 낮추고 중지 손실이 합리적인 위치에 있는지 확인하십시오.

  4. 트렌드 방향 거래, 승률이 높다.

전략적 위험

  1. 이중 평행선은 가짜 돌파구를 생성할 확률이 높고, 트렌드 전환점을 놓칠 수도 있다. 평행선 주기를 적절히 줄일 수 있다.

  2. 브린은 변동성 트렌드에 쉽게 휘둘릴 수 있다. 거래 빈도를 줄여서 피할 수 있다.

  3. 스피드 포지션은 지원 저항에 가까이 있을 때 쉽게 뚫릴 수 있다. 스피드 범위를 적절히 넓힐 수 있다.

  4. 짧은 라인 회귀를 효과적으로 잡을 수 없는 기회 ᄒ. 포지션 보유 시간을 적절히 줄일 수 있습니다 ᄒ.

전략 최적화 방향

  1. 평균선 주기 변수를 최적화하여 전략에 적합한 시장 환경을 찾습니다.

  2. 브린 띠의 배수 파라미터를 최적화하여, 균형 스톱 손실이 뚫린 확률을 조정한다.

  3. 다른 지표를 추가하여 다중 인수 검증을 수행하여 신호 품질을 향상시킵니다.

  4. 트렌드를 판단하기 위해 거래량 에너지와 결합하여 탈퇴를 피하십시오.

  5. 자금 관리 최적화, 예를 들어 고정 지분, 고정 중지 손실 등, 단일 손실을 제어.

  6. 가격 쇼크 처리, 예를 들어 큰 폭으로 공백을 뛰어넘는 경우.

요약하다

이 전략은 전체적으로 안정적이며, 양평선으로 트렌드 방향을 판단하고, 브린띠는 지지 저항 수준을 제공하며, 동적 스톱로드를 설정한다. 그러나, 트렌드를 잘못 판단하고, 초과 손실과 같은 문제와 같은 제한이 있다. 이후, 이 전략의 매개 변수가 더 거칠고, 다양한 시장 환경에서 전체적으로 안정적인 성능을 유지할 수 있도록, 이 전략의 매개 변수는 더 거칠고, 다양한 시장 환경에서 안정적인 성능을 유지할 수 있다.

전략 소스 코드
/*backtest
start: 2022-10-18 00:00:00
end: 2023-10-24 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title="yuthavithi BB Scalper 2 strategy", overlay=true)

len = input(20, minval=1, title="Length")
multiplier = input(4, minval=1, title="multiplier")
trendTimeFrame = input(60, minval=1, title="Trend Time Frame")
useTrendFilter = input(true, type=bool, title = "Use Trend Filter")

src = input(close, title="Source")
out = sma(src, len)
//plot(out, title="SMA", color=blue)

stdOut = stdev(close, len)
bbUpper = out + stdOut * multiplier
bbLower = out - stdOut * multiplier
bbUpper2 = out + stdOut * (multiplier / 2)
bbLower2 = out - stdOut * (multiplier / 2)
bbUpperX2 = out + stdOut * multiplier * 2
bbLowerX2 = out - stdOut * multiplier * 2
bbWidth = (bbUpper - bbLower) / out


closeLongTerm = request.security(syminfo.tickerid, tostring(trendTimeFrame), close)
smaLongTerm = request.security(syminfo.tickerid, tostring(trendTimeFrame), sma(close,20))

//plot(smaLongTerm, color=red)

trendUp = useTrendFilter ? (closeLongTerm > smaLongTerm) : true
trendDown = useTrendFilter? (closeLongTerm < smaLongTerm) : true

bearish = ((cross(close,bbUpper2) == 1) or (cross(close,out) == 1)) and (close[1] > close) and trendDown
bullish = ((cross(close,bbLower2) == 1) or (cross(close,out) == 1)) and (close[1] < close) and trendUp


closeBuy = (high[1] > bbUpper[1]) and (close < bbUpper) and (close < open) and trendUp 
closeSell = (((low[1] < bbLower[1]) and (close > bbLower)) or ((low[2] < bbLower[2]) and (close[1] > bbLower[1]))) and (close > open) and trendDown


cutLossBuy = iff(bbWidth > 0.005, (low < bbLower) and (low[1] > bbLower[1]) and trendUp, (low < bbLowerX2) and (low[1] > bbLowerX2[1]) and trendUp)
cutLossSell = iff(bbWidth > 0.005, (high > bbUpper) and (high[1] < bbUpper[1]) and trendDown, (high > bbUpperX2) and (high[1] < bbUpperX2[1]) and trendDown)


if (bullish)
    strategy.entry("Buy", strategy.long, comment="Buy")

if (bearish)
    strategy.entry("Sell", strategy.short, comment="Sell")
    

strategy.close("Buy", closeBuy or cutLossBuy)
   
strategy.close("Sell", closeSell or cutLossSell)