Estrategia de inversión de media móvil doble


Fecha de creación: 2023-11-03 16:51:18 Última modificación: 2023-11-03 16:51:18
Copiar: 2 Número de Visitas: 592
1
Seguir
1617
Seguidores

Estrategia de inversión de media móvil doble

Descripción general

Esta estrategia utiliza dos indicadores para generar señales de negociación: la media móvil del índice 2020 y el indicador de reversión del rango de fluctuación real promedio. Combina el seguimiento de la tendencia y la reversión a corto plazo, dos ideas estratégicas que buscan encontrar oportunidades de reversión.

El principio

La estrategia tiene dos partes:

  1. 220 Moving Average. Calcula la media móvil del índice de los últimos 20 días y genera una señal de negociación cuando los precios se mueven desde arriba hacia abajo o desde abajo hacia la media móvil.

  2. El indicador de reversión del rango de fluctuación real promedio. Se basa en el rango de fluctuación real promedio del precio para calcular el punto de parada, y genera una señal cuando el precio supera ese punto de parada. Se utiliza 3.5 veces el ATR como punto de parada.

Esta estrategia integra las dos señales. Cuando el 220 EMA produce una señal de múltiples cabezas y el ATR se vuelve a producir una señal de cabezas vacías, hacer vacío; cuando el 220 EMA produce una señal de cabezas vacías y el ATR se vuelve a producir una señal de múltiples cabezas, hacer más.

Análisis de las ventajas

Esta estrategia combina el seguimiento de la tendencia y la reversión, con el objetivo de detectar oportunidades de reversión de los precios. Las ventajas concretas son:

  1. 220 La EMA puede identificar tendencias intermedias y evitar ser engañada por el ruido del mercado.

  2. El indicador de reversión ATR capta las reversiones de precios a corto plazo y aprovecha las oportunidades de reversión.

  3. La combinación de ambas señales permite capturar el cambio de tendencia a mediano plazo con anticipación, lo que aumenta la probabilidad de obtener ganancias.

  4. La configuración del Stop Loss ATR es más razonable y tiene un cierto efecto de control de riesgo.

  5. Se puede personalizar el coeficiente ATR para adaptarse a las características de las diferentes variedades.

  6. Se puede optar por el comercio a la derecha o a la izquierda, para diferentes situaciones.

Análisis de riesgos

La estrategia también tiene los siguientes riesgos:

  1. 220 El parámetro EMA es más lento, puede haber perdido la oportunidad de una línea corta.

  2. El stop ATR es fácil de romper, por lo que se debe relajar el stop adecuadamente.

  3. Un solo indicador puede generar señales erróneas y debe combinarse con más factores para filtrar.

  4. El número de transacciones es importante para evitar que sea demasiado frecuente.

  5. Se requiere optimización de parámetros y retroalimentación para confirmar la idoneidad de la variedad.

  6. Se requiere un control estricto de la gestión de fondos y el control de los riesgos individuales.

Dirección de optimización

La estrategia se puede optimizar en los siguientes aspectos:

  1. Ajustar los parámetros de EMA para encontrar la combinación óptima de parámetros

  2. Optimización del tamaño del multiplicador ATR para equilibrar el stop loss

  3. Aumentar las condiciones de filtración, combinando indicadores como la tasa de cambio y la volatilidad

  4. Agrega un módulo de gestión de fondos y ajusta posiciones dinámicamente

  5. Aumentar las estrategias de parada de pérdidas, como la salida de Chandelier

  6. Prueba de los diferentes parámetros para encontrar la combinación óptima

  7. Un modelo de aprendizaje automático para mejorar el rendimiento de los grandes datos

  8. Combinación de varias estrategias para descubrir más Alfa

Resumir

La estrategia integra dos ideas principales y tiene cierta capacidad de captar la reversión del precio. Pero también existe el riesgo de una selección incorrecta de parámetros. Se puede mejorar aún más la estabilidad y la rentabilidad de la estrategia optimizando la estrategia de parada de pérdidas, aumentando las condiciones de filtración, etc.

Código Fuente de la Estrategia
/*backtest
start: 2022-10-27 00:00:00
end: 2023-11-02 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 05/04/2022
// This is combo strategies for get a cumulative signal. 
//
// First strategy
// This indicator plots 2/20 exponential moving average. For the Mov 
// Avg X 2/20 Indicator, the EMA bar will be painted when the Alert criteria is met.
//
// Second strategy
// Average True Range Trailing Stops Strategy, by Sylvain Vervoort 
// The related article is copyrighted material from Stocks & Commodities Jun 2009 
// Please, use it only for learning or paper trading. Do not for real trading.
//
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
EMA20(Length) =>
    pos = 0.0
    xPrice = close
    xXA = ta.ema(xPrice, Length)
    nHH = math.max(high, high[1])
    nLL = math.min(low, low[1])
    nXS = nLL > xXA or nHH < xXA ? nLL : nHH
    iff_1 = nXS < close[1] ? 1 : nz(pos[1], 0)
    pos := nXS > close[1] ? -1 : iff_1
    pos


ATRR(nATRPeriod,nATRMultip) =>
    pos = 0.0
    xATR = ta.atr(nATRPeriod)
    nLoss = nATRMultip * xATR
    xATRTrailingStop = 0.0
    xATRTrailingStop := close > nz(xATRTrailingStop[1], 0) and close[1] > nz(xATRTrailingStop[1], 0) ? math.max(nz(xATRTrailingStop[1]), close - nLoss) :
                          close < nz(xATRTrailingStop[1], 0) and close[1] < nz(xATRTrailingStop[1], 0) ? math.min(nz(xATRTrailingStop[1]), close + nLoss) : 
                          close > nz(xATRTrailingStop[1], 0) ? close - nLoss : close + nLoss
    pos:= close[1] < nz(xATRTrailingStop[1], 0) and close > nz(xATRTrailingStop[1], 0) ? 1 :
    	     close[1] > nz(xATRTrailingStop[1], 0) and close < nz(xATRTrailingStop[1], 0) ? -1 : nz(pos[1], 0) 
    pos

strategy(title='Combo 2/20 EMA & Average True Range Reversed', shorttitle='Combo', overlay=true)
var I1 = '●═════ 2/20 EMA ═════●'
Length = input.int(14, minval=1, group=I1)
var I2 = '●═════ Average True Range Reversed  ═════●'
nATRPeriod = input.int(5, group=I2)
nATRMultip = input.float(3.5, group=I2)
var misc = '●═════ MISC ═════●'
reverse = input.bool(false, title='Trade reverse', group=misc)
var timePeriodHeader = '●═════ Time Start ═════●'
d = input.int(1, title='From Day', minval=1, maxval=31, group=timePeriodHeader)
m = input.int(1, title='From Month', minval=1, maxval=12, group=timePeriodHeader)
y = input.int(2005, title='From Year', minval=0, group=timePeriodHeader)
StartTrade = time > timestamp(y, m, d, 00, 00) ? true : false
posEMA20 = EMA20(Length)
prePosATRR = ATRR(nATRPeriod,nATRMultip)
iff_1 = posEMA20 == -1 and prePosATRR == -1 and StartTrade ? -1 : 0
pos = posEMA20 == 1 and prePosATRR == 1 and StartTrade ? 1 : iff_1
iff_2 = reverse and pos == -1 ? 1 : pos
possig = reverse and pos == 1 ? -1 : iff_2
if possig == 1
    strategy.entry('Long', strategy.long)
if possig == -1
    strategy.entry('Short', strategy.short)
if possig == 0
    strategy.close_all()
barcolor(possig == -1 ? #b50404 : possig == 1 ? #079605 : #0536b3)