Stratégie d'ouverture progressive de retour à la moyenne


Date de création: 2024-01-29 15:47:24 Dernière modification: 2024-01-29 15:47:24
Copier: 0 Nombre de clics: 638
1
Suivre
1617
Abonnés

Stratégie d’ouverture progressive de retour à la moyenne

Aperçu

La stratégie de rétrogradation de la valeur moyenne est un script de stratégie de trading quantitatif avancé conçu par HedgerLabs et axé sur la technique de rétrogradation de la valeur moyenne des marchés financiers. La stratégie vise les traders qui préfèrent une approche systématique et mettent l’accent sur la méthode de rétrogradation basée sur les moyennes mobiles relatives des prix.

Principe de stratégie

Le cœur de la stratégie est la moyenne mobile simple (SMA). Toutes les transactions d’entrée et de sortie sont effectuées autour de la moyenne mobile. Les traders peuvent personnaliser la longueur de la MA pour l’adapter à différents styles de négociation et à différentes périodes.

La particularité de cette stratégie réside dans son mécanisme d’ouverture progressive. La stratégie lance la première position lorsque le prix s’écarte de la moyenne mobile de plus d’un certain pourcentage. Ensuite, la stratégie augmente progressivement les positions au fur et à mesure que le prix continue à s’écarter de la moyenne mobile.

La stratégie permet également de gérer intelligemment les positions. Il est possible de faire plus lorsque le prix est en dessous de la moyenne mobile et plus lorsque le prix est en dessous de la moyenne mobile pour s’adapter aux différentes conditions du marché. Le point de placement est défini lorsque le prix touche la moyenne mobile, dans le but de saisir les points de retournement potentiels pour réaliser une position de fermeture optimale.

Par activationcalc_on_every_tickLa stratégie permet d’évaluer en permanence les conditions du marché et de réagir en temps opportun.

Analyse des avantages

Les avantages d’une stratégie de rétrogradation progressive de la valeur moyenne sont les suivants:

  1. Un degré élevé de systématisation qui réduit le risque d’erreurs subjectives
  2. L’ouverture progressive d’une position peut générer des rendements plus élevés en cas de fortes fluctuations du marché.
  3. Des paramètres personnalisables tels que la période de MA peuvent être utilisés pour différentes variétés
  4. Le mécanisme de gestion des positions est intelligent et permet d’ajuster automatiquement les positions libres.
  5. Le choix d’un point de départ raisonnable est propice à la saisie d’un renversement et à la fermeture d’une position

Analyse des risques

Cette stratégie comporte aussi des risques:

  1. Le risque de fausses balises en s’appuyant sur des indicateurs techniques
  2. L’incapacité à juger les tendances du marché et à être pris au piège
  3. Une mauvaise configuration des paramètres MA peut entraîner des arrêts fréquents
  4. Les investissements progressifs augmentent le risque de position

Ces risques peuvent être atténués par une optimisation appropriée des exits, un meilleur jugement des tendances ou une réduction appropriée de la marge de prise de position.

Direction d’optimisation

Cette stratégie peut être optimisée dans les domaines suivants:

  1. Augmentation des conditions d’annulation de tendance pour éviter une position défavorable
  2. Optimisation de la marge d’ouverture en combinaison avec les indicateurs de volatilité
  3. Optimisation des arrêts mobiles afin de bloquer les bénéfices
  4. Essayez différents types de moyennes mobiles
  5. Ajout de filtres pour réduire les signaux invalides

Résumer

La stratégie de rétrogradation progressive des valeurs moyennes se concentre sur la technique de négociation de rétrogradation des valeurs moyennes. Elle utilise une gestion systématique des positions de rétrogradation progressive des valeurs moyennes, avec des paramètres personnalisables pour différentes variétés de transactions.

Code source de la stratégie
/*backtest
start: 2023-12-29 00:00:00
end: 2024-01-28 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Mean Reversion with Incremental Entry by HedgerLabs", overlay=true, calc_on_every_tick=true)

// Input for adjustable settings
maLength = input.int(30, title="MA Length", minval=1)
initialPercent = input.float(5, title="Initial Percent for First Order", minval=0.01, step=0.01)
percentStep = input.float(1, title="Percent Step for Additional Orders", minval=0.01, step=0.01)

// Calculating Moving Average
ma = ta.sma(close, maLength)

// Plotting the Moving Average
plot(ma, "Moving Average", color=color.blue)

var float lastBuyPrice = na
var float lastSellPrice = na

// Function to calculate absolute price percentage difference
pricePercentDiff(price1, price2) =>
    diff = math.abs(price1 - price2) / price2 * 100
    diff

// Initial Entry Condition Check Function
initialEntryCondition(price, ma, initialPercent) =>
    pricePercentDiff(price, ma) >= initialPercent

// Enhanced Entry Logic for Buy and Sell
if (low < ma)
    if (na(lastBuyPrice))
        if (initialEntryCondition(low, ma, initialPercent))
            strategy.entry("Buy", strategy.long)
            lastBuyPrice := low
    else
        if (low < lastBuyPrice and pricePercentDiff(low, lastBuyPrice) >= percentStep)
            strategy.entry("Buy", strategy.long)
            lastBuyPrice := low

if (high > ma)
    if (na(lastSellPrice))
        if (initialEntryCondition(high, ma, initialPercent))
            strategy.entry("Sell", strategy.short)
            lastSellPrice := high
    else
        if (high > lastSellPrice and pricePercentDiff(high, lastSellPrice) >= percentStep)
            strategy.entry("Sell", strategy.short)
            lastSellPrice := high

// Exit Conditions - Close position if price touches the MA
if (close >= ma and strategy.position_size > 0)
    strategy.close("Buy")
    lastBuyPrice := na

if (close <= ma and strategy.position_size < 0)
    strategy.close("Sell")
    lastSellPrice := na

// Reset last order price when position is closed
if (strategy.position_size == 0)
    lastBuyPrice := na
    lastSellPrice := na