Réversion moyenne avec stratégie d'entrée progressive

Auteur:ChaoZhang est là., Date: 2024-01-29 15:47:24 Je suis désolé
Les étiquettes:

img

Résumé

La stratégie de réversion moyenne avec entrée incrémentielle conçue par HedgerLabs est un script de stratégie de trading avancé axé sur la technique de réversion moyenne sur les marchés financiers.

La logique de la stratégie

Le centre de cette stratégie est la moyenne mobile simple (SMA) autour de laquelle toutes les entrées et sorties tournent. Les traders peuvent personnaliser la longueur de la MA pour s'adapter à différents styles de trading et délais.

Cette stratégie est unique en son genre: le système d'entrée incrémentielle, qui démarre une première position lorsque le prix s'écarte de la MA d'un pourcentage spécifié. Les entrées ultérieures sont ensuite effectuées par étapes incrémentielles, telles que définies par le trader, à mesure que le prix s'éloigne de la MA.

La stratégie gère intelligemment les positions en entrant en long lorsque le prix est inférieur à MA et en court lorsqu'il est supérieur pour s'adapter aux conditions changeantes du marché.

Les sorties sont déterminées lorsque le prix atteint le MA, dans le but de fermer les positions à des points de renversement potentiels pour des résultats optimisés.

Avec calc_on_every_tick activé, la stratégie évalue continuellement le marché pour assurer une réaction rapide.

Analyse des avantages

La stratégie d'inversion moyenne avec entrée progressive présente les principaux avantages suivants:

  1. Très systématique pour réduire les interférences émotionnelles
  2. L'entrée progressive permet de réaliser des bénéfices plus élevés en période de forte volatilité
  3. Paramètres personnalisables tels que la période de mise en marché adaptée à différents instruments
  4. Gestion intelligente de la position qui adapte automatiquement long/short
  5. Retour d'optimisation de la cible de sortie vers la clôture des positions

Analyse des risques

Les risques à prendre en considération comprennent:

  1. Les effets négatifs de la dépendance à l'égard des indicateurs techniques
  2. L'absence de tendance entraînant des prélèvements prolongés
  3. Des paramètres de MA médiocres entraînent des arrêts fréquents
  4. Taille de position plus importante à partir d'une entrée progressive

Les sorties peuvent être optimisées, des filtres de tendance ajoutés, la dimensionnement des positions réduite pour atténuer les risques ci-dessus.

Des possibilités d'amélioration

La stratégie peut être renforcée par:

  1. Ajout de filtres de tendance pour éviter les transactions défavorables
  2. Optimisation des augmentations d'entrée avec volatilité
  3. Incorporation des arrêts de trailing pour sécuriser les bénéfices
  4. Expérimentation avec différentes moyennes mobiles
  5. Utilisation de filtres pour réduire les faux signaux

Conclusion

La stratégie de réversion moyenne avec entrée incrémentielle se concentre sur les techniques de réversion moyenne en utilisant une approche systématisée de dimensionnement de position incrémentielle.


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


Plus de