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.
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.
Calcular la media móvil, utilizando el precio de cierre por defecto, con un período ajustable.
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.
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.
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.
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.
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.
La gestión de posiciones utiliza un porcentaje fijo de fondos, 10% por defecto.
Al combinar las características de sobrecompra/sobreventa y tendencia, puede perseguir y matar en una tendencia.
El filtro del indicador estocástico evita el comercio frecuente en mercados oscilantes.
La configuración Stop Loss ayuda a controlar las reducciones.
La estructura del código es clara, los parámetros son ajustables y es adecuado para una mayor optimización.
El Oscilador Estocástico tiene un cierto retraso, que puede perder los mejores puntos de compra y venta.
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.
La gestión de fondos de tipo fijo tiene una gran reducción en el caso de pérdidas consecutivas.
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.
Divide las señales en fuertes y débiles, y aumenta las posiciones cuando aparecen señales fuertes.
Optimizar el juicio de los puntos de inflexión de tendencia para capturar más movimientos del mercado.
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.
Prueba diferentes combinaciones de parámetros para encontrar los parámetros óptimos.
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")