Stratégie de trading dynamique de retrait de la moyenne mobile


Date de création: 2024-02-27 14:38:45 Dernière modification: 2024-02-27 14:38:45
Copier: 0 Nombre de clics: 584
1
Suivre
1617
Abonnés

Stratégie de trading dynamique de retrait de la moyenne mobile

Aperçu

Cette stratégie utilise un système de double équilibre pour rechercher des opportunités de rupture potentielles dans un stock ou une monnaie numérique spécifique. Son principe de base est d’acheter des actions ou des monnaies numériques lorsque le cours moyen à court terme rebondit en dessous du cours moyen à long terme.

Principe de stratégie

La stratégie utilise une moyenne mobile simple (SMA) de deux périodes différentes comme signal de négociation. La première période de SMA est plus longue, représentant la direction de la tendance globale. La deuxième période de SMA est plus courte, utilisée pour capturer les fluctuations de prix à court terme.

Lorsque le SMA court court est porté par le SMA long en dessous, cela signifie que le prix est dans une tendance à la hausse dans l’ensemble, et donc la stratégie ouvre une position sur plusieurs têtes. Lorsque le prix baisse et reteste le SMA long, cela indique la fin du pullback court, et la stratégie prend en compte le stop-loss ou le profit pour fermer la position.

En outre, la stratégie impose des conditions de survente et d’achat pour éviter de négocier dans des situations extrêmes. Les positions ne sont ouvertes que si elles répondent simultanément aux conditions de double croisement de la courbe et d’évaluation raisonnable.

Avantages stratégiques

  • L’utilisation d’un système à double ligne permet d’identifier efficacement les tendances à court et moyen terme.
  • Les avantages du suivi des tendances et des retours de transaction
  • Les conditions de survente et d’achat de l’appareil réduisent les transactions inutiles

Analyse des risques

  • Le timing de la fin du retournement est difficile à déterminer et peut prédire la perte de perte.
  • La tendance change, et il est impossible de s’arrêter rapidement et de subir des pertes plus importantes.
  • Une mauvaise configuration des paramètres peut entraîner des transactions trop fréquentes ou conservatrices

Optimisation de la stratégie

Il y a encore de la place pour optimiser cette stratégie:

  1. Utilisation d’outils plus complexes pour détecter les fluctuations et les tendances des prix, tels que les bandes de Brin, l’indicateur KD, etc.
  2. Le moment de la fin d’une reprise est déterminé en fonction de plusieurs facteurs, tels que les variations du volume de transactions, la volatilité, etc.
  3. Modifier dynamiquement la taille de la position pour maximiser les bénéfices
  4. Optimisation de la logique d’arrêt, en utilisant KAMA, le nuage d’Ichimoku et une barre de temps plus basse pour déterminer le moment de l’arrêt

Résumer

Cette stratégie intègre les avantages du suivi des tendances et des transactions de retournement, en utilisant un système bi-linéaire pour juger de l’apparition d’opportunités. En même temps, l’ouverture de positions inutiles est évitée en intégrant certaines conditions de surachat et de surachat. C’est une stratégie de trading quantitative très pratique qui mérite une étude et une optimisation approfondies.

Code source de la stratégie
/*backtest
start: 2023-02-20 00:00:00
end: 2024-02-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// @version=5
strategy("Profitable Pullback Trading Strategy", overlay=true,initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// Inputs
ma_length1 = input.int(280,'MA length 1', step = 10,group = 'Moving Avg. Parameters', inline = 'MA')
ma_length2 = input.int(13,'MA length 2', step = 1,group = 'Moving Avg. Parameters', inline = 'MA')
sl = input.float(title="Stop Loss (%)", defval=0.07, step=0.1, group="Moving Avg. Parameters")
too_deep    = input.float(title="Too Deep (%)", defval=0.27, step=0.01, group="Too Deep and Thin conditions", inline = 'Too')
too_thin    = input.float(title="Too Thin (%)", defval=0.03, step=0.01, group="Too Deep and Thin conditions", inline = 'Too')

// Calculations
ma1 = ta.sma(close,ma_length1)
ma2 = ta.sma(close,ma_length2)
too_deep2   = (ma2/ma1-1) < too_deep
too_thin2   = (ma2/ma1-1) > too_thin

// Entry and close condtions
var float buy_price = 0
buy_condition = (close > ma1) and (close < ma2) and strategy.position_size == 0 and too_deep2 and too_thin2
close_condition1  = (close > ma2) and strategy.position_size > 0 and (close < low[1])
stop_distance = strategy.position_size > 0 ? ((buy_price - close) / close) : na
close_condition2 = strategy.position_size > 0 and stop_distance > sl
stop_price = strategy.position_size > 0 ? buy_price - (buy_price * sl) : na

// Entry and close orders
if buy_condition
    strategy.entry('Long',strategy.long)
if buy_condition[1]
    buy_price := open
if close_condition1 or close_condition2
    strategy.close('Long',comment="Exit" + (close_condition2 ? "SL=true" : ""))
    buy_price := na

plot(ma1,color = color.blue)
plot(ma2,color = color.orange)