Basado en el análisis de estrategia de doble EMA


Fecha de creación: 2024-02-28 18:07:59 Última modificación: 2024-02-28 18:07:59
Copiar: 1 Número de Visitas: 550
1
Seguir
1617
Seguidores

Basado en el análisis de estrategia de doble EMA

Descripción general

La estrategia de doble EMA es una estrategia de seguimiento de tendencias que identifica la dirección de la tendencia de los precios mediante el cálculo de EMA de diferentes períodos para decidir si se toma una posición o una posición baja. La estrategia es sencilla y práctica y se aplica a mercados con una fuerte tendencia.

Principio de estrategia

La estrategia se basa principalmente en dos indicadores de EMA, uno de corto período de 9 días de EMA, y el otro de largo período de 21 días de EMA. Su cruce es una señal de establecimiento de la posición y la posición.

Cuando el corto plazo EMA sobre el largo plazo EMA, se considera que el precio entró en una tendencia al alza, la estrategia abrirá más órdenes en este momento, el seguimiento de los precios aumentan. Cuando el corto plazo EMA bajo el corto plazo EMA, se considera que el precio entró en una tendencia a la baja, la estrategia abrirá una orden en blanco en este momento, el seguimiento de la caída de los precios.

Los EMAs son capaces de filtrar el ruido de los datos de precios e identificar las principales direcciones de las tendencias de precios. Por lo tanto, la estrategia utiliza los EMAs dobles como base para la construcción de posiciones de paz con la esperanza de poder capturar los ciclos de tendencias de precios más largos.

Ventajas estratégicas

La estrategia tiene las siguientes ventajas:

  1. La estrategia es simple y clara, fácil de entender y de implementar.
  2. La capacidad de identificar las tendencias de los precios y de establecer posiciones a tiempo para seguirlas.
  3. Utiliza el indicador EMA para filtrar el ruido y evitar la interferencia de las fluctuaciones de precios a corto plazo.
  4. Se pueden configurar los parámetros EMA para ajustar la sensibilidad de la estrategia.

Riesgo estratégico

La estrategia también tiene sus riesgos:

  1. En el caso de una reversión de la tendencia, la característica de retraso de los indicadores EMA puede causar un aumento de las pérdidas.
  2. Si el parámetro EMA no se ajusta a tiempo, aumenta la tasa de falsedad.
  3. Esta estrategia es más adecuada para mercados de fuerte tendencia y es vulnerable al cierre.

Optimización de la estrategia

La estrategia puede ser optimizada en los siguientes aspectos:

  1. Combinado con otros indicadores para determinar el cambio de tendencia y reducir las pérdidas. Por ejemplo, MACD, KDJ, etc.
  2. Con la adición de la lógica de stop loss, una buena estrategia de stop loss puede reducir considerablemente la máxima retirada de la estrategia.
  3. Optimizar los parámetros de la EMA para que se ajusten mejor a las características de los precios de las diferentes variedades.
  4. La optimización automática de los parámetros de EMA en combinación con algoritmos de aprendizaje automático.

Resumir

La estrategia de doble EMA es una estrategia de seguimiento de tendencias muy práctica en general. Es simple de operar, fácil de entender y tiene un excelente rendimiento en mercados de fuerte tendencia. Al mismo tiempo, la estrategia también tiene algunos riesgos que pueden optimizarse para mejorar la estabilidad de la estrategia desde varias dimensiones.

Código Fuente de la Estrategia
/*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)