더블 밴드 브레이크아웃 전략


생성 날짜: 2023-12-25 13:20:31 마지막으로 수정됨: 2023-12-25 13:20:31
복사: 0 클릭수: 476
1
집중하다
1214
수행원

더블 밴드 브레이크아웃 전략

개요

이중 변동带突破策略 (이중 변동带突破策略) 는 트렌드 추적策略이다. 이는 변동带의 오르락 내리락을 이용하여 가격 트렌드를 판단하고, 가격이 내부 변동带을 뚫을 때 다단위 포지션을 설정하고, 가격이 외부 변동带을 넘어갈 때 평점 포지션을 설정한다.

전략 원칙

이 전략은 먼저 지정된 주기 내의 평균선과 표준차를 계산하여 표준차 값을 조정하여 쌍파동대를 구성한다. 내부 파동대는 평균선에서 양-한 표준차로 구성되며, 외부 파동대는 평균선에서 양-한 1.5 표준차로 구성된다.

가격이 내부 경로를 돌파할 때, 시장이 불시장을 시작한다고 생각하여 더 많이 한다. 가격이 내부 경로를 무너뜨렸을 때, 시장이 불시장을 시작한다고 생각하여 공백한다.

더한 후의 정지 탈퇴 조건은 가격이 외부 하향 궤도를 넘어간다는 것이다.

이 전략은 동시에 스톱, 스톱로스, 스톱로스 추적 등의 탈퇴 메커니즘을 설정한다.

우위 분석

이중 파동 벨트 돌파 전략은 다음과 같은 장점이 있습니다.

  1. 이중 파동대를 이용해서 가격의 움직임을 판단하고, 유행을 효과적으로 추적할 수 있다.
  2. 내부의 변동성을 뚫고 포지션을 구축하여 불필요한 반전 거래를 피합니다.
  3. 스톱, 스톱 손실 및 추적 스톱을 설정하여 위험을 효과적으로 제어할 수 있습니다.
  4. 다양한 품종에 대해 최적화 할 수 있습니다.

위험 분석

이 두가지의 전략은 위험도 있습니다.

  1. 시장이 흔들릴 때, 자주 입금과 손실이 발생할 수 있습니다.
  2. 잘못된 매개 변수 설정으로 인해 너무 쉽게 창고가 만들어지거나 막기 힘들 수 있습니다.
  3. 침입은 가끔 가짜 신호의 특징을 가지고 있으며, 가짜 침입의 위험이 있을 수 있다.

위와 같은 위험을 고려하여 파라미터를 적절하게 조정하거나 다른 지표와 함께 필터링하거나 인공적으로 돌파구를 모니터링하여 위험을 줄일 수 있습니다.

최적화 방향

이중 파동대 돌파 전략은 다음과 같은 측면에서 최적화될 수 있다:

  1. 평균선과 표준편차의 변수를 최적화하여 진동대를 다른 품종의 특성에 더 잘 맞추는 것;
  2. Volume, MACD와 같은 지표에 대한 필터를 추가하여 가짜 돌파구를 방지합니다.
  3. 기계 학습을 이용한 동적으로 최적화되는 매개 변수;
  4. 높은 주파수 영역에서 전략 복제를 수행하여 수익 공간을 확장합니다.

요약하다

이중 파동대 브레이크 전략overall 가격 상대적인 파동대 위치 변화를 판단하여 선택적으로 거래 신호를 구축하는, 좀 더 전형적인 트렌드 추적 전략이다. 이 전략은 이중 파동대 설정 수익 지역을 활용하고 과학적인 탈퇴 메커니즘을 설정하여 위험을 제어합니다. 매개 변수 최적화 및 위험 통제가 이루어지면 더 나은 효과를 얻을 수 있습니다.

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

//@version=2
strategy("BB Strat",default_qty_type = strategy.percent_of_equity, default_qty_value = 100,currency="USD",initial_capital=100, overlay=true)
l=input(title="length",defval=100)
pbin=input(type=float,step=.1,defval=.25)
pbout=input(type=float,step=.1,defval=1.5)
ma=sma(close,l)
sin=stdev(ma,l)*pbin
sout=stdev(ma,l)*pbout
inu=sin+ma
inb=-sin+ma
outu=sout+ma
outb=-sout+ma
plot(inu,color=lime)
plot(inb,color=lime)
plot(outu,color=red)
plot(outb,color=yellow)

inpTakeProfit = input(defval = 0, title = "Take Profit", minval = 0)
inpStopLoss = input(defval = 0, title = "Stop Loss", minval = 0)
inpTrailStop = input(defval = 0, title = "Trailing Stop Loss", minval = 0)
inpTrailOffset = input(defval = 0, title = "Trailing Stop Loss Offset", minval = 0)
useTakeProfit = inpTakeProfit >= 1 ? inpTakeProfit : na
useStopLoss = inpStopLoss >= 1 ? inpStopLoss : na
useTrailStop = inpTrailStop >= 1 ? inpTrailStop : na
useTrailOffset = inpTrailOffset >= 1 ? inpTrailOffset : na


longCondition = close>inu and rising(outu,1) 
exitlong = (open[1]>outu and close<outu) or crossunder(close,ma)

shortCondition = close<inb and falling(outb,1)
exitshort = (open[1]<outb and close>outb) or crossover(close,ma)

strategy.entry(id = "Long", long=true, when = longCondition)
strategy.close(id = "Long", when = exitlong)
strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset, when=exitlong)

strategy.entry(id = "Short", long=false, when = shortCondition)
strategy.close(id = "Short", when = exitshort)
strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset, when=exitshort)