Une stratégie quantitative combinant retour à la moyenne et suivi de tendance


Date de création: 2023-09-14 20:45:20 Dernière modification: 2023-09-14 20:45:20
Copier: 0 Nombre de clics: 1109
1
Suivre
1617
Abonnés

Cet article détaille une stratégie de trading quantitatif qui utilise à la fois la régression de la moyenne et la technologie de suivi de tendance. Cette stratégie vise à effectuer des transactions inverses dans des conditions de tendance et à suivre les tendances pour effectuer des transactions asymétriques.

Premièrement, les principes stratégiques

La stratégie génère principalement des signaux de trading via des moyennes mobiles simples et des indicateurs RSI:

  1. Le prix est considéré comme en baisse lorsque celui-ci est en dessous de la moyenne mobile à 200 cycles;

  2. le retour de la moyenne en revers lorsque le RSI est inférieur à 20;

  3. Il est jugé en hausse lorsque le prix est supérieur à la moyenne mobile à 200 cycles;

  4. Les transactions suivent une tendance à la hausse lorsque les prix franchissent la moyenne mobile.

  5. Les conditions de placement sont le RSI supérieur à 80 ou le prix inférieur à la moyenne mobile d’une certaine marge.

  6. Les positions de négociation peuvent être réglées séparément pour la régression de la valeur moyenne et le suivi de la tendance.

Cette stratégie utilise une technique de régression de la moyenne et de suivi des tendances, pour effectuer les opérations appropriées à différents stades.

Deux, les avantages stratégiques

Les principaux avantages de cette stratégie sont les suivants:

  1. La combinaison de deux techniques différentes peut améliorer l’adaptabilité des stratégies.

  2. Les opportunités de trading se trouvent dans les marchés à la fois tendanciels et volatiles.

  3. Le risque peut être contrôlé selon différents modes en ajustant la position.

  4. La configuration des paramètres est simple et facile à mettre en œuvre.

Troisièmement, les risques potentiels

Mais cette stratégie comporte aussi les risques suivants:

  1. Les indicateurs tels que les moyennes mobiles et le RSI sont vulnérables à de fausses ruptures.

  2. Le changement des deux modes de transaction pourrait être retardé.

  3. Les retraits à long terme nécessitent des paiements.

Quatrième partie, résumé

Cet article présente en détail une stratégie de trading quantitatif qui utilise la régression des valeurs moyennes et la technologie de suivi des tendances. Cette stratégie permet de négocier à différents stades du marché, ce qui améliore l’adaptabilité. Mais elle nécessite également de prévenir le risque de défaillance des indicateurs et de retard dans la commutation des modèles.

Code source de la stratégie
/*backtest
start: 2022-09-07 00:00:00
end: 2023-04-05 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © I11L

//@version=5
strategy("Mean Reversion and Trendfollowing", overlay=true, pyramiding=1, default_qty_value=100000, initial_capital=100000, default_qty_type=strategy.cash, process_orders_on_close=false, calc_on_every_tick=false)

// Input for the starting date
start_date = input(timestamp("1 Feb 2000 12:00"), title="Starting Date")
enableMeanReversion = input.bool(true)
enableTrendfollowing = input.bool(true)
trendPositionFactor = input.float(1)
meanReversionPositionFactor = input.float(0.5)

// Convert the input string to a timestamp
start_ts = timestamp(year(start_date), month(start_date), dayofmonth(start_date), 0, 0)

// Check if the current bar's time is greater than or equal to the start timestamp
start_condition = time >= start_ts

var tradeOrigin = ""

sma200 = ta.sma(close,200)
rsi2 = ta.rsi(close,2)

isMeanReversionMode = close < sma200 or not(enableTrendfollowing)
isTrendfollowingMode = close > sma200 or not(enableMeanReversion)

isRsiBuy = rsi2 < 20 and enableMeanReversion
isRsiClose = rsi2 > 80 and enableMeanReversion

isSmaBuy = close > sma200 and enableTrendfollowing
isSmaClose = close < sma200 * 0.95 and enableTrendfollowing

isBuy = (isMeanReversionMode and isRsiBuy) or (isTrendfollowingMode and isSmaBuy)

positionSizeFactor = isSmaBuy ? trendPositionFactor : meanReversionPositionFactor

// Only execute the strategy after the starting date
if (start_condition)
    if (isBuy and strategy.opentrades == 0)
        tradeOrigin := isSmaBuy ? "SMA" : "RSI"
        strategy.entry("My Long Entry Id", strategy.long, qty=(strategy.equity / close) * positionSizeFactor, comment=str.tostring(positionSizeFactor))
    isClose = tradeOrigin == "SMA" ? isSmaClose : isRsiClose
    if (isClose)
        strategy.exit("Exit", limit = close)

plot(sma200)
plot(sma200 * 0.95, color=color.orange)