L'analyse de la double stratégie de l'EMA

Auteur:ChaoZhang est là., Date: 2024-02-28 18h07:59 Je vous en prie.
Les étiquettes:

img

Résumé

La double stratégie EMA est une stratégie de suivi de tendance qui identifie la direction de tendance des prix en calculant les EMA de différents cycles et en l'utilisant pour déterminer les entrées et les sorties.

La logique de la stratégie

La stratégie est principalement basée sur deux indicateurs EMA, une EMA à court terme de 9 jours et une EMA à plus long terme de 21 jours.

Lorsque la courte EMA traverse au-dessus de la longue EMA, elle est considérée comme des prix entrant dans une tendance à la hausse. La stratégie sera longue pour suivre la tendance à la hausse. Lorsque la courte EMA traverse en dessous de la longue EMA, elle est considérée comme des prix entrant dans une tendance à la baisse. La stratégie sera courte pour suivre la tendance à la baisse.

Les indicateurs EMA peuvent filtrer efficacement le bruit des données sur les prix et identifier la direction principale de la tendance.

Les avantages

La stratégie présente les avantages suivants:

  1. L'idée de stratégie est simple et facile à comprendre et à mettre en œuvre.
  2. Il peut identifier efficacement les tendances des prix et entrer en position en temps opportun pour suivre les tendances.
  3. L'utilisation des EMA filtre le bruit et évite les interférences des fluctuations de prix à court terme.
  4. Les paramètres EMA peuvent être configurés pour ajuster la sensibilité de la stratégie.

Les risques

Cette stratégie comporte également certains risques:

  1. La caractéristique du retard des EMA peut accroître les pertes en cas d'inversion des tendances.
  2. Des paramètres EMA incorrects augmentent les taux de faux signaux.
  3. La stratégie est plus adaptée aux marchés à forte tendance et vulnérables dans les périodes de fourchette.

Amélioration

La stratégie peut être optimisée dans les aspects suivants:

  1. Incorporer d'autres indicateurs pour identifier les renversements de tendance et réduire les pertes, par exemple MACD, KDJ, etc.
  2. Une bonne stratégie de stop loss peut réduire considérablement le drawdown maximum.
  3. Optimiser les paramètres de l'EMA afin de mieux les adapter aux caractéristiques de prix des différents produits.
  4. Utiliser des algorithmes d'apprentissage automatique pour automatiser l'optimisation des paramètres EMA.

Résumé

En résumé, la stratégie double EMA est une stratégie très utile de suivi des tendances. Elle est facile à utiliser, à comprendre et fonctionne très bien sur les marchés à forte tendance.


/*backtest
start: 2023-02-21 00:00:00
end: 2024-02-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
// This can only draw so many lines. Use bar replay to go back further
strategy("Strategy Lines", shorttitle="Strategy Lines", overlay=true, max_lines_count=500)

//###########################################################################################################################################
// Replace your strategy here
//###########################################################################################################################################

shortEMA = ta.ema(close, input(9, title="Short EMA Length"))
longEMA = ta.ema(close, input(21, title="Long EMA Length"))

// Entry conditions for long and short positions
longCondition = ta.crossover(shortEMA, longEMA)
shortCondition = ta.crossunder(shortEMA, longEMA)

//###########################################################################################################################################
// Strategy Lines
//###########################################################################################################################################

var timeLow = bar_index
var line li = na
var openLPrice = 0.0000
var openSPrice = 0.0000

LongWColor = input.color(color.rgb(0,255,0,0),"Long Win Color", group="Strategy Lines")
LongLColor = input.color(color.rgb(0,0,255,0),"Long Loss Color", group="Strategy Lines")
ShortWColor = input.color(color.rgb(255,255,0,0),"Short Win Color", group="Strategy Lines")
ShortLColor = input.color(color.rgb(255,0,0,0),"Short Loss Color", group="Strategy Lines")
WinFontColor = input.color(color.rgb(0,0,0,0),"Win Font Color", group="Strategy Lines")
LossFontColor = input.color(color.rgb(255,255,255,0),"Loss Font Color", group="Strategy Lines")
LinesShowLabel = input(false,"Show Labels?",group = "Strategy Lines")

// // Start new line when we go long
// if strategy.position_size >0
//     line.delete(li)
//     li := line.new(timeLow, close[bar_index-timeLow], bar_index, close, width=2, color=close>openLPrice?LongWColor:LongLColor)

// // Start new line when we go short
// if strategy.position_size <0
//     line.delete(li)
//     li := line.new(timeLow, close[bar_index-timeLow], bar_index, close, width=2, color=close<openSPrice?ShortWColor:ShortLColor)

// //Delete Lines if we don't have a position open
// if strategy.position_size ==0
//     li := line.new(timeLow, close[bar_index-timeLow], bar_index, close, width=2, color=color.rgb(0,0,0,100))
//     line.delete(li)

if LinesShowLabel
    // Short Label
    if strategy.position_size>=0 and strategy.position_size[1] <0
        label.new(
             timeLow, na, 
             text=str.tostring((openSPrice-close[1])/(syminfo.mintick*10)), 
             color=close[1]<openSPrice?ShortWColor:ShortLColor, 
             textcolor=close[1]<openSPrice?WinFontColor:LossFontColor,
             size=size.small, 
             style=label.style_label_down, yloc=yloc.abovebar)
    // Long Label
    if strategy.position_size<=0 and strategy.position_size[1] >0
        label.new(
             timeLow, na,
             text=str.tostring((close[1]-openLPrice)/(syminfo.mintick*10)), 
             color=close[1]>openLPrice?LongWColor:LongLColor, 
             textcolor=close[1]>openLPrice?WinFontColor:LossFontColor,
             size=size.small, 
             style=label.style_label_down, yloc=yloc.abovebar)

// Open long position and draw line
if (longCondition)
    //strategy.entry("Long", strategy.long)
    // timeLow := bar_index
    // li := line.new(timeLow, close[bar_index-timeLow], bar_index, close, width=2, color=close>openLPrice?LongWColor:LongLColor)
    openLPrice := close

// Open short position and draw line
if (shortCondition)
    //strategy.entry("Short", strategy.short)
    // timeLow := bar_index
    // li := line.new(timeLow, close[bar_index-timeLow], bar_index, close, width=2, color=close<openSPrice?ShortWColor:ShortLColor)
    openSPrice := close

//###########################################################################################################################################
// Strategy Execution (Replace this as well)
//###########################################################################################################################################

if (longCondition)
    strategy.entry("Long", strategy.long)

if (shortCondition)
    strategy.entry("Short", strategy.short)

Plus de