DCA 부스터 (DCA Booster, 1분) 는 1분 단위로 동작하는 고주파 트레이딩 전략이다. 이 전략은 볼링거 밴드 (Bollinger Band) 와 달러 비용 평균 (Dollar-Cost Averaging, DCA) 기법을 결합하여 수익을 창출하기 위해 여러 가지 구매 및 판매를 통해 시장 변동을 활용한다. 이 전략의 주요 아이디어는: 가격이 두 차례 연속적으로 낮은 볼링거 밴드 (Bollinger Band) 이하로 떨어지면 DCA를 사용하여 포지션을 구축하기 시작하며, 가격이 상위 볼링거 밴드 (Bollinger Band) 이상으로 상승하면 모든 포지션을 폐쇄한다. 또한, 이 전략은 피라미딩을 허용하며, 이는 가격이 계속 떨어지면 포지션을 추가할 수 있다는 것을 의미한다.
DCA 부스터 (DCA Booster, 1분) 는 볼링거 밴드 (Bollinger Band) 와 DCA를 결합한 고주파 트레이딩 전략이다. 가격이 낮은 볼링거 밴드 (Bollinger Band) 이면 포지션을 구축하고 상위 볼링거 밴드 (Bollinger Band) 이면 포지션을 폐쇄하여 수익을 창출하는 것을 목표로 한다. 이 전략은 피라미딩을 허용하지만 급격한 시장 변동성 및 과잉 노출과 같은 위험에 직면한다. 스톱 로스를 도입하고, 피라미딩 논리를 최적화하고, 다른 지표를 통합하고, 매개 변수를 최적화함으로써 이 전략의 성능을 더욱 향상시킬 수 있다.
/*backtest start: 2024-02-27 00:00:00 end: 2024-03-28 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("DCA Booster (1 minute)", overlay=true ) // Parameters for Bollinger Bands length = input.int(50, title="BB Length") mult = input.float(3.0, title="BB Mult") // Bollinger Bands calculation basis = ta.sma(close, length) dev = mult * ta.stdev(close, length) upper = basis + dev lower = basis - dev // Variables for DCA cantidad_dolares = 50000 orden1 = cantidad_dolares / close orden2 = orden1 * 1.2 orden3 = orden2 * 1.3 orden4 = orden3 * 1.5 orden5 = orden4 * 1.5 // Variables for tracking purchases var comprado1 = false var comprado2 = false var comprado3 = false var comprado4 = false var comprado5 = false // Buy conditions condicion_compra1 = close < lower and close[1] < lower[1] and not comprado1 condicion_compra2 = close < lower and close[1] < lower[1] and comprado1 and not comprado2 condicion_compra3 = close < lower and close[1] < lower[1] and comprado2 and not comprado3 condicion_compra4 = close < lower and close[1] < lower[1] and comprado3 and not comprado4 condicion_compra5 = close < lower and close[1] < lower[1] and comprado4 and not comprado5 // Variables de control var int consecutive_closes_below_lower = 0 var int consecutive_closes_above_upper = 0 // Entry logic if condicion_compra1 and barstate.isconfirmed consecutive_closes_below_lower := consecutive_closes_below_lower + 1 if consecutive_closes_below_lower >= 2 strategy.entry("Compra1", strategy.long, qty=orden1) comprado1 := true consecutive_closes_below_lower := 0 if condicion_compra2 and barstate.isconfirmed consecutive_closes_below_lower := consecutive_closes_below_lower + 1 if consecutive_closes_below_lower >= 2 strategy.entry("Compra2", strategy.long, qty=orden2) comprado2 := true consecutive_closes_below_lower := 0 if condicion_compra3 and barstate.isconfirmed consecutive_closes_below_lower := consecutive_closes_below_lower + 1 if consecutive_closes_below_lower >= 2 strategy.entry("Compra3", strategy.long, qty=orden3) comprado3 := true consecutive_closes_below_lower := 0 if condicion_compra4 and barstate.isconfirmed consecutive_closes_below_lower := consecutive_closes_below_lower + 1 if consecutive_closes_below_lower >= 2 strategy.entry("Compra4", strategy.long, qty=orden4) comprado4 := true consecutive_closes_below_lower := 0 if condicion_compra5 and barstate.isconfirmed consecutive_closes_below_lower := consecutive_closes_below_lower + 1 if consecutive_closes_below_lower >= 2 strategy.entry("Compra5", strategy.long, qty=orden5) comprado5 := true consecutive_closes_below_lower := 0 // Sell conditions if close > upper and comprado1 and barstate.isconfirmed strategy.close("Compra1") comprado1 := false if close > upper and comprado2 and barstate.isconfirmed strategy.close("Compra2") comprado2 := false if close > upper and comprado3 and barstate.isconfirmed strategy.close("Compra3") comprado3 := false if close > upper and comprado4 and barstate.isconfirmed strategy.close("Compra4") comprado4 := false if close > upper and comprado5 and barstate.isconfirmed strategy.close("Compra5") comprado5 := false