Estrategia de seguimiento de retroceso de la media móvil

El autor:¿ Qué pasa?, Fecha: 2024-03-28 18:00:05
Las etiquetas:

img

Resumen general

La idea principal de esta estrategia es utilizar dos promedios móviles con períodos diferentes para capturar la oportunidad de rebote después de un retroceso del mercado. Cuando el precio está por encima del promedio móvil a largo plazo y vuelve al promedio móvil a corto plazo, la estrategia abre una posición larga y cierra la posición cuando el precio vuelve a subir por encima del promedio móvil a corto plazo o alcanza el precio de stop-loss. Al buscar oportunidades de compra durante los retrocesos en una tendencia, la estrategia tiene como objetivo beneficiarse de los mercados de tendencia.

Principio de la estrategia

  1. Calcular dos medias móviles con períodos diferentes (MA1 y MA2), donde MA1 es la media móvil a largo plazo y MA2 es la media móvil a corto plazo.
  2. Cuando el precio de cierre está por encima del MA1 y por debajo del MA2, y no hay posición actual, y el momento actual se encuentra dentro del intervalo de tiempo de negociación especificado, la estrategia abre una posición larga.
  3. Registre el precio de entrada como buyPrice y calcule el precio stop-loss stopPrice (es decir, i_stopPercent por debajo del precio de entrada).
  4. Cuando el precio de cierre vuelve a subir por encima del MA2 y i_lowerClose es falso, o cuando el precio de cierre cae por debajo del precio de stop-loss stopPrice, la estrategia cierra la posición.
  5. Si i_lowerClose es verdadera, la estrategia cierra la posición cuando el precio de cierre es superior al MA2 y el precio de cierre de la vela anterior está por debajo del MA2.

Ventajas estratégicas

  1. Seguimiento de tendencias: Al determinar la tendencia general basada en la posición relativa del precio y la media móvil a largo plazo, la estrategia busca oportunidades de entrada dentro de la tendencia.
  2. Compra de retroceso: Al buscar oportunidades de compra cuando el precio vuelve al promedio móvil a corto plazo durante una tendencia alcista, la estrategia mejora la rentabilidad de los puntos de entrada.
  3. Protección contra pérdidas: el establecimiento de un precio de pérdidas ayuda a controlar eficazmente el riesgo a la baja cuando el precio se mueve negativamente en una cierta magnitud.
  4. Parámetros flexibles: Los usuarios pueden establecer flexiblemente parámetros como los períodos de promedio móvil, el porcentaje de stop-loss y si deben cerrar la posición cuando el precio de cierre de la vela anterior esté por debajo del promedio móvil a corto plazo, de acuerdo con sus preferencias.

Riesgos estratégicos

  1. Optimización de parámetros: los diferentes parámetros tienen un impacto significativo en el rendimiento de la estrategia, lo que requiere la optimización de parámetros y pruebas de retroceso en diferentes entornos de mercado para encontrar la combinación óptima de parámetros.
  2. Mercados inestables: en los mercados inestables, los precios fluctúan con frecuencia entre las medias móviles a largo plazo y a corto plazo, lo que puede conducir a la apertura y cierre frecuentes de posiciones y a la erosión de los costes de negociación.
  3. Inversión de tendencia: cuando una tendencia del mercado se invierte, la estrategia puede experimentar pérdidas consecutivas. En este punto, es necesario combinar otros indicadores o señales para juzgar la inversión de tendencia y ajustar la estrategia de manera oportuna.
  4. Eventos de cisne negro: Cuando el mercado experimenta eventos repentinos importantes e impredecibles, los precios pueden fluctuar drásticamente, provocando stop-loss y exponiendo la estrategia a pérdidas significativas.

Direcciones para la optimización de la estrategia

  1. El análisis de tendencia: Introduzca más indicadores de evaluación de tendencia, como el ADX, antes de abrir una posición para confirmar la fuerza y la dirección de la tendencia actual y mejorar la precisión de las señales de entrada.
  2. El nivel de stop-loss se ajusta dinámicamente en función de indicadores como la volatilidad de los precios y el ATR, ampliando el stop-loss cuando la volatilidad de los precios es alta y ajustándolo cuando es baja.
  3. Tamaño de la posición: ajustar dinámicamente el tamaño de la posición de cada entrada en función de factores como la fuerza de la tendencia del mercado y la volatilidad de los precios, aumentar el tamaño de la posición cuando la tendencia es fuerte y la volatilidad moderada y disminuir el tamaño de la posición cuando la tendencia es débil o la volatilidad es demasiado alta.
  4. La cobertura de largo corto: Considere la posibilidad de controlar simultáneamente las señales tanto desde el lado largo como desde el lado corto y de cubrir posiciones en diferentes mercados o plazos para reducir el riesgo general de la estrategia.

Resumen de las actividades

La estrategia de seguimiento de retroceso de promedios móviles captura oportunidades comerciales largas durante retrocesos de precios en una tendencia alcista mediante el uso de la posición relativa de dos promedios móviles con períodos diferentes. Esta estrategia es adecuada para mercados de tendencia, y con la configuración adecuada de parámetros y stop-loss, puede generar retornos estables en condiciones de tendencia. Sin embargo, la estrategia enfrenta ciertos riesgos en mercados agitados y durante las reversiones de tendencia. Al introducir más indicadores, optimizar el tamaño de la posición, implementar stop-loss dinámicos y otros métodos, el rendimiento y la estabilidad de esta estrategia pueden mejorarse aún más.


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

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © contapessoal_ivan
// @version=5
strategy("Pullback Strategy", 
     overlay=true, 
     initial_capital=1000,
     default_qty_type=strategy.percent_of_equity, 
     default_qty_value=100, // 100% of balance invested on each trade
     commission_type=strategy.commission.cash_per_contract, 
     commission_value=0.005) // Interactive Brokers rate

// Get user input
i_ma1           = input.int(title="MA 1 Length", defval=200, step=10, group="Strategy Parameters", tooltip="Long-term MA")
i_ma2           = input.int(title="MA 2 Length", defval=10, step=10, group="Strategy Parameters", tooltip="Short-term MA")
i_stopPercent   = input.float(title="Stop Loss Percent", defval=0.10, step=0.1, group="Strategy Parameters", tooltip="Failsafe Stop Loss Percent Decline")
i_lowerClose    = input.bool(title="Exit On Lower Close", defval=false, group="Strategy Parameters", tooltip="Wait for a lower-close before exiting above MA2")
i_startTime     = input(title="Start Filter", defval=timestamp("26 Jan 2023 00:00 +0000"), group="Time Filter", tooltip="Start date & time to begin searching for setups")
i_endTime       = input(title="End Filter", defval=timestamp("26 Mar 2024 23:59 +0000"), group="Time Filter", tooltip="End date & time to stop searching for setups")

// Get indicator values
ma1 = ta.sma(close, i_ma1)
ma2 = ta.sma(close, i_ma2)

// Check filter(s)
f_dateFilter = true

// Check buy/sell conditions
var float buyPrice = 0
buyCondition    = close > ma1 and close < ma2 and strategy.position_size == 0 and f_dateFilter
sellCondition   = close > ma2 and strategy.position_size > 0 and (not i_lowerClose or close < low[1])
stopDistance    = strategy.position_size > 0 ? ((buyPrice - close) / close) : na
stopPrice       = strategy.position_size > 0 ? buyPrice - (buyPrice * i_stopPercent) : na
stopCondition   = strategy.position_size > 0 and stopDistance > i_stopPercent

// Enter positions
if buyCondition
    strategy.entry(id="Long", direction=strategy.long)

if buyCondition[1]
    buyPrice := open

// Exit positions
if sellCondition or stopCondition
    strategy.close(id="Long", comment="Exit" + (stopCondition ? "SL=true" : ""))
    buyPrice := na

// Draw pretty colors
plot(buyPrice, color=color.lime, style=plot.style_linebr)
plot(stopPrice, color=color.red, style=plot.style_linebr, offset=-1)
plot(ma1, color=color.blue)
plot(ma2, color=color.orange)


Más.