Stratégie de trading de retour à la moyenne mobile


Date de création: 2023-10-25 10:58:02 Dernière modification: 2023-10-25 10:58:02
Copier: 0 Nombre de clics: 1191
1
Suivre
1617
Abonnés

Stratégie de trading de retour à la moyenne mobile

Aperçu

La stratégie de négociation de la régression linéaire décide des signaux d’achat et de vente en calculant la ligne de régression linéaire et le croisement de la ligne de régression linéaire. La stratégie, combinant l’analyse de la régression linéaire et linéaire, prend en compte à la fois les tendances des cours des actions et les caractéristiques statistiques, permettant de déterminer efficacement les points de retournement des cours des actions et de réaliser des achats et des ventes à bas prix.

Principe de stratégie

La stratégie commence par calculer une ligne de régression linéaire et une ligne de moyenne journalière m pour le cours de l’action. La ligne de régression linéaire reflète la tendance statistique à long terme du cours de l’action et la ligne de moyenne reflète le mouvement à court terme du cours de l’action.

Lorsque la ligne de régression linéaire traverse la moyenne, cela indique que le prix de l’action a augmenté et produit un signal d’achat. Lorsque la ligne de régression linéaire traverse la moyenne, cela indique que le prix de l’action est faible et produit un signal de vente.

Plus précisément, la stratégie détermine les signaux de transaction par les étapes suivantes:

  1. Calculer la ligne de régression linéaire du cours d’une action sur n jours

  2. Calculer une moyenne mobile simple de m jours LRMA de la ligne de régression linéaire

  3. Indice m-jour pour calculer la moyenne mobile des actions

  4. Quand l’ema est en LRMA, un signal d’achat longEntry est généré.

  5. Quand l’ema est en LRMA, il génère un signal de vente longExit

  6. En même temps, en combinant les jugements du marché boursier, les signaux d’achat ne sont envisagés que lorsque le marché boursier est en hausse.

  7. Exécution d’une transaction d’achat ou de vente selon le signal

Le croisement de la ligne de moyenne et de la ligne de régression permet de déterminer le moment d’achat et de vente, de filtrer efficacement les fausses ruptures et de capturer les points de retournement, ce qui permet d’acheter et de vendre à bas prix.

Avantages stratégiques

  • Les lignes de régression reflètent les tendances à long terme, les lignes de moyenne reflètent les mouvements à court terme, combinées à deux indicateurs permettant de déterminer avec précision les points d’achat et de vente
  • Le calcul de la ligne de régression est simple et facile à réaliser
  • Les traders peuvent utiliser leur jugement sur le marché boursier pour filtrer les signaux inappropriés.
  • Paramètres personnalisables pour modifier les stratégies d’achat et de vente
  • Le prix d’achat et de vente a été réduit, mais les bénéfices de Space ont été plus importants.

Risque stratégique

  • Les courbes de récession et de récession se croisent fréquemment lorsque les cours des actions fluctuent fortement, ce qui peut générer de faux signaux.
  • Le moment de la vente peut aussi être mal jugé si le jugement du marché n’est pas exact.
  • Une mauvaise configuration des paramètres peut également affecter l’efficacité de la stratégie
  • Les transactions sont fréquentes et coûteuses

Les paramètres à prendre en compte sont les suivants: ajustement des paramètres, augmentation appropriée des paramètres de la moyenne et de la périodicité de la ligne de régression, réduction de la fréquence des transactions.

Optimisation de la stratégie

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

  1. Optimisation de l’indicateur de moyenne: essayez différents types de moyenne, comme les moyennes mobiles pondérées, pour trouver la meilleure moyenne pour l’action.

  2. Optimisation de la ligne de régression: ajuster le cycle de calcul de la ligne de régression pour trouver le paramètre de cycle qui reflète le mieux la tendance à long terme de l’action.

  3. Optimisation du jugement de marché: tester différents indicateurs de jugement de marché pour trouver le signal de marché le mieux adapté à la stratégie.

  4. Optimisation des paramètres: recherche d’une configuration optimale des paramètres en effectuant des tests répétés sur différentes combinaisons de paramètres.

  5. Optimisation de la stratégie de stop loss: tester différentes méthodes de stop loss et définir la meilleure logique de stop loss pour contrôler le risque.

  6. Optimisation des coûts de transaction: Adaptez la fréquence des transactions en fonction des différents modèles de frais de transaction afin de réduire les coûts de transaction.

L’optimisation des points ci-dessus peut améliorer encore la stabilité et la rentabilité de la stratégie.

Résumer

Cette stratégie de négociation de régression linéaire intègre l’analyse linéaire et l’analyse linéaire de la régression. Elle permet d’identifier efficacement les points de retournement des cours d’actions et de guider les cours bas. La stratégie est simple et fiable et convient à la négociation d’actions optionnelles à moyen et long terme. La stabilité de la stratégie peut être encore améliorée par l’optimisation des paramètres et le contrôle du risque.

Code source de la stratégie
/*backtest
start: 2022-10-18 00:00:00
end: 2023-10-24 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/
// © lazy_capitalist

//@version=5
strategy('Linear Regression MA', overlay=true, initial_capital=10000)
datesGroup = "Date Info"
startMonth = input.int(defval = 1,    title = "Start Month",  minval = 1, maxval = 12,  group=datesGroup)
startDay   = input.int(defval = 1,    title = "Start Day",    minval = 1, maxval = 31,  group=datesGroup)
startYear  = input.int(defval = 2022, title = "Start Year",   minval = 1970,            group=datesGroup)

averagesGroup = "Averages"
lrLineInput     = input.int(title="Linear Regression Line",   defval=55, minval = 1, group=averagesGroup)
lrMAInput       = input.int(title="Linear Regression MA",     defval=55, minval = 1, group=averagesGroup)
emaInput        = input.int(title="EMA Length",               defval=55, minval = 1, group=averagesGroup)


tradesGroup = "Execute Trades"
executeLongInput    = input.bool(title="Execute Long Trades",       defval=true)
executeShortInput   = input.bool(title="Execute Short Trades",      defval=true)
executeStopLoss     = input.bool(title="Execute Stop Loss",         defval=true)

fourHrSMAExpr       = ta.sma(close, 200)
fourHrMA            = request.security(symbol=syminfo.tickerid, timeframe="240", expression=fourHrSMAExpr)

bullish             = close > fourHrMA ? true : false


maxProfitInput              = input.float(  title="Max Profit (%)",         defval=10.0,    minval=0.0)   * 0.01
stopLossPercentageInput     = input.float(  title="Stop Loss (%)",          defval=1.75,    minval=0.0)   * 0.01

start       = timestamp(startYear, startMonth, startDay, 00, 00)            // backtest start  window
window()    => time >= start ? true : false                              // create function "within window of time"
showDate    = input(defval = true, title = "Show Date Range")

lrLine = ta.linreg(close, lrLineInput, 0)
lrMA   = ta.sma(lrLine, lrMAInput)
ema     = ta.ema(close, emaInput)

longEntry   = ema   < lrMA
longExit    = lrMA  < ema

shortEntry  = lrMA  < ema
shortExit   = ema   < lrMA


maxProfitLong   = strategy.opentrades.entry_price(0) * (1 + maxProfitInput)
maxProfitShort  = strategy.opentrades.entry_price(0) * (1 - maxProfitInput)

stopLossPriceShort  = strategy.position_avg_price * (1 + stopLossPercentageInput)
stopLossPriceLong   = strategy.position_avg_price * (1 - stopLossPercentageInput)

if(executeLongInput and bullish)
    strategy.entry( id="long_entry", direction=strategy.long,   when=longEntry and window(),    qty=10,  comment="long_entry")
    strategy.close( id="long_entry", when=longExit,     comment="long_exit")
    // strategy.close( id="long_entry", when=maxProfitLong <= close, comment="long_exit_mp")
    
if(executeShortInput and not bullish)
    strategy.entry( id="short_entry", direction=strategy.short,   when=shortEntry and window(),    qty=10,  comment="short_entry")
    strategy.close( id="short_entry", when=shortExit,     comment="short_exit")
    // strategy.close( id="short_entry", when=maxProfitShort <= close, comment="short_exit_mp")

if(strategy.position_size > 0 and executeStopLoss)
    strategy.exit(  id="long_entry",        stop=stopLossPriceLong,             comment="exit_long_SL")
    strategy.exit(  id="short_entry",       stop=stopLossPriceShort,            comment="exit_short_SL")
    
// plot(series=lrLine,     color=color.green)
plot(series=lrMA,       color=color.red)
plot(series=ema,        color=color.blue)