
GridDCA é uma estratégia de negociação automatizada que utiliza a média de custo do dólar (DCA) para fazer investimentos em várias grades de preços, reduzindo o risco de investimento e aumentando a estabilidade do acúmulo de ativos. A estratégia é baseada no desenvolvimento do Pine Script na plataforma TradingView, que permite a configuração flexível de parâmetros como número de grades, distância da grelha, parâmetros de stop loss e alvo de lucro, além de suportar o preço de mercado e o preço de limite.
A DCA é uma estratégia de investimento de longo prazo, que reduz o impacto da volatilidade do mercado sobre o investimento, investindo um montante fixo em intervalos de tempo fixos, sem considerar o preço atual do ativo. Com base nisso, a estratégia de GridDCA introduziu o conceito de grelha de preços, gerando várias grelhas com preços diferentes, dependendo do número e distância de grelhas definidas pelo usuário. Cada grelha tem o número e o preço de compra correspondentes.
GridDCA é uma estratégia de negociação automática baseada na lei da média do custo do dólar, que reduz efetivamente o impacto da volatilidade do mercado sobre o investimento e aumenta a estabilidade do acúmulo de ativos, investindo em várias grades de preços. A estratégia tem vantagens como negociação automática, redução de risco, flexibilidade e forte diversificação de pedidos, mas também enfrenta desafios como risco de tendência de mercado, risco de configuração de parâmetros e risco de liquidez.
/*backtest
start: 2023-03-22 00:00:00
end: 2023-08-22 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("DCA Trading Strategy", overlay=true)
// Define input options
numGrids = input.int(5, title="Number of Grids")
gridDistance = input.float(0.5, title="Grid Distance")
stopLossPct = input.float(1, title="Stop Loss Percentage")
takeProfitPct = input.float(1, title="Take Profit Percentage")
useMarketOrder = input.bool(false, title="Use Market Order")
// Define DCA function
dca(quantity, price, stopLoss, takeProfit) =>
if useMarketOrder
strategy.entry("DCA Buy", strategy.short, qty=quantity)
else
strategy.entry("DCA Buy", strategy.short, qty=quantity, limit=price)
strategy.exit("Stop Loss/ Take Profit", "DCA Buy", stop=stopLoss, limit=takeProfit)
// Calculate grid levels
gridLevels = math.floor(strategy.position_size / (numGrids + 1) + 0.5)
// Calculate buy quantity
buyQuantity = strategy.position_size / numGrids
// Loop through each grid level
for i = 1 to numGrids
priceLevel = strategy.position_avg_price * (1 - gridDistance * i)
stopLossPrice = priceLevel * (1 - stopLossPct / 100)
takeProfitPrice = priceLevel * (1 + takeProfitPct / 100)
dca(buyQuantity, priceLevel, stopLossPrice, takeProfitPrice)
// Plot grid levels
plotshape(series=gridLevels, title="Grid Levels", location=location.abovebar, color=color.blue, style=shape.triangleup, size=size.small)