볼린저 밴드 기반 브레이크아웃 전략


생성 날짜: 2023-11-13 10:19:43 마지막으로 수정됨: 2023-11-13 10:19:43
복사: 2 클릭수: 626
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

볼린저 밴드 기반 브레이크아웃 전략

개요

이 전략은 부린띠 지표에 기반한 돌파 전략으로, 부린띠의 하차 Provide 돌파 신호를 이용하여, 구매 및 판매 작업을 수행한다. 이 전략은 동시에 손실 추적 및 포지션 강화 메커니즘을 가지고 있으며, 트렌드 상황에서 더 높은 수익을 얻을 수 있다.

전략 원칙

이 전략은 먼저 브린 띠의 중간 궤도, 상단 궤도 및 하단 궤도를 계산한다. 중간 궤도는 가격의 이동 평균이며, 상단 궤도 및 하단 궤도는 각각 중간 궤도 및 하단 궤도의 각기 하나의 표준 차이다.

가격이 위쪽으로 내려가면 구매 신호가 발생하고, 가격이 아래쪽으로 내려가면 판매 신호가 발생한다. 이는 가격이 부린 대역 범위를 뚫고 트렌드 현상에 들어갈 수 있음을 의미한다.

또한, 이 전략은 엔티티가 브레이크되는 것을 판단하여, 종결 가격이 개시 가격보다 높고, 엔티티가 중궤도를 돌파한 비율이 있다면, 평지한다. 종결 가격이 개시 가격보다 낮고, 엔티가 중궤도를 돌파한 비율이 있다면, 평지한다. 이것은 가짜 브레이크로 인한 손실을 피할 수 있다.

포지션 개설 후, 이 전략은 중지 손실과 상장 작업을 수행 할 수 있습니다. 가격이 유리한 방향으로 계속 작동하면 포지션을 확대하여 수익을 증가시킬 수 있습니다. 가격이 반전되면 손실을 통해 위험을 제어합니다.

우위 분석

이 전략은 다음과 같은 장점을 가지고 있습니다.

  1. 브린 띠 지표는 트렌드 방향과 돌파구를 판단하는 기술 지표로 간단하고 효과적입니다.

  2. 실체와 중궤도 판단을 결합하여 돌파의 신뢰성, 가짜 돌파의 손실을 피할 수 있다.

  3. 리스크를 통제하기 위해 트레이킹 스톱을 사용해서 수익을 잠금화할 수 있다.

  4. 가장금융은 추세상황에서 더 높은 수익을 얻을 수 있다.

  5. 전략 논리는 명확하고 이해하기 쉽고, 매개 변수 설정은 간단하며, 실행하기 쉽다.

위험 분석

이 전략에는 다음과 같은 위험도 있습니다.

  1. 브린 띠의 돌파는 가짜 돌파를 완전히 피할 수 없으며, 여전히 손실의 위험이 있습니다.

  2. 스톱포인트 설정이 잘못되면 조기 스톱포인트 또는 무효 스톱포인트가 발생할 수 있습니다.

  3. 부적절하게 매장된 매장 수와 매장 비율은 손실을 확대할 수 있다.

  4. 동향이 역전될 경우, 적자를 제때 막지 못하면 큰 손실을 초래할 수 있다.

  5. 변수 최적화가 충분하지 않아서 전략이 제대로 작동하지 않을 수 있습니다.

  6. 다른 시장에서 검증해야 하는 과합의 위험이 있습니다.

최적화 방향

이 전략은 다음과 같은 부분에서 최적화될 수 있습니다.

  1. 브린 띠 변수를 테스트하고 최적화하여 더 적합한 변수 조합을 찾습니다.

  2. 다른 스톱 로드 전략을 테스트하고 더 정확한 스톱 로드 포인트를 설정합니다.

  3. 매장 수와 매장 비율에 대한 테스트를 통해 최적의 매개 변수를 찾습니다.

  4. 트렌드를 판단하는 지표를 늘리고 역동적인 가중치를 피하십시오.

  5. 실체 침입의 판단 논리를 최적화하고, 가짜 침입의 확률을 감소시킨다.

  6. 조건 단독 기능을 추가하고, 시장 상황에 따라 다른 파라미터 조합을 사용한다.

  7. 더 많은 다양한 품종과 시간 주기에서 재검토하여 안정성을 높인다.

  8. 기계학습과 같은 방법을 사용하여 자동으로 최적화합니다.

요약하다

전반적으로, 이 전략은 부린 띠 지표를 사용하여 트렌드 방향을 판단하고 돌파 신호를 얻을 수 있습니다. 하지만, 또한 일정 위험이 있습니다. 파라미터 최적화, 조건 판단을 추가하는 등의 방법으로 개선해야 합니다. 전략이 더 안정적이고 신뢰할 수 있습니다. 이 전략은 기술 분석에 익숙한 투자자가 사용할 수 있습니다.

전략 소스 코드
/*backtest
start: 2023-11-05 00:00:00
end: 2023-11-12 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy("Noro's Bollinger Strategy v1.1", shorttitle = "Bollinger str 1.1", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100.0, pyramiding = 5)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")

length = input(20, defval = 20, minval = 1, maxval = 1000, title = "Bollinger Length")
mult = input(2.0, minval = 0.001, maxval = 50, title = "Bollinger Mult")
source = input(ohlc4, defval = ohlc4, title = "Bollinger Source")

showbands = input(true, defval = true, title = "Show Bollinger Bands")
fromyear = input(2018, defval = 2018, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//Bollinger Bands
basis = sma(source, length)
dev = mult * stdev(source, length)
upper = basis + dev
lower = basis - dev

//Lines
col = showbands ? black : na 
plot(upper, linewidth = 1, color = col)
plot(basis, linewidth = 1, color = col)
plot(lower, linewidth = 1, color = col)

//Body
body = abs(close - open)
abody = ema(body, 30)

//Signals
up = close <= lower
dn = close >= upper
exit = (strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open) and body > abody / 2

//Trading
if up
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00)))

if dn
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00)))
    
if time > timestamp(toyear, tomonth, today, 00, 00) or exit
    strategy.close_all()