Grid Dollar-Cost Averaging Strategy (GridDCA) est une stratégie de trading automatisée qui utilise la moyenne de coût en dollars (DCA) pour investir un montant fixe à plusieurs grilles de prix, réduisant le risque d'investissement et augmentant la stabilité de l'accumulation d'actifs.
DCA est une stratégie d'investissement à long terme qui consiste à investir un montant fixe à intervalles réguliers, indépendamment du prix actuel des actifs, afin d'atténuer l'impact de la volatilité du marché sur les investissements. La stratégie GridDCA introduit le concept de grilles de prix basé sur cette base. Selon le nombre de grilles et la distance de grille définie par l'utilisateur, elle génère plusieurs grilles à différents niveaux de prix. Chaque grille a une quantité et un prix correspondants. Lorsque le prix atteint une certaine grille, la stratégie exécute un ordre d'achat en utilisant soit un ordre de marché ou un ordre de limite, en fonction des paramètres.
La Grid Dollar-Cost Averaging Strategy (GridDCA) est une stratégie de trading automatisée basée sur la moyenne du coût du dollar qui réduit efficacement l'impact de la volatilité du marché sur les investissements et augmente la stabilité de l'accumulation d'actifs en investissant un montant fixe à plusieurs grilles de prix. La stratégie offre des avantages tels que le trading automatisé, la réduction des risques, une grande flexibilité et des types d'ordres diversifiés. Cependant, elle fait également face à des défis tels que le risque de tendance du marché, le risque de paramétrage et le risque de liquidité.
/*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)