Estrategia de trading basada en tres velas negras consecutivas y medias móviles dobles

SMA SMA200
Fecha de creación: 2024-05-14 17:30:35 Última modificación: 2024-05-14 17:30:35
Copiar: 3 Número de Visitas: 506
1
Seguir
1617
Seguidores

Estrategia de trading basada en tres velas negras consecutivas y medias móviles dobles

Descripción general

La estrategia es una estrategia de negociación basada en tres líneas negativas y dos líneas medias consecutivas. La idea principal de la estrategia es: abrir más posiciones cuando aparezcan tres líneas negativas consecutivas y el precio de cierre actual sea superior a la media de 200 días; cerrar posiciones cuando la media de 10 días se cruce con el precio o cuando el precio alcance el punto de parada o de pérdida.

Principio de estrategia

  1. Calcula el número de tramos consecutivos. Si el precio de cierre baja, el número de tramos consecutivos se suma a 1; de lo contrario, el número de tramos consecutivos se restablece a 0.
  2. Calcula el promedio de 10 días y el promedio de 200 días.
  3. En el caso de que el precio de cierre sea superior al promedio de 10 días, el precio de cierre será el siguiente:
  4. Para determinar si se cumplen los requisitos de entrada: tres líneas negativas consecutivas, el tiempo actual está dentro del rango especificado y el precio de cierre actual es superior al promedio de 200 días.
  5. Para determinar si se cumplen los requisitos de salida: la línea media de 10 días se cruza con el precio, o el precio alcanza el punto de parada o de pérdida.
  6. Si cumple con los requisitos de entrada y no tiene posiciones en ese momento, puede abrir más posiciones.
  7. Si se cumplen las condiciones de salida y se tiene una posición en ese momento, la posición está cerrada.

Ventajas estratégicas

  1. El análisis de los movimientos de los precios y de los factores de la línea media permite aprovechar las oportunidades en situaciones de tendencia y de oscilación.
  2. El control de pérdidas se establece para controlar el riesgo de manera efectiva.
  3. Limitar el tiempo de ejecución de la estrategia evita que se asuma un riesgo excesivo en ciertos períodos específicos.
  4. La lógica del código es clara, legible y fácil de entender y optimizar.

Riesgo estratégico

  1. El juicio de los hilos continuos puede ser demasiado sencillo y fácil de provocar señales erróneas.
  2. La configuración de stop loss puede no ser lo suficientemente flexible, y puede ocasionar operaciones frecuentes o oportunidades perdidas cuando el mercado es muy volátil.
  3. La falta de consideración de factores extraordinarios como eventos inesperados o noticias importantes puede suponer un riesgo adicional.

Dirección de optimización de la estrategia

  1. Se puede considerar la introducción de más indicadores técnicos, como RSI, MACD, etc., para construir una lógica de juicio de señales más sólida.
  2. Se puede optimizar la configuración de stop loss, introducir stop loss dinámico o stop loss basado en indicadores de volatilidad como ATR.
  3. Se puede estudiar el impacto de diferentes configuraciones de parámetros en la estrategia, como raíces negativas continuas, periodicidad promedio, etc., para encontrar la combinación óptima de parámetros.
  4. Puede incorporarse a la administración de posiciones, ajustando las posiciones según la dinámica de los diferentes entornos del mercado, mejorando la eficiencia de la utilización de fondos.

Resumir

La estrategia construye un modelo de negociación sencillo y fácil de entender mediante la combinación de líneas de inflexión continua y líneas de doble equilibrio. La estrategia, al mismo tiempo que capta oportunidades de tendencia, también establece ciertas medidas de control de riesgo. Sin embargo, la estrategia tiene espacio para una optimización adicional en el juicio de señales y control de riesgos.

Código Fuente de la Estrategia
/*backtest
start: 2023-05-08 00:00:00
end: 2024-05-13 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Estrategia de Trading", overlay=true)

// Definir el número de cierres de velas decrecientes consecutivas
var int cierres_decrecientes_consecutivos = 0
num_cierres_decrecientes = input.int(3, title="Número de cierres decrecientes", minval=1)

// Definir el porcentaje de cambio para cerrar la operación
porcentaje_cierre_arriba = input.float(1.5, title="Porcentaje de cierre arriba (%)", step=0.1)
porcentaje_cierre_abajo = input.float(1.0, title="Porcentaje de cierre abajo (%)", step=0.1)

// Definir las medias móviles para el cierre de la operación
periodos_media_movil_cierre = input.int(10, title="Períodos de la media móvil para cierre")
periodos_media_movil_200 = input.int(200, title="Períodos de la media móvil de 200")

// Definir el rango de fechas para la simulación
start_date = timestamp(2024, 1, 1, 0, 0)
end_date = timestamp(2024, 12, 31, 23, 59)

// Calcular la media móvil para el cierre de la operación
sma_cierre = ta.sma(close, periodos_media_movil_cierre)
sma_200 = ta.sma(close, periodos_media_movil_200)

// Calcular si el precio está por encima o por debajo de la media móvil para el cierre de la operación
precio_por_encima_sma_cierre = close > sma_cierre
precio_por_debajo_sma_cierre = close < sma_cierre

// Calcular si se han producido num_cierres_decrecientes consecutivos
if (ta.change(close) < 0)
    cierres_decrecientes_consecutivos := cierres_decrecientes_consecutivos + 1
else
    cierres_decrecientes_consecutivos := 0

es_cierres_consecutivos = cierres_decrecientes_consecutivos >= num_cierres_decrecientes

// Definir condiciones de entrada y salida de la estrategia dentro del rango de fechas y con el precio por encima de la SMA de 200
condicion_entrada = es_cierres_consecutivos and close > sma_200
condicion_cierre_sma = (precio_por_encima_sma_cierre[1] and not precio_por_encima_sma_cierre) or (not precio_por_encima_sma_cierre[1] and precio_por_encima_sma_cierre)

// Calcular precios de salida basados en porcentajes
precio_salida_arriba = strategy.position_avg_price * (1 + porcentaje_cierre_arriba / 100)
precio_salida_abajo = strategy.position_avg_price * (1 - porcentaje_cierre_abajo / 100)

// Ejecutar operación en largo dentro del rango de fechas y con el precio por encima de la SMA de 200
if (condicion_entrada and strategy.opentrades == 0)
    strategy.entry("Long", strategy.long)

// Cerrar operación en largo si se cumple la condición de salida por cambio en el cruce de la media móvil dentro del rango de fechas
if (strategy.position_size > 0 and condicion_cierre_sma)
    strategy.close("Long")

// Cerrar operación en largo si el precio alcanza el porcentaje de cierre arriba o abajo dentro del rango de fechas
strategy.exit("Stop Loss", "Long", limit=precio_salida_arriba, stop=precio_salida_abajo)

// Plot para visualizar la media móvil para el cierre de la operación
plot(sma_cierre, color=color.red)

// Plot para visualizar la SMA de 200
plot(sma_200, color=color.blue)