Estrategia de oscilador estocástico suavizado exponencial

El autor:¿ Qué pasa?, Fecha: 2024-01-18 15:53:41
Las etiquetas:

img

Resumen general

La estrategia del Oscilador Estocástico Exponencial Es una versión modificada del indicador estocástico tradicional mediante la adición de un parámetro de peso exponencial para ajustar la sensibilidad del estocástico y generar señales comerciales.

Estrategia lógica

El núcleo de la estrategia estocástica suavizada exponencial se encuentra en el parámetro de peso exponencial ex. La estocástica tradicional se calcula como:

s = 100 * (close - lowest low) / (highest high - lowest low)

Con el parámetro exponencial, la fórmula se convierte:

exp = ex<10? (ex)/(10-ex) : 99   

s = 100 * (close - lowest low) / (highest high - lowest low)  

ks = s>50? math.pow(math.abs(s-50),exp)/math.pow(50,exp-1)+50   
       :-math.pow(math.abs(s-50),exp)/math.pow(50,exp-1)+50  

Al ajustar la exp, se puede cambiar la influencia de s en ks. Aumentar la exp hace que el indicador sea menos sensible mientras que disminuir la exp lo hace más sensible.

Las señales de compra se generan cuando ks cruza desde los niveles de sobrecompra.

Ventajas

En comparación con la estrategia estocástica tradicional, la estrategia del oscilador estocástico suavizado exponencial tiene las siguientes ventajas:

  1. La sensibilidad del estocástico se puede ajustar libremente cambiando el peso exponencial para controlar la frecuencia de negociación.
  2. El aumento del peso exponencial puede filtrar algo de ruido y generar señales comerciales más estables.
  3. La combinación de indicadores de diferentes marcos de tiempo puede lograr una confirmación de varios marcos de tiempo y mejorar la fiabilidad de la señal.

Los riesgos

La estrategia del oscilador estocástico suavizado exponencial también tiene los siguientes riesgos:

  1. Con un peso exponencial demasiado grande, algunas oportunidades de negociación pueden perderse debido al filtrado excesivo de la señal.
  2. El indicador es propenso al ruido y a los cruces erróneos. Los parámetros deben ajustarse para garantizar señales de cruce fiables.
  3. Es necesario identificar el rango óptimo de parámetros para diferentes mercados.

Áreas de mejora

La estrategia del oscilador estocástico suavizado exponencial se puede optimizar a partir de los siguientes aspectos:

  1. Combinar con otros indicadores como el MACD y la media móvil para filtrar las señales y reducir las falsas señales.
  2. Añadir mecanismos de stop loss para controlar los riesgos de manera efectiva.
  3. Optimizar el parámetro de peso exponencial para encontrar las combinaciones óptimas de parámetros.
  4. Aumentar la composibilidad, por ejemplo, combinar con indicadores estacionales, indicadores de estructura del mercado para mejorar aún más la estabilidad.

Conclusión

La estrategia del Oscilador Estocástico Exponencial suavizado genera señales comerciales más confiables al ajustar la sensibilidad del indicador estocástico. Puede rastrear efectivamente las tendencias a mediano y largo plazo y también se puede optimizar en una estrategia a corto plazo. Con mayor composibilidad y optimización de parámetros, tiene el potencial de lograr rendimientos rentables más consistentes.


/*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"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © faytterro

//@version=5
strategy("Exponential Stochastic Strategy", overlay=false, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
len=input.int(14, "length") 
ex=input.int(2, title="exp", minval=1, maxval=10)
exp= ex<10? (ex)/(10-ex) : 99
s=100 * (close - ta.lowest(low, len)) / (ta.highest(high, len) - ta.lowest(low, len))
ks=s>50? math.pow(math.abs(s-50),exp)/math.pow(50,exp-1)+50 :
 -math.pow(math.abs(s-50),exp)/math.pow(50,exp-1)+50
plot(ks, color= color.white)
bot=input.int(20)
top=input.int(80)
longCondition = ta.crossover(ks, bot) and bar_index>0
if (longCondition)
    strategy.entry("My Long Entry Id", strategy.long)

shortCondition = ta.crossunder(ks, top) and bar_index>0
if (shortCondition)
    strategy.entry("My Short Entry Id", strategy.short)
//    strategy.close("My Long Entry Id")
alertcondition(longCondition, title = "buy")
alertcondition(shortCondition, title = "sell")
h1=hline(top)
h2=hline(bot)
h3=hline(100)
h4=hline(0)
fill(h1,h3, color= color.rgb(255,0,0,200-top*2))
fill(h2,h4, color= color.rgb(0,255,0,bot*2))

Más.