Tendencia siguiendo una estrategia basada en medias móviles

El autor:¿ Qué pasa?, Fecha: 2024-01-18 12: 23:59
Las etiquetas:

img

Resumen general

Esta estrategia es una estrategia de seguimiento de tendencias basada en promedios móviles. Utiliza líneas EMA de diferentes períodos para construir múltiples conjuntos de señales de negociación para el seguimiento de tendencias. Cuando el precio se rompe por debajo de los promedios móviles de período más largo, la estrategia construirá progresivamente posiciones largas para reducir el costo promedio. La estrategia también establece condiciones de stop loss basadas en giros de promedio móviles de período corto para asegurar ganancias.

Estrategia lógica

La estrategia emplea 5 líneas EMA de diferentes períodos para construir señales de negociación, que son EMA de 10 días, 20 días, 50 días, 100 días y 200 días. La estrategia define 4 condiciones de compra basadas en la relación de precios con estas líneas EMA para implementar el comercio piramidal.

Cuando el precio está por debajo de la EMA de 20 días mientras está por encima de la EMA de 50 días, se activa la primera señal de compra. Cuando está por debajo de la EMA de 50 días mientras está por encima de la EMA de 100 días, se activa la segunda señal de compra. Las señales de compra tercera y cuarta se activan cuando el precio cae por debajo de la EMA de 100 días y la EMA de 200 días respectivamente. El tamaño de la posición también se expande progresivamente de qt1 a qt4.

En el lado de la venta, hay dos grupos de condiciones de stop loss. La primera es detener la pérdida cuando el precio supera la EMA de 10 días, mientras que la EMA de 10 días está por encima de otras líneas de EMA. La segunda es similar, pero sale cuando el precio cae por debajo del cierre anterior de la EMA de 10 días. Estas dos condiciones son para asegurar ganancias a corto plazo durante las tendencias.

Análisis de ventajas

La mayor ventaja de esta estrategia es la capacidad de rastrear automáticamente las tendencias del mercado para las retenciones a largo plazo. Al utilizar múltiples condiciones de entrada y la construcción progresiva de posiciones, reduce constantemente la base de costos para obtener rendimientos excedentes. También diversifica el riesgo de fijación de precios asociado con un solo nivel de precio de entrada.

En el lado del stop loss, la estrategia rastrea los puntos de inflexión de la media móvil de corto plazo para obtener rápidamente ganancias y evitar nuevas pérdidas.

Análisis de riesgos

El mayor riesgo que enfrenta esta estrategia es quedarse atascado en consolidaciones o tendencias a la baja de larga duración. Cuando el mercado en general entra en un canal de variación o a la baja, las señales de promedio móvil se vuelven menos confiables. Esto podría conducir a pérdidas sostenidas por continuas construcciones largas.

Otro punto de riesgo es que las medias móviles no siempre señalan con precisión los giros. Las brechas de precios o los movimientos explosivos podrían resultar en señales defectuosas. Esto requiere indicadores técnicos adicionales para la verificación y optimización.

Direcciones de optimización

Otros indicadores técnicos como el volumen o las bandas de Bollinger podrían incorporarse a las condiciones de compra para mejorar aún más la precisión de las entradas.

También se podrían agregar las segundas capas de stop loss basadas en la banda superior de Bollinger o áreas de soporte clave. Esto ayuda a evitar paradas pequeñas innecesarias.

Conclusión

Esta estrategia implementa la tendencia después de la negociación a través de un sistema de promedio móvil. A través de la construcción de posiciones piramidal, tiene como objetivo maximizar los rendimientos de las tendencias sostenidas al tiempo que asegura la preservación del capital con mecanismos de doble stop loss. Esta es una estrategia digna de seguimiento adicional y pruebas en vivo.


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

//@version=5
strategy("EMA_zorba1", shorttitle="zorba_ema", overlay=true)

// Input parameters
qt1 = input.int(5, title="Quantity 1", minval=1)
qt2 = input.int(10, title="Quantity 2", minval=1)
qt3 = input.int(15, title="Quantity 3", minval=1)
qt4 = input.int(20, title="Quantity 4", minval=1)
ema10 = ta.ema(close, 10)
ema20 = ta.ema(close, 20)
ema50 = ta.ema(close, 50)
ema100 = ta.ema(close, 100)
ema200 = ta.ema(close, 200)

// Date range filter
start_date = timestamp(year=2021, month=1, day=1)
end_date = timestamp(year=2024, month=10, day=27)
in_date_range = true

// Profit condition
profit_percentage = input(1, title="Profit Percentage")  // Adjust this value as needed

// Pyramiding setting
pyramiding = input.int(2, title="Pyramiding", minval=1, maxval=10)

// Buy conditions
buy_condition_1 = in_date_range and close < ema20 and close > ema50 and close < open and close < low[1]
buy_condition_2 = in_date_range and close < ema50 and close > ema100 and close < open and close < low[1]
buy_condition_3 = in_date_range and close < ema100 and close > ema200 and close < open and close < low[1]
buy_condition_4 = in_date_range and close < ema200 and close < open and close < low[1]

// Exit conditions
profit_condition = strategy.position_avg_price * (1 + profit_percentage / 100) <= close
exit_condition_1 = in_date_range and (close > ema10 and ema10 > ema20 and ema10 > ema50 and ema10 > ema100 and ema10 > ema200 and close < open) and profit_condition and close < low[1] and close < low[2]
exit_condition_2 = in_date_range and (close < ema10 and close[1] > ema10 and close < close[1] and ema10 > ema20 and ema10 > ema50 and ema10 > ema100 and ema10 > ema200 and close < open) and profit_condition and close < low[1] and close < low[2]

// Exit condition for when today's close is less than the previous day's low
//exit_condition_3 = close < low[1]

// Strategy logic
strategy.entry("Buy1", strategy.long, qty=qt1 * pyramiding, when=buy_condition_1)
strategy.entry("Buy2", strategy.long, qty=qt2 * pyramiding, when=buy_condition_2)
strategy.entry("Buy3", strategy.long, qty=qt3 * pyramiding, when=buy_condition_3)
strategy.entry("Buy4", strategy.long, qty=qt4 * pyramiding, when=buy_condition_4)

strategy.close("Buy1", when=exit_condition_1 or exit_condition_2)
strategy.close("Buy2", when=exit_condition_1 or exit_condition_2)
strategy.close("Buy3", when=exit_condition_1 or exit_condition_2)
strategy.close("Buy4", when=exit_condition_1 or exit_condition_2)

Más.