Estrategia de trading dinámica de stop-profit y stop-loss basada en tres líneas negativas consecutivas y media móvil

SMA EMA
Fecha de creación: 2024-05-09 16:42:35 Última modificación: 2024-05-09 16:42:35
Copiar: 0 Número de Visitas: 627
1
Seguir
1617
Seguidores

Estrategia de trading dinámica de stop-profit y stop-loss basada en tres líneas negativas consecutivas y media móvil

Descripción general

La estrategia de negociación se basa en la configuración de tres líneas negativas consecutivas y un sistema de medianías para juzgar las señales de negociación. La estrategia de negociación maneja el riesgo de negociación a través de un modo dinámico de parada y pérdida, y los puntos de parada y pérdida se determinan en función de la posición y el porcentaje de cambio de precio de la línea media a corto plazo. La estrategia solo opera en un período de tiempo determinado.

Principio de estrategia

  1. Calcula el número de iones consecutivos, cuando aparece un número especificado de iones consecutivos (default 3) se considera que se forma una señal múltiple.
  2. Utiliza dos líneas de media para ayudar a determinar la tendencia y el momento de la negociación. Por defecto, utiliza la media de 10 días y la media de 200 días. Sólo se considera hacer más cuando el precio está por encima de la media de 200 días.
  3. Configure el punto de parada y el punto de pérdida dinámicos. El punto de parada es un porcentaje determinado por encima del precio de apertura (el 1.5% por defecto) y el punto de parada es un porcentaje determinado por debajo del precio de apertura (el 1% por defecto).
  4. Otra condición para la posición cerrada es que el precio cambia de posición con respecto a la línea media de 10 días. Si se mantiene una posición múltiple, el precio retrocede desde la parte superior de la línea media hacia la parte inferior, entonces la posición cerrada.
  5. Las estrategias se ejecutan solo en un rango de tiempo determinado, determinado por la fecha de inicio y la fecha de finalización.

Ventajas estratégicas

  1. La combinación de las formas de precios y el sistema de línea uniforme permite capturar mejor las oportunidades de tendencia.
  2. El control de riesgos y ganancias se puede manejar con flexibilidad a través de paradas y paradas dinámicas. El punto de parada se eleva constantemente a medida que los precios aumentan, lo que hace que las ganancias corran; el punto de parada limita la pérdida máxima.
  3. Utilizando el cambio de posición de la media a corto plazo como señal de equilibrio, se puede responder rápidamente a la reversión repentina de los precios.
  4. Especificar un rango de horas de negociación para evitar el comercio en períodos especiales como el cierre del mercado o los días festivos reduce el riesgo.

Riesgo estratégico

  1. La forma de una línea negativa continua no puede determinar completamente la reversión de la tendencia, y es posible que los precios sigan subiendo después de una línea negativa continua, lo que hace que la estrategia no funcione.
  2. Un punto de parada fijo puede no ser capaz de hacer frente a las fuertes fluctuaciones del mercado. Cuando la tendencia es fuerte, el punto de parada puede estar demasiado bajo, lo que lleva a una salida temprana; cuando la fluctuación se intensifica, el punto de parada puede estar demasiado cerca, lo que lleva a pérdidas frecuentes.
  3. El juicio de la posición de la línea media a corto plazo puede retrasarse, especialmente cuando los precios cambian rápidamente y se puede haber perdido el mejor momento para cerrar una posición.
  4. La falta de medidas de gestión de posiciones y control de riesgos en las estrategias, los puntos de entrada y el tamaño de las posiciones son fijos, lo que puede conducir a un riesgo excesivo en una sola operación.

Dirección de optimización de la estrategia

  1. Se pueden introducir más indicadores técnicos para ayudar a juzgar, como MACD, RSI, etc., para mejorar la fiabilidad de la señal.
  2. Optimización del cálculo de los puntos de parada y pérdida, como el uso de ATR o fluctuación para ajustar dinámicamente, o en combinación con el soporte de resistencia para establecer puntos.
  3. Para las señales de posición cerrada, se puede considerar el uso de más condiciones de confirmación, como cambios en el volumen de transacciones, proporción de titulares de posiciones en blanco, etc., para evitar señales erróneas.
  4. Introducir medidas de gestión de posiciones y control de riesgos, como el tamaño de las posiciones en cada operación según el saldo de la cuenta y el nivel de riesgo, establecer límites de riesgo generales, etc.
  5. Para la configuración de parámetros, como el número de líneas continuas, el ciclo promedio, etc., se puede realizar una prueba de optimización para buscar la combinación óptima de parámetros.

Resumir

La estrategia de negociación utiliza una serie de formas de línea negativa y un sistema de línea uniforme para juzgar las oportunidades de negociación de tendencias, y al mismo tiempo utiliza los cambios en la posición de la línea media en el corto plazo para controlar el riesgo. La estrategia tiene una idea clara y es adecuada para los comerciantes que captan las tendencias a medio y largo plazo.

Código Fuente de la Estrategia
/*backtest
start: 2023-05-09 00:00:00
end: 2024-05-08 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)