보어 밴드 돌파 전략


생성 날짜: 2023-09-21 10:38:13 마지막으로 수정됨: 2023-09-21 10:38:13
복사: 0 클릭수: 607
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

개요

이 전략은 볼띠 지표 설계에 기반하며, 가격이 볼띠를 뚫고 하향으로 갈 때, 그에 따른 더하거나 더 적은 작업을 수행한다. 이 전략은 뚫린 행동을 포착하여 수익을 얻는다.

전략 원칙

  1. 볼띠의 중간, 상단, 하단 레일을 계산한다
  2. 철도를 돌파할 때 더 많은 일을 하고, 철도를 돌파할 때 빈 일을 한다.
  3. 시작/ 종료 시간을 설정하고 거래 간격을 제한합니다.
  4. 포지션 기간을 설정하고, 당일 포지션을 평정합니다.

구체적으로, 이 전략은 먼저 길이로 된 중도 SMA를 계산하고, 멀티배 표준 차로 계산된 상하의 궤도를 계산한다. 종전 가격이 아래에서 위로 하하 궤도를 돌파했을 때, 더 많은 입장을 취하고, 위에서 아래로 올라가는 궤도를 돌파했을 때, 공백 입장을 취한다. 동시에 정지 시간 제한 거래 구역을 설정한다. 매일 개장하기 전에 강제 평지 입장을 취한다.

이 전략은 가격이 상하 궤도를 돌파한 후의 확장 상황을 포착하기 위해 시도한다. 상하 궤도를 돌파할 때 다자력 강화, 상하 궤도를 돌파할 때 공자력 강화, 거래는 같은 방향으로 유리하다.

우위 분석

  1. 간단하고 직관적이며, 이해하기 쉽고, 실행이 가능합니다.
  2. 볼밴드 지표를 이용해서 시장의 돌파구를 판단하고, 트렌드를 추적하는 능력을 가지고 있다.
  3. 다양한 주기 및 품종에 적용 가능한 유연하게 조정 가능한 매개 변수
  4. 매일 매매를 하고, 밤새의 위험을 조절할 수 있습니다.
  5. 개별적으로 열 수 있는 멀티 헤드 또는 홀드 트레이드

위험 분석

  1. 파격 가짜 파격 위험. 파격 후 가격이 다시 내려갈 수 있다.
  2. 매개 변수를 적절히 조정해야 한다. 다른 주기에는 매개 변수를 조정해야 한다.
  3. 잠재적인 손실은 위험을 확대한다. 돌파구를 확대하면 단독 손실을 확대할 수 있다.
  4. 거래비용이 위험을 확대한다. 자주 거래하면 거래비용이 증가할 수 있다.

입시 조건을 최적화하고, 손실을 막는 전략을 추가하고, 트렌드 필터를 도입함으로써 위와 같은 위험을 줄일 수 있습니다.

최적화 방향

  1. 다른 주기에 맞게 최적화 변수
  2. 트렌드를 추적하기 위해 재입장 및 부가 조건을 추가합니다.
  3. 위험을 통제하기 위해 손실을 막는 전략을 추가합니다.
  4. 중요한 뉴스를 피하기 위해 거래 시간을 설정합니다.
  5. 트렌드 필터 조건에 대한 평가
  6. 서로 다른 기간을 테스트하고 결과를 비교합니다.

요약하다

이 전략은 볼띠를 기반으로 한 돌파 전략으로, 돌파가 펼쳐지는 시장을 포착하여 이익을 얻는다. 장점은 아이디어가 간단하고 구현하기 쉽다는 것이다. 단점은 곡선 시기의 오해에 쉽게 빠지게 되는 것이다.

전략 소스 코드
/*backtest
start: 2023-08-21 00:00:00
end: 2023-09-20 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy("Noro's Bollinger Strategy v1.0", shorttitle = "Bollinger str 1.0", 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, minval=1)
mult = input(1.0, minval=0.001, maxval=50)

fromyear = input(1900, defval = 1900, 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")

source = close
basis = sma(source, length)
dev = mult * stdev(source, length)

upper = basis + dev
lower = basis - dev

up = close < lower
dn = close > upper
exit = (strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open)

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

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