Stratégie dynamique de pyramide

Auteur:ChaoZhang est là., Date: 2023-12-22 à 14h36
Les étiquettes:

img

Résumé

La stratégie de pyramide dynamique vise à réduire le coût moyen de détention en pyramideant des positions supplémentaires lorsque le prix chute. Elle peut aider à atténuer les pertes et à gagner des bénéfices supplémentaires lorsque le prix rebondit. La stratégie ouvrira des positions supplémentaires avec une certaine quantité et un intervalle lorsque les conditions de pyramide sont déclenchées. Pendant ce temps, le nombre maximum de pyramides est réglé pour limiter le risque.

La logique de la stratégie

La logique de base de cette stratégie comprend:

  1. Position ouverte: position longue ouverte à un prix spécifié si la position actuelle est égale à 0.

  2. Condition de pyramide: pyramide de déclenchement si le temps de pyramide actuel est inférieur à la valeur maximale et que le prix tombe en dessous du dernier prix d'entrée à un pourcentage prédéfini.

  3. Méthode pyramidale: Augmenter la quantité pyramidale à un facteur de mise à l'échelle du précédent et réduire l'intervalle à un facteur de mise à l'échelle.

  4. Condition de prise de profit: Fermer toutes les positions si l'objectif de profit basé sur le prix moyen de détention est déclenché.

Cette stratégie permet de réduire le coût moyen de manière dynamique, en réduisant les pertes de manière efficace et en laissant plus de marge de profit lorsque la tendance s'inverse.

Analyse des avantages

L'avantage majeur de cette stratégie est d'obtenir un plus grand potentiel de profit avec des pertes acceptables en réduisant le coût moyen de détention en utilisant la pyramide.

  1. En ajoutant des ordres d'achat supplémentaires à des prix inférieurs lorsque le retrait se produit, la stratégie dilue les entrées plus élevées précédentes et réduit le coût global.

  2. Si le prix rebondit, le potentiel de profit s'élargit et ouvre la voie à la prise de profit.

  3. Personnalisation flexible pour la logique pyramidale en définissant des paramètres connexes sur l'incrément, la quantité et l'intervalle, etc.

  4. Un risque contrôlable en limitant le temps maximum de pyramide.

Analyse des risques

Bien que la stratégie permette un potentiel de profit plus élevé avec la pyramide, certains risques nécessitent une attention:

  1. Risque de perte - La prémisse est d'assumer certaines pertes de la pyramide.

  2. Risque de plongée dans une falaise - Dans les cas extrêmes comme la plongée dans une falaise, les pertes peuvent dépasser la plage acceptable.

  3. Prise de profit tardive ou manquante - Le rebond des prix peut ne pas toujours déclencher la condition de prise de profit, ce qui est l'inconvénient de la stratégie.

  4. Risque d'ajustement des paramètres - Des paramètres tels que le coefficient de pyramide et le pourcentage de prise de bénéfice peuvent être désactivés en cas de défaillance.

Les mesures suivantes peuvent aider à atténuer les risques:

  1. Échelle d'augmentation plus faible pour contrôler le montant de la perte à entrée unique.

  2. Réduire l'intervalle entre les pyramides pour réduire les coûts plus rapidement.

  3. Réglez le point d'arrêt de perte de manière appropriée plutôt que trop lâche.

Directions d'optimisation

Compte tenu de la nature de l'obtention d'un potentiel de profit plus élevé grâce à la pyramide, les orientations d'optimisation se concentrent principalement sur un meilleur contrôle des risques et l'amélioration de la rentabilité:

  1. Améliorer la logique pyramidale pour rendre les entrées plus intelligentes et adaptables aux conditions du marché.

  2. Optimiser les mécanismes de prise de bénéfices pour une plus grande efficacité, tels que la prise de bénéfices à la traîne, la fermeture partielle, etc., afin de réduire les risques de rebond des prix.

  3. Introduire des algorithmes d'apprentissage automatique pour permettre le réglage automatique des paramètres.

  4. Ajouter un mécanisme de stop loss pour limiter les pertes maximales, comme les ordres de stop loss et de stop profit.

Conclusion

La stratégie pyramidale dynamique réduit le coût moyen de détention par des entrées supplémentaires, permettant un potentiel de profit plus élevé étant donné une tolérance acceptable aux pertes.


/*backtest
start: 2023-12-14 00:00:00
end: 2023-12-18 19:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4

strategy("DCA Bot Emulator", overlay=true, pyramiding=99, default_qty_type=strategy.cash, commission_value = 0.02)

// Date Ranges
from_month = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
from_day   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
from_year  = input(defval = 2021, title = "From Year")
to_month   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
to_day     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
to_year    = input(defval = 9999, title = "To Year")
start  = timestamp(from_year, from_month, from_day, 00, 00)  // backtest start window
finish = timestamp(to_year, to_month, to_day, 23, 59)        // backtest finish window
window = time >= start and time <= finish ? true : false // create function "within window of time"

// Strategy Inputs
price_deviation = input(2, title='Price deviation to open safety orders', maxval=0)/100
take_profit = input(1.5, title='Target Take Profit', minval=0)/100

// base order
base_order  = input(100000, title='base order') 
safe_order  = input(200, title='safe order') 
safe_order_volume_scale  = input(2, title='Safety order volume scale') 
safe_order_step_scale  = input(1, title='Safety order step scale') 

max_safe_order = input(10, title='max safe order') 
var current_so = 1
var initial_order = 0.0

// Calculate our key levels
pnl = (close - strategy.position_avg_price) / strategy.position_avg_price

take_profit_level = strategy.position_avg_price * (1 + take_profit)

// First Position
if(strategy.position_size == 0 and window)
    strategy.entry("Long", strategy.long, qty = base_order/close)
    initial_order := close
    current_so := 1

// Average Down!
if current_so > 0 and close  < initial_order * (1 - price_deviation * current_so * safe_order_step_scale) and current_so <= max_safe_order
    so_name = "SO " + tostring(current_so) 
    strategy.entry(so_name, long=strategy.long , qty = safe_order * safe_order_volume_scale /close)
    current_so := current_so + 1
    
// Take Profit!
strategy.close_all(when=take_profit_level <= close  and strategy.position_size > 0)


Plus de