EintSimple estrategia de retroceso

El autor:¿ Qué pasa?, Fecha: 2024-01-15 14:04:54
Las etiquetas:

img

Estrategia de retroceso de la media móvil cruzada EintSimple

Resumen general

La estrategia EintSimple Pullback es una estrategia de reversión media basada en el cruce de dos promedios móviles. Primero utiliza una línea de promedio móvil a largo plazo y una línea de promedio móvil a corto plazo. Cuando la línea de promedio móvil a corto plazo rompe la línea de promedio móvil a largo plazo desde la parte inferior, se genera una señal de compra. Para filtrar las fallas, esta estrategia también requiere que el precio de cierre sea mayor que la línea de promedio móvil a largo plazo.

Después de entrar en el mercado, si el precio vuelve a caer por debajo de la línea media móvil a corto plazo, activará una señal de salida. Además, esta estrategia también establece una salida de stop loss. Si el retroceso desde el punto más alto alcanza el porcentaje de stop loss establecido, también saldrá de las posiciones.

Estrategia lógica

La estrategia se basa principalmente en la cruz de oro de las medias móviles duales para determinar el momento de entrada.

  1. El precio de cierre es mayor que el promedio móvil a largo plazo ma1
  2. El precio de cierre es inferior al promedio móvil a corto plazo ma2
  3. Actualmente no hay puesto disponible.

Una vez que se cumplan las condiciones anteriores, esta estrategia tendrá una posición larga completa.

El juicio de la señal de salida se basa en dos condiciones: una es que el precio vuelva a caer por debajo de la media móvil a corto plazo; la otra es que el retroceso desde el punto más alto alcance el porcentaje de stop loss establecido; las condiciones específicas de salida son las siguientes:

  1. El precio de cierre es mayor que el promedio móvil a corto plazo ma2
  2. El retracement desde el punto más alto alcanza el porcentaje de stop loss establecido

Cuando se cumpla cualquiera de las condiciones de salida, esta estrategia cerrará todas las posiciones largas.

Ventajas

  1. El uso de doble cruce de promedios móviles combinado con precios de cierre sólidos para juzgar puede filtrar eficazmente las fallas falsas.

  2. La adopción de la entrada de retroceso puede entrar después de que el precio forma puntos de inflexión a corto plazo.

  3. Con la configuración de stop loss, puede limitar el descenso máximo.

Los riesgos

  1. Las estrategias de cruce de promedios móviles dobles tienden a producir señales comerciales frecuentes y pueden perseguir picos y matar fondos.

  2. La configuración incorrecta de los parámetros de las medias móviles puede dar lugar a curvas demasiado suaves o demasiado sensibles.

  3. Los ajustes de stop loss demasiado sueltos conducirán a pérdidas ampliadas.

Optimización

  1. Prueba diferentes combinaciones de medias móviles a largo plazo y a corto plazo para encontrar los parámetros óptimos.

  2. Comparar los efectos de utilizar el precio cerrado y el precio típico para determinar los cruces de la media móvil.

  3. Prueba agregando filtros como indicadores de volumen o volatilidad.

  4. Backtest optimizar el porcentaje de stop loss para encontrar el mejor ajuste.

Conclusión

La EintSimple Pullback Strategy es una estrategia de retroceso de promedios móviles duales sencilla y práctica. Utiliza eficazmente la funcionalidad direccional de los promedios móviles mientras combina precios de cierre sólidos para filtrar señales falsas. Aunque esta estrategia es propensa a comerciar con frecuencia y perseguir picos y matar fondos, se puede mejorar aún más a través de la optimización de parámetros y la adición de filtros.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © ZenAndTheArtOfTrading / www.PineScriptMastery.com
// @version=5
strategy("Simple Pullback Strategy", 
     overlay=true, 
     initial_capital=50000,
     default_qty_type=strategy.percent_of_equity, 
     default_qty_value=100)// 100% of balance invested on each trade

// Get user input
i_ma1           = input.int(title="MA 1 Length", defval=75, step=1, group="Strategy Parameters", tooltip="Long-term EMA")
i_ma2           = input.int(title="MA 2 Length", defval=9, step=1, group="Strategy Parameters", tooltip="Short-term EMA")
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=true, group="Strategy Parameters", tooltip="Wait for a lower-close before exiting above MA2")
i_startTime     = input(title="Start Filter", defval=timestamp("01 Jan 1995 13:30 +0000"), group="Time Filter", tooltip="Start date & time to begin searching for setups")
i_endTime       = input(title="End Filter", defval=timestamp("1 Jan 2099 19:30 +0000"), group="Time Filter", tooltip="End date & time to stop searching for setups")

// Get indicator values
ma1 = ta.ema(close, i_ma1)
ma2 = ta.ema(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.fuchsia)

Más.