Stratégie de suivi dynamique des prix moyens

Auteur:ChaoZhang est là., Date: 2024-01-29 15h28:53
Les étiquettes:

img

Résumé

L'idée principale de cette stratégie est que lorsque le prix des actions tombe à un certain pourcentage, les positions peuvent être progressivement augmentées pour réduire le coût moyen de la position de détention.

Principe de stratégie

Lorsque le prix de l'action franchit pour la première fois la moyenne mobile simple de 20 jours, passez à long pour ouvrir une position. Si le stock chute par le pourcentage de perte cible fixé, par exemple 10%, ajoutez à la position à un pourcentage spécifié, par exemple 50% de la position actuelle. Cela réduit le coût moyen de la position de détention. Lorsque le prix de l'action atteint le point de prise de profit fixé, par exemple 10% au-dessus du coût de détention moyen, fermez toutes les positions pour tirer profit.

Plus précisément, la fonction de stratégie définit des paramètres tels que permettre jusqu'à 4 achats supplémentaires, la taille de la position étant définie en pourcentage du capital et la taille de la position initiale à 10% du capital. Elle obtient la ligne moyenne mobile simple de 20 jours. Lorsque le prix de clôture dépasse cette moyenne et qu'il n'y a pas de position actuelle, elle ouvre une position longue. Elle calcule ensuite le pourcentage de profit/perte flottant de la position. Si elle atteint le pourcentage de perte cible, elle continue à pyramider au pourcentage d'achat supplémentaire cible jusqu'à ce que l'action rebondisse pour atteindre l'objectif de profit.

Analyse des avantages

Le plus grand avantage de ce type de stratégie est que lorsque les conditions du marché sont défavorables, le coût moyen de la position de détention peut être réduit en pyramidant les achats supplémentaires. Cela permet d'obtenir de plus grands profits lorsque les conditions du marché s'améliorent, obtenant l'effet "perdre moins, gagner plus".

Dans le même temps, la stratégie permet plusieurs achats supplémentaires, en utilisant au maximum les différences de temps dans les renversements du marché pour ajuster progressivement les positions.

Analyse des risques

Bien entendu, si les prix continuent à baisser, cette stratégie comporte également le risque de pertes importantes. Surtout dans les marchés baissiers, l'ampleur des baisses de prix peut dépasser de loin notre imagination. Par conséquent, la proportion et le nombre d'achats supplémentaires doivent être raisonnablement réglés pour contrôler le risque dans une plage acceptable.

Dans le même temps, nous devons réaliser que si tous les investisseurs adoptent une telle stratégie, lorsque beaucoup d'investisseurs atteignent leur objectif de pourcentage de perte, il pourrait y avoir un scénario d'ajout collectif aux positions. Cela augmenterait les prix et formerait un rebond à court terme irrationnel. Si nous ne parvenons pas à évaluer correctement la situation, nous pourrions juger à tort la tendance du marché et continuer à augmenter notre position. Le résultat serait des pertes encore plus importantes lorsque les prix chuteront à nouveau.

Directions d'optimisation

Il existe plusieurs façons d'optimiser cette stratégie:

  1. Ajustez dynamiquement le pourcentage d'achat supplémentaire, qui pourrait être ajusté en temps réel en fonction des conditions du marché.

  2. Incorporer des indicateurs quantitatifs. Par exemple, surveiller les augmentations de volume pour confirmer les signaux d'inversion et éviter les faux signaux.

  3. Après des achats supplémentaires, utilisez un système de stop loss progressif pour vous assurer que les pertes sont maintenues dans une certaine plage.

Résumé

La stratégie de suivi des prix moyens dynamiques utilise l'effet des prix moyens en ajustant les positions grâce à des achats supplémentaires. Dans le cadre de la prémisse d'avoir un soutien suffisant en capital, elle peut capturer efficacement des rendements supérieurs à la moyenne lorsque les prix s'inversent. La clé est de juger correctement du moment et des proportions pour maintenir les risques dans des plages acceptables. Si elle est appliquée de manière appropriée, cela peut être une méthode très efficace dans le trading quantitatif.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3

// ########################################################################## // 
//
// This scipt is intended to demonstrate how pyramiding can be used to average
// down a position.
//
// We will buy when a stock closes above its 20 day MA and Average down if
// the trade does not go in our favor. We will hold until a profit is made. 
// (which could mean we hold forever)
//
// ########################################################################## //

strategy("Average Down", overlay=true )

// 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 = 2010, 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 = true
// Strategy Inputs
target_perc = input(-10, title='Target Loss to Average Down (%)', maxval=0)/100
take_profit = input(10, title='Target Take Profit', minval=0)/100
target_qty  = input(50, title='% Of Current Holdings to Buy', minval=0)/100 
sma_period  = input(20, title='SMA Period') 

// Get our SMA, this will be used for our first entry 
ma = sma(close,sma_period)

// 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
first_long = crossover(close, ma) and strategy.position_size == 0 and window
if (first_long)
    strategy.entry("Long", strategy.long)

// Average Down!
if (pnl <= target_perc)
    qty = floor(strategy.position_size * target_qty)
    strategy.entry("Long", strategy.long, qty=qty)

// Take Profit!
strategy.exit("Take Profit", "Long", limit=take_profit_level)

// Plotting
plot(ma, color=blue, linewidth=2, title='SMA')
plot(strategy.position_avg_price, style=linebr, color=red, title='Average Price')

Plus de