더블 볼린저 밴드 오실레이터 추적 전략


생성 날짜: 2023-12-25 11:49:41 마지막으로 수정됨: 2023-12-25 11:49:41
복사: 0 클릭수: 661
avatar of ChaoZhang ChaoZhang
1
집중하다
1623
수행원

더블 볼린저 밴드 오실레이터 추적 전략

개요

이중 브린 띠 흔들림 추적 전략은 이중 브린 띠를 구축하여 가격 흔들림을 추적하는 양적 거래 전략이다. 이 전략은 브린 띠의 오르락 내리락을 이용하여 시장의 흔들림 기회를 실시간으로 포착한다.

전략 원칙

이 전략은 먼저 N일간의 평선을 기준선으로 계산하고, 평선에 기초하여 표준차의 여러 배에 따라 상하철을 계산하여 브린띠를 구성한다. 이 전략은 이중 브린띠를 사용한다. 즉, 상하철과 하하철은 모두 표준차의 여러 배이다. 이중 브린띠가 형성된 후, 가격이 상하철을 돌파할 때 구매 신호를 발신하고, 가격이 하하철을 돌파할 때 판매 신호를 발신하며, 이러한 방법으로 브린띠의 가격 변동 기회를 잡는다.

이 전략은 동시에 시간 창을 설정하여 재검토를 더 TARGET로 만들고, 이전 데이터가 테스트에 영향을 미치지 않도록 합니다. 전체 전략 운영 프로세스는 다음과 같습니다: 이중 브린 띠를 구축하고, 거래 신호로 가격과 궤도의 교차를 설정하고, 이전 데이터 영향을 방지하기 위해 시간 창을 설정합니다.

우위 분석

이 전략의 가장 큰 장점은 가격의 흔들림을 실시간으로 포착하여 부린 띠의 오르락 내리락의 돌파구를 통해 OPERATION 방향을 판단하는 데 있습니다. 다른 지표에 비해 부린 띠는 시장에 대한 반응이 더 민감하며 짧은 시간 내에 거래 신호를 형성 할 수 있습니다. 또한, 이중 부린 띠는 더 넓은 통로를 설정하여 가격 돌파구가 더 가능하여 더 많은 거래 기회를 잡을 수 있습니다.

위험 분석

이 전략의 주요 위험은 부린 밴드 구축 의존하는 변수 N일과 표준 차이의 배수의 설정에 있다. 만약 변수 설정을 잘못하면 부린 밴드가 너무 넓거나 너무 좁아져 거래 기회를 놓치거나 잘못된 신호를 발생시키게 된다. 또한, 쌍방 거래에서 스톱 손실이 설정되지 않아 손실이 확대될 수 있다.

해결책은 부린 띠의 형태를 실시간으로 평가하는 매개 변수를 최적화하는 것입니다. 또한, 역사적인 데이터에 따라 단편적 손실을 제어하는 손실을 중지하는 전략을 수립하는 것입니다.

최적화 방향

이 전략은 다음과 같은 방향으로 최적화될 수 있습니다.

  1. 부린띠의 파라미터를 최적화하여 N일과 표준차의 배수를 조정하여 부린띠가 다른 시장의 특성에 더 잘 적응할 수 있도록 한다.

  2. 연장 주문을 늘리고, 원래의 주문이 수익을 얻은 후 다시 주문을 추가하여 수익을 창출할 수 있는 공간을 넓혀줍니다.

  3. 가격의 불리한 방향으로 부린을 뚫고 하향 궤도를 타면 손실을 제어하기 위해 스톱 손실 전략을 설정합니다.

  4. 다른 지표와 함께 필터링 신호를 사용하여 흔들리는 시장에서 잘못된 신호를 피하십시오.

요약하다

쌍방향 브린띠 진동 추적 전략은 쌍방향 브린띠를 구축하여 실시간으로 가격을 포착하는 진동으로 단기간에 더 많은 거래 기회를 잡을 수 있습니다. 이 전략의 장점은 시장 변화에 민감하고 거래 신호가 빠르게 생성된다는 것입니다. 위험은 주로 변수 설정이 잘못되어 중단되지 않습니다. 우리는 다방향 최적화를 통해 이 전략을 더 안정적이고 효율적으로 만들 수 있습니다.

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

//@version=3
strategy("BB_BB", overlay=true,default_qty_type=strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0)
length = input(20, minval=1)
src = input(close, title="Source")
mult = input(2.0, minval=0.001, maxval=50)
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear = input(defval = 2017, title = "From Year", minval = 2017)
ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear = input(defval = 9999, title = "To Year", minval = 2017)
start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window
window() => true // create function "within window of time"


basis = sma(src, length)
dev = mult * stdev(src, length)
upper = basis + dev
lower = basis - dev
plot(basis, color=red)
p1 = plot(upper, color=blue)
p2 = plot(lower, color=blue)
fill(p1, p2)

buy = crossover(sma(close,1), upper) or crossover(sma(close,1), lower)
sell = crossunder(sma(close,1), upper) or crossunder(sma(close,1), lower)

if(buy)
    strategy.entry("BUY", strategy.long, when = window())
if(sell)
    strategy.entry("SELL", strategy.short, when = window())