Stratégie DCA avec prise de profit en retard

Auteur:ChaoZhang est là., Date: le 23 février 2024 à 14h01
Les étiquettes:

img

Résumé

Cette stratégie combine la moyenne des coûts en dollars (DCA) avec la fonctionnalité de prise de profit à la traîne disponible sur les plateformes de change. Elle fixe un écart de prix de 1% pour les achats et vise un profit de 0,5% sur chaque vente. La raison pour laquelle les petits profits sont ciblés est d'assurer des opérations fluides pour le robot de trading, en évitant de rester bloqué pendant les périodes de marché lents. Sur la base des tests antérieurs, ce bot s'est avéré suffisamment adaptable pour résister aux fluctuations et à la manipulation du marché.

Principaux

La stratégie définit d'abord des paramètres configurables tels que le pourcentage d'arrêt de suivi, le pourcentage maximal d'ordres DCA, le pourcentage d'écart de prix, etc. Elle suit ensuite des variables telles que le dernier prix d'achat, le nombre d'achats, le prix d'achat initial, le prix d'arrêt de suivi, etc. Sur la logique d'achat, si le prix actuel est inférieur au dernier prix d'achat * (1 - pourcentage d'écart de prix) et que le nombre d'achats n'a pas atteint le pourcentage maximal d'ordres DCA, elle émet un signal d'achat et enregistre le prix d'achat. Sur la logique de vente, si le prix actuel est supérieur au dernier prix d'achat * (1 + pourcentage de prise de profit), elle définit un prix d'arrêt de suivi. Si le prix continue d'augmenter au-dessus de ce prix d'arrêt de suivi, le prix d'arrêt de suivi est mis à jour au prix actuel * (1

Les avantages

  1. Combine le DCA et le stop loss pour assurer la moyenne des coûts tout en bloquant des bénéfices partiels afin d'éviter les retraits.

  2. Un mécanisme flexible d'arrêt de retard avec prise de profit et pourcentage de retard réglable pour minimiser les risques.

  3. Les résultats testés sur la base des résultats obtenus sur les achats et les détentions sont supérieurs, avec des rendements annualisés stables adaptés aux investissements à long terme.

  4. Simple à mettre en œuvre avec des paramètres réglables pour une application facile sur les principales plateformes d'échange.

Les risques

  1. Le nombre limité d'achats de DCA signifie que les pertes peuvent s'aggraver si les tendances du marché sont à la baisse pendant de longues périodes.

  2. Les paramètres de stop-loss de retard insuffisants peuvent entraîner une prise de profit prématurée ou des pertes excessives.

  3. Les coûts de négociation peuvent entraîner des profits.

  4. Nécessite un capital suffisant pour soutenir les achats fréquents de DCA.

Améliorations

  1. Mettre en œuvre des arrêts de retard adaptatifs, réduisant le pourcentage de retard à mesure que certains jalons de profit sont atteints.

  2. Incorporer des moyennes mobiles, augmenter les montants d'achat autour des principales zones de soutien.

  3. Ajouter un mécanisme de rééquilibrage pour ajuster les montants de DCA en fonction des actifs totaux.

  4. Optimiser les paramètres et tester la rentabilité sur différentes périodes de détention.

Conclusion

Cette stratégie combine DCA et trailing stops pour des rendements de trading algorithmiques stables sur de longues périodes. Les résultats testés sont solides et adaptés aux investisseurs axés sur une croissance stable. Le code simple et propre le rend facile à comprendre et à mettre en œuvre.


/*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


Plus de