Estrategia de seguimiento de tendencia de cruce de doble MA


Fecha de creación: 2023-12-21 16:10:22 Última modificación: 2023-12-21 16:10:22
Copiar: 1 Número de Visitas: 611
1
Seguir
1623
Seguidores

Estrategia de seguimiento de tendencia de cruce de doble MA

Descripción general

La estrategia utiliza un método de seguimiento de tendencias típico de doble línea de equilibrio cruzada, combinado con mecanismos de gestión de riesgos como stop loss, stop loss y tracking stop loss, con el objetivo de capturar las ganancias generadas por las tendencias.

Principio de estrategia

  1. Calcula el promedio de la EMA de n días de un período rápido como promedio a corto plazo;
  2. Calcula el promedio de la EMA de m días durante un período lento como promedio a largo plazo;
  3. Hacer más cuando la media corta se rompe de abajo hacia arriba; hacer menos cuando se rompe de arriba hacia abajo;
  4. Condición de posición en equilibrio: reversa (si se hace una ruptura múltiple, la ruptura en sentido inverso equilibra la posición).
  5. Gestionar el riesgo mediante el uso de métodos como el stop loss, el stop stop, y el tracking stop loss.

Análisis de las ventajas

  1. El uso de la línea media doble de EMA permite determinar mejor el punto de inflexión de la tendencia de los precios y capturar la tendencia.
  2. La combinación de stop loss, stop-loss y stop-loss tracking permite controlar eficazmente las pérdidas individuales, bloquear las ganancias y reducir las retiradas.
  3. Hay muchos parámetros que se pueden personalizar y optimizar para diferentes variedades y contextos.
  4. La lógica de la estrategia es simple y clara, fácil de entender y modificar.
  5. El soporte para hacer varias operaciones de vacío se puede adaptar a diferentes tipos de situaciones.

Análisis de riesgos

  1. Las estrategias de doble línea son muy sensibles a las brechas falsas y son fáciles de atrapar.
  2. La configuración inadecuada de los parámetros puede conducir a la frecuencia de las transacciones, aumentando los costos de las transacciones y la pérdida de puntos de deslizamiento.
  3. Las estrategias por sí solas no pueden determinar el punto de inflexión de la tendencia, por lo que es necesario combinarlos con otros indicadores para obtener mejores resultados.
  4. En el contexto de la crisis, las señales de intercambio son fáciles de generar, pero la rentabilidad real es menor.
  5. Los parámetros deben ser optimizados para adaptarse a diferentes variedades y entornos.

El riesgo puede reducirse de la siguiente manera:

  1. En combinación con otros indicadores, se filtró la brecha falsa.
  2. Optimización de la configuración de los parámetros para reducir la frecuencia de las transacciones.
  3. El objetivo de la iniciativa es aumentar los indicadores de tendencia y evitar la volatilidad en el mercado.
  4. Ajuste de la gestión de la posición para reducir el riesgo de un solo banco.

Dirección de optimización

Esta estrategia puede ser optimizada en los siguientes aspectos:

  1. Optimización de los parámetros periódicos de la línea media lenta y rápida para adaptarse a diferentes variedades y entornos comerciales.
  2. Añadir otros indicadores para juzgar la tendencia y filtrar falsas señales de ruptura. Típicamente se puede agregar MACD, KDJ, etc.
  3. Se puede considerar la conversión de la EMA a SMA o a la media móvil ponderada WMA.
  4. Basado en el ATR para ajustar la distancia de deterioro.
  5. La administración de posiciones permite la flexibilidad de ajustar las posiciones individuales.
  6. Optimización de los parámetros de adaptación basada en una combinación de indicadores de correlación y volatilidad.

Resumir

Esta estrategia en su conjunto es una típica estrategia de seguimiento de tendencias de doble EMA. Tiene la ventaja de capturar la tendencia de la tendencia, al mismo tiempo que combina los medios de gestión de riesgos, como la detención, la detención y el seguimiento de las pérdidas. Pero también hay algunos problemas típicos, como la alta sensibilidad a las tendencias de ruido y vibración, que son fáciles de encajar.

Código Fuente de la Estrategia
/*backtest
start: 2023-11-20 00:00:00
end: 2023-12-20 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2

strategy(title = "Strategy Code Example", shorttitle = "Strategy Code Example", overlay = true)

// Revision:        1
// Author:          @JayRogers
//
// *** THIS IS JUST AN EXAMPLE OF STRATEGY RISK MANAGEMENT CODE IMPLEMENTATION ***

// === GENERAL INPUTS ===
// short ma
maFastSource   = input(defval = open, title = "Fast MA Source")
maFastLength   = input(defval = 14, title = "Fast MA Period", minval = 1)
// long ma
maSlowSource   = input(defval = open, title = "Slow MA Source")
maSlowLength   = input(defval = 21, title = "Slow MA Period", minval = 1)

// === STRATEGY RELATED INPUTS ===
tradeInvert     = input(defval = false, title = "Invert Trade Direction?")
// the risk management inputs
inpTakeProfit   = input(defval = 1000, title = "Take Profit", minval = 0)
inpStopLoss     = input(defval = 200, title = "Stop Loss", minval = 0)
inpTrailStop    = input(defval = 200, title = "Trailing Stop Loss", minval = 0)
inpTrailOffset  = input(defval = 0, title = "Trailing Stop Loss Offset", minval = 0)

// === RISK MANAGEMENT VALUE PREP ===
// if an input is less than 1, assuming not wanted so we assign 'na' value to disable it.
useTakeProfit   = inpTakeProfit  >= 1 ? inpTakeProfit  : na
useStopLoss     = inpStopLoss    >= 1 ? inpStopLoss    : na
useTrailStop    = inpTrailStop   >= 1 ? inpTrailStop   : na
useTrailOffset  = inpTrailOffset >= 1 ? inpTrailOffset : na

// === SERIES SETUP ===
/// a couple of ma's..
maFast = ema(maFastSource, maFastLength)
maSlow = ema(maSlowSource, maSlowLength)

// === PLOTTING ===
fast = plot(maFast, title = "Fast MA", color = green, linewidth = 2, style = line, transp = 50)
slow = plot(maSlow, title = "Slow MA", color = red, linewidth = 2, style = line, transp = 50)

// === LOGIC ===
// is fast ma above slow ma?
aboveBelow = maFast >= maSlow ? true : false
// are we inverting our trade direction?
tradeDirection = tradeInvert ? aboveBelow ? false : true : aboveBelow ? true : false

// === STRATEGY - LONG POSITION EXECUTION ===
enterLong() => not tradeDirection[1] and tradeDirection // functions can be used to wrap up and work out complex conditions
exitLong() => tradeDirection[1] and not tradeDirection
strategy.entry(id = "Long", long = true, when = enterLong()) // use function or simple condition to decide when to get in
strategy.close(id = "Long", when = exitLong()) // ...and when to get out
// === STRATEGY - SHORT POSITION EXECUTION ===
enterShort() => tradeDirection[1] and not tradeDirection
exitShort() => not tradeDirection[1] and tradeDirection
strategy.entry(id = "Short", long = false, when = enterShort())
strategy.close(id = "Short", when = exitShort())

// === STRATEGY RISK MANAGEMENT EXECUTION ===
// finally, make use of all the earlier values we got prepped
strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)
strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)