
Cette stratégie combine la méthode Dollar Cost Averaging (DCA) avec la fonction Trailing Take Profit sur la plate-forme d’échange. Elle définit un écart de prix de 1% pour les achats et un profit de 0,5% pour chaque vente. Ce petit profit est justifié pour assurer le bon fonctionnement du robot de trading et éviter le risque d’être pris au piège pendant les périodes de ralentissement du marché.
La stratégie définit d’abord des paramètres configurables tels que le pourcentage de stop loss, le nombre maximal d’ordres DCA, le pourcentage d’écart de prix. Ensuite, elle suit des variables telles que le prix d’achat précédent, le nombre d’achats, le prix d’achat initial et le prix de stop loss. Sur la logique d’achat, un signal d’achat est émis et le prix d’achat est enregistré si le prix actuel est inférieur au prix d’achat précédent.
La combinaison de l’investissement fixe DCA et de l’arrêt au point de glissement assure à la fois l’effet moyen des coûts d’achat de quotas périodiques et le verrouillage d’une partie des bénéfices pour éviter le retrait.
Le mécanisme de stop loss est flexible et permet d’ajuster la marge d’arrêt et le ratio de stop loss en fonction de la situation du marché, ce qui réduit le risque.
Le rendement annuel est stable et convient aux investissements à long terme.
La simplicité d’implémentation, la flexibilité des paramètres et la facilité de mise en œuvre sur les plateformes d’échanges traditionnelles.
Le nombre de DCA achetés est limité, et les pertes pourraient s’étendre si le marché baisse sur une longue période.
Une mauvaise configuration du point de rupture peut entraîner un blocage fréquent des bénéfices ou une augmentation des pertes.
Le coût de la transaction a une certaine influence sur les bénéfices. Le paramètre de stop-loss à point de glissement élevé augmente le nombre de transactions.
Il faut suffisamment de fonds pour soutenir les achats fréquents de DCA. Une insuffisance de fonds initiaux peut entraîner un nombre insuffisant d’achats.
Il est possible de définir un stop-loss flottant qui diminue progressivement lorsque le profit atteint un certain pourcentage.
En combinaison avec l’indicateur de la ligne de parité, augmenter les actions achetées près des niveaux de support critique.
Adhérer à un mécanisme de rééquilibrage pour ajuster le montant de chaque achat de DCA en fonction de l’actif total.
Optimiser les paramètres et tester les rendements sur différents périodes de détention.
La stratégie intègre les méthodes de fixation de l’investissement DCA et de stop-loss à points de glissement, permettant des transactions quantifiées avec des gains stables à long terme. La rétro-évaluation fonctionne bien et convient aux investisseurs qui recherchent une croissance soutenue. Le code est simple et facile à comprendre.
/*backtest
start: 2023-02-16 00:00:00
end: 2024-02-22 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Stavolt
//@version=5
strategy("DCA Strategy with Trailing Take Profit", overlay=true, initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// Correctly using input to define user-configurable parameters
takeProfitPercent = input.float(0.6, title="Take Profit (%)", minval=0.1, maxval=5)
trailingPercent = input.float(0.1, title="Trailing Stop (%)", minval=0.05, maxval=1)
maxDCAOrders = input.int(10, title="Max DCA Orders", minval=1, maxval=20)
priceDeviationPercent = input.float(1.0, title="Price Deviation (%)", minval=0.5, maxval=5)
var float lastBuyPrice = na
var int buyCount = 0
var float initialBuyPrice = na
var float trailingStopPrice = na
// Strategy logic here...
// Note: The detailed logic for buying and selling based on the DCA strategy
// needs to be tailored to your specific requirements and tested for correctness.
if (buyCount < maxDCAOrders)
if (na(lastBuyPrice) or close < lastBuyPrice * (1 - priceDeviationPercent / 100))
strategy.entry("Buy", strategy.long)
lastBuyPrice := close
buyCount += 1
if (na(initialBuyPrice))
initialBuyPrice := close
if (not na(lastBuyPrice) and close > lastBuyPrice * (1 + takeProfitPercent / 100))
if (na(trailingStopPrice) or close > trailingStopPrice)
trailingStopPrice := close * (1 - trailingPercent / 100)
if (close < trailingStopPrice)
strategy.close("Buy")
lastBuyPrice := na
trailingStopPrice := na
buyCount := 0
initialBuyPrice := na