Stratégie de suivi de tendance Double EMA Golden Cross et Death Cross


Date de création: 2024-02-29 11:45:42 Dernière modification: 2024-02-29 11:45:42
Copier: 0 Nombre de clics: 644
1
Suivre
1617
Abonnés

Stratégie de suivi de tendance Double EMA Golden Cross et Death Cross

Aperçu

La stratégie de suivi de la tendance des deux EMA est une stratégie de trading quantitative qui utilise deux indicateurs EMA pour déterminer la direction de la tendance des prix. Cette stratégie détermine la tendance des prix en calculant deux ensembles de paramètres différents pour l’indicateur EMA, combinant les signaux de la fourche et de la fourche.

Principe de stratégie

La stratégie est basée sur deux ensembles d’EMAs, composés d’un ensemble EMA1 à période plus longue et d’un ensemble EMA2 à période plus courte. Le paramètre EMA1 est 21 et le paramètre EMA2 est 10. La stratégie calcule ces deux ensembles d’EMA sur une ligne de 4 heures comme période de référence.

Lorsque la courte période EMA2 est traversée par la plus longue période EMA1, un signal d’achat est généré. Cela indique que la tendance à court terme des prix s’intensifie et commence à entrer en hausse. Lorsque la courte période EMA2 est traversée par la plus longue période EMA1, un signal de vente est généré. Cela indique que la tendance à court terme à la hausse des prix est interrompue et commence à entrer en baisse.

Pour filtrer les signaux d’erreur, la stratégie définit deux ensembles d’indicateurs de forfait. Seuls les signaux des deux ensembles d’indicateurs sont déclenchés simultanément, ce qui permet de réduire efficacement les transactions erronées causées par les fluctuations de prix.

Analyse des avantages

  • L’utilisation d’une structure à double EMA permet de capturer efficacement les changements de tendance à court et moyen terme des prix et de pouvoir en juger.
  • L’ajout de filtres sur les deux ensembles d’indicateurs permettrait de réduire les signaux d’erreur et d’éviter les transactions inutiles causées par les fluctuations des prix.
  • L’indicateur est calculé sur une échelle de 4 heures, ce qui permet de faire face à des fluctuations de prix fréquentes.
  • La structure de la stratégie est simple et claire, facile à comprendre, adaptée aux applications de trading quantitatif.

Analyse des risques

  • La double structure d’EMA est moins efficace pour le jugement de la situation de la reprise des opérations. Si la reprise est longue, un signal erroné est généré.
  • L’indicateur de niveau 4 heures est insuffisamment sensible à la réaction aux événements soudains. Un message soudain important peut entraîner une situation majeure dans les 4 heures et ne peut pas contrôler efficacement le risque.
  • La stratégie est basée uniquement sur les indicateurs techniques, sans information de base. Les indicateurs techniques peuvent être invalidés si les fondamentaux de l’entreprise changent de manière significative.

Ces risques peuvent être maîtrisés par les moyens suivants:

  1. L’ajout d’indicateurs EMA pour plus de périodes permettra de construire un portefeuille de modèles.
  2. L’analyse de l’humeur textuelle est utilisée pour évaluer les événements majeurs et ajuster dynamiquement les positions.
  3. Paramètres d’ajustement dynamique liés à l’évolution de l’environnement économique, des politiques et des fondamentaux de l’entreprise

Direction d’optimisation

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

  1. Augmentation du portefeuille de modèles. Il est possible de créer un plus grand nombre de combinaisons d’indicateurs de paramètres différents, ce qui améliore la stabilité de la stratégie.

  2. Augmentation des mécanismes d’arrêt des pertes. Définir des points d’arrêt raisonnables permettant de contrôler efficacement les pertes individuelles.

  3. Optimisation dynamique des paramètres. Les paramètres de l’EMA peuvent être optimisés automatiquement en fonction des différentes conditions du marché.

  4. Combiné avec l’apprentissage automatique. Utilisez des frameworks tels que Tensorflow pour former des modèles qui prédisent les tendances des prix en temps réel.

Résumer

La stratégie de suivi de tendance à double fourche EMA est une stratégie de trading de tendance simple et pratique. Elle utilise les deux indicateurs EMA pour déterminer les tendances à court terme des prix afin de capturer les opportunités de tendance directionnelle.

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

//@version=3


/// Component Code Startt
testStartYear = input(2017, "Backtest Start Year")
testStartMonth = input(01, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2020, "Backtest Stop Year")
testStopMonth = input(1, "Backtest Stop Month")
testStopDay = input(1, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

// A switch to control background coloring of the test period
testPeriodBackground = input(title="Color Background?", type=bool, defval=false)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)

testPeriod() => true
// Component Code Stop

strategy(title="Ema cross strat", overlay=true)
margin = input(true, title="Margin?")
Margin = margin  ? margin : false
resCustom = input(title="EMA Timeframe", defval="240" )
source = close,
len2 = input(21, minval=1, title="EMA1")
len3 = input(10, minval=1, title="EMA2")
ema2 = request.security(syminfo.tickerid,resCustom,ema(source,len2), lookahead=barmerge.lookahead_off)
ema3 = request.security(syminfo.tickerid,resCustom,ema(source,len3), lookahead=barmerge.lookahead_off)


mylong = crossover(ema3, ema2)
myshort = crossunder(ema3,ema2)

last_long = na
last_short = na
last_long := mylong ? time : nz(last_long[1])
last_short := myshort ? time : nz(last_short[1])

in_long = last_long > last_short ? 2 : 0
in_short = last_short > last_long ? 2 : 0

mylong2 = crossover(ema3, ema2)
myshort2 = crossunder(ema3, ema2)

last_long2 = na
last_short2 = na
last_long2 := mylong2 ? time : nz(last_long2[1])
last_short2 := myshort2 ? time : nz(last_short2[1])

in_long2 = last_long2 > last_short2 ? 0 : 0
in_short2 = last_short2 > last_long2 ? 0 : 0

condlongx =   in_long + in_long2
condlong = crossover(condlongx, 1.9)
condlongclose = crossunder(condlongx, 1.9)

condshortx =  in_short + in_short2
condshort = crossover(condshortx, 1.9)
condshortclose = crossover(condshortx, 1.9)




if crossover(condlongx, 1.9) and testPeriod() and strategy.position_size <= 0
    strategy.entry("Long", strategy.long, comment="Long")

if crossover(condshortx, 1.9) and testPeriod() and strategy.position_size > 0    
    strategy.close("Long",when = not Margin)
    
if crossover(condshortx, 1.9) and testPeriod() and strategy.position_size >= 0
    strategy.entry("Short", strategy.short, comment="Short", when = Margin)