Estrategia de cruce de oscilador estocástico y media móvil con stop loss y filtro estocástico

El autor:¿ Qué pasa?, Fecha: 2024-04-26 16:10:11
Las etiquetas:- ¿Qué es?La SMA

img

Resumen general

Esta estrategia combina el oscilador estocástico con un promedio móvil, generando señales comerciales observando las condiciones de sobrecompra y sobreventa del indicador estocástico y la tendencia del promedio móvil. Produce una señal corta cuando el indicador estocástico está en la zona de sobrecompra y la media móvil está a la baja, y una señal larga cuando está en la zona de sobreventa y la media móvil está al alza. Además, la estrategia introduce un filtro de indicadores estocásticos, que también puede generar señales comerciales correspondientes cuando la línea estocástica K cruza la línea D después de permanecer por debajo de 50 durante un cierto número de líneas K. La estrategia también establece un Stop Loss para controlar el riesgo.

Principio de la estrategia

  1. Calcule el oscilador estocástico para obtener la línea K y la línea D. Los parámetros son ajustables, incluido el período estocástico, el suavizado K, el suavizado D, la zona de sobrecompra y la zona de sobreventa.

  2. Calcular la media móvil, utilizando el precio de cierre por defecto, con un período ajustable.

  3. Cuando la línea K se mantiene por debajo de 50 durante un cierto número de K líneas, genera una señal de filtro.

  4. Condiciones para generar una señal larga: el indicador estocástico cruza hacia arriba en la zona de sobreventa O el indicador estocástico filtra la señal Y la media móvil es hacia arriba.

  5. Condiciones para generar una señal corta: el indicador estocástico cruza hacia abajo en la zona de sobrecompra O el indicador estocástico filtra la señal Y la media móvil es hacia abajo.

  6. Condición de cierre de la posición larga: la línea estocástica K cruza por encima de la media móvil Y la media gira hacia abajo.

  7. Condición de cierre de posición corta: la línea estocástica K cruza por debajo de la media móvil Y la media gira hacia arriba.

  8. La gestión de posiciones utiliza un porcentaje fijo de fondos, 10% por defecto.

Análisis de ventajas

  1. Al combinar las características de sobrecompra/sobreventa y tendencia, puede perseguir y matar en una tendencia.

  2. El filtro del indicador estocástico evita el comercio frecuente en mercados oscilantes.

  3. La configuración Stop Loss ayuda a controlar las reducciones.

  4. La estructura del código es clara, los parámetros son ajustables y es adecuado para una mayor optimización.

Análisis de riesgos

  1. El Oscilador Estocástico tiene un cierto retraso, que puede perder los mejores puntos de compra y venta.

  2. La exactitud de la captura de órdenes en los puntos de inflexión de la tendencia es deficiente y la frecuencia de los stop-loss puede ser alta.

  3. La gestión de fondos de tipo fijo tiene una gran reducción en el caso de pérdidas consecutivas.

Dirección de optimización

  1. Introduzca más condiciones de filtrado, como el comportamiento de los precios, otros indicadores auxiliares, etc., para mejorar la precisión de la señal.

  2. Divide las señales en fuertes y débiles, y aumenta las posiciones cuando aparecen señales fuertes.

  3. Optimizar el juicio de los puntos de inflexión de tendencia para capturar más movimientos del mercado.

  4. Optimizar la gestión de las posiciones, considerar el ajuste de las posiciones en función de los ratios de pérdidas y ganancias variables, etc.

  5. Prueba diferentes combinaciones de parámetros para encontrar los parámetros óptimos.

Resumen de las actividades

Basada en el Oscilador Estocástico, esta estrategia combina promedios móviles para juzgar tendencias, al tiempo que también utiliza la función de filtrado del propio Indicador Estocástico, generando señales comerciales relativamente confiables. La idea general de la estrategia es clara y adecuada para su uso en mercados de tendencia. Sin embargo, debido al retraso del Oscilador Estocástico, su rendimiento en los puntos de inflexión del mercado puede ser pobre, y su adaptabilidad y robustez general necesitan un mayor examen.


/*backtest
start: 2024-03-01 00:00:00
end: 2024-03-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"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/
// © Pablo_2uc

//@version=5
strategy("Estrategia Estocástico + MA con Stop Loss y Filtro Estocástico", overlay=true)

// Parámetros del Estocástico
length = input.int(14, title="Longitud Estocástico")
smoothK = input.int(3, title="Suavizado K")
smoothD = input.int(3, title="Suavizado D")
oversold = input.int(20, title="Sobreventa")
overbought = input.int(80, title="Sobrecompra")

// Parámetros de la Media Móvil
maLength = input.int(9, title="Longitud MA")
maSource = input(close, title="Fuente MA")

// Capital inicial
capital = 5000

// Tamaño de posición (10% del capital)
positionSize = capital * 0.10

// Stop Loss (2% del precio de entrada)
stopLossPercent = input.int(2, title="Stop Loss (%)") / 100

// Número de ruedas para el filtro estocástico
filterPeriods = input.int(12, title="Ruedas de Filtro Estocástico")

// Cálculo del Estocástico
k = ta.sma(ta.stoch(close, high, low, length), smoothK)
d = ta.sma(k, smoothD)

// Cálculo de la Media Móvil
ma = ta.sma(maSource, maLength)

// Filtro estocástico
stochasticFilter = ta.sma(k > 50 ? 1 : 0, filterPeriods)

// Condiciones de entrada en largo y corto
longCondition = (ta.crossunder(k, oversold) or ta.crossover(stochasticFilter, 1)) and ma > ma[1]
shortCondition = (ta.crossover(k, overbought) or ta.crossover(stochasticFilter, 1)) and ma < ma[1]

// Condiciones de salida
exitLongCondition = ta.crossover(k, ma) and ma < ma[1]
exitShortCondition = ta.crossunder(k, ma) and ma > ma[1]

// Estrategia
if (longCondition)
    strategy.entry("Long", strategy.long, qty=positionSize)
    strategy.exit("Exit Long", "Long", stop=close * (1 - stopLossPercent))
if (shortCondition)
    strategy.entry("Short", strategy.short, qty=positionSize)
    strategy.exit("Exit Short", "Short", stop=close * (1 + stopLossPercent))

// Cierre de posiciones
if (exitLongCondition)
    strategy.close("Long")
if (exitShortCondition)
    strategy.close("Short")

Relacionados

Más.