
Стратегия называется “DCA Booster (1 minute) “, это высокочастотная торговая стратегия, которая работает в 1-минутный временной рамке. Стратегия объединяет два метода: бурин-пояса и DCA (Dollar-Cost Averaging, средняя стоимость доллара), целью которого является использование рыночных колебаний для многократных покупок и продаж, чтобы попытаться получить прибыль. Основная идея стратегии заключается в следующем: когда цена снижается ниже бурин-пояса в течение двух последовательных циклов, начинайте строить опционы в соответствии с DCA; когда цена проходит через бурин-пояса, выровняйте все позиции.
“DCA Booster (1 minute) ” - это высокочастотная торговая стратегия, объединяющая бурин-пояса и DCA, которая используется для поимки рыночных колебаний, чтобы попытаться получить прибыль, создавая позиции в серии, когда цены ниже бурин-пояса, и закрывая позиции, когда цены находятся на бурин-поясе, чтобы поймать рыночные колебания. Эта стратегия позволяет пирамидально наращивать позиции, но в то же время подвергается риску сильного колебания рынка и чрезмерного воздействия.
/*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