사이드웨이스 돌파 오스실레이션 전략 (Sideways Breakthrough Oscillation Strategy) 은 볼링거 밴드 (Bollinger Bands) 와 MACD 지표를 사용하여 구매 및 판매 신호를 결정하는 양적 거래 전략이다. 이 전략은 주식 지수 선물, 외환 및 디지털 통화와 같은 오스실레이션 제품에 주로 적합합니다. 전략의 주요 아이디어는 가격이 볼링거 밴드의 상부 및 하부 밴드를 통과 할 때 구매 및 판매 신호를 발행하는 것입니다.
사이드웨이스 돌파 오스실레이션 전략은 가격 변동 범위를 판단하기 위해 볼링거 밴드를 사용합니다. 볼링거 밴드는 중간 밴드, 상부 밴드 및 하부 밴드를 포함합니다. 중간 밴드는 n 일간 간단한 이동 평균이며 상부 및 하부 밴드는 각각 중간 밴드 위의 n 일간 진정한 범위의 k 배입니다. 가격이 하부 밴드를 넘을 때 시장이 역전될 수 있다고 믿어지고 구매 신호가 발급됩니다. 가격이 상부 밴드를 넘을 때 시장이 역전될 수 있다고 믿어지고 판매 신호가 발급됩니다.
이 전략은 거래 포인트를 결정하기 위해 볼링거 밴드를 사용하는 것 외에도 거래 신호를 결정하기 위해 MACD 지표를 포함합니다. MACD 지표에는 DIF 라인, DEA 라인 및 MACD 라인이 포함됩니다. DIF 라인은 12 일 지수 이동 평균과 26 일 지수 이동 평균의 차이이며, DEA 라인은 9 일 지수 이동 평균이며, MACD 라인은 DIF와 DEA 라인의 차이입니다. MACD 라인이 음에서 양으로 전환되면 구매 신호가 생성되며, 양에서 음으로 전환되면 판매 신호가 생성됩니다.
볼링거 밴드와 MACD 지표를 결합하여, 사이드웨이스 브레이크루스 오스실레이션 전략의 거래 신호 생성 규칙은: 가격이 볼링거 채널의 하위 밴드를 뚫을 때 구매 신호가 발행됩니다. 가격이 볼링거 채널의 상위 밴드를 뚫을 때 판매 신호가 발행됩니다. 가격이 채널 레일을 다시 뚫을 때 포지션을 닫습니다.
사이드웨이 브루크로우스 오시슬레이션 전략은 다음과 같은 장점을 가지고 있습니다.
사이드웨이스 브레이크루스 오시슬레이션 전략은 많은 장점을 가지고 있지만 실제 거래에는 여전히 몇 가지 위험이 있습니다. 주로 다음 측면으로 반영됩니다.
위의 위험을 줄이기 위해 우리는 다음 측면에서 최적화 할 수 있습니다:
사이드웨이스 브루크루스 오시슬레이션 전략은 또한 다음 방향에서 주로 수행 될 수있는 추가 최적화에 대한 여지가 있습니다.
사이드웨이스 브레이크로우스 오시슬레이션 전략은 입출시기를 결정하기 위해 볼링거 밴드와 MACD 지표를 통합하고 양측의 가격 브레이크로우스를 사용하여 오시슬레이션 트렌드에서 반전 기회를 효과적으로 포착 할 수 있습니다. 이 전략은 간단하고 매개 변수 선택에 유연하며 다른 제품에서 잘 수행됩니다. 그러나 여전히 추가 테스트와 최적화를 필요로하는 전략의 위험이 있습니다. 우리는 몇 가지 최적화 아이디어를 제안했습니다. 지속적인 개선으로이 전략의 성능이 점점 좋아질 것이라고 믿습니다. 일반적으로 사이드웨이스 브레이크로우스 오시슬레이션 전략은 권장되는 수치 전략입니다.
/*backtest start: 2023-12-26 00:00:00 end: 2024-01-02 00:00:00 period: 5m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("Seitwärtsdoppelpenetration", overlay=false) //Keltner Channel source = open useTrueRange = input(true) length = input(20, minval=1) mult = input(4.0) ma = sma(source, length) range = useTrueRange ? tr : high - low rangema = sma(range, length) upper = ma + rangema * mult lower = ma - rangema * mult crossUpper = crossover(source, upper) crossLower = crossunder(source, lower) //Entry buyEntry = cross(lower,source) sellEntry = cross(upper,source) if (cross(lower,source)) strategy.entry("buyEntry", strategy.long, comment="buyEntry") if (cross(source, upper)) strategy.entry("sellEntry", strategy.short, comment="sellEntry") buyExit = cross(source, upper) sellExit = cross(lower,source) strategy.close("buyEntry", buyExit) strategy.close("sellEntry", sellExit)