Descripción:
Oscilador Estocástico estándar con función de sensibilidad.
Este indicador conserva los mismos parámetros que el Estocástico estándar, pero añade un parámetro adicional de "sensibilidad" (Sens en la ventana de parámetros).
Permite considerar solo las oscilaciones que estén por debajo de un umbral predefinido, especificado en puntos. De esta forma, podemos reducir significativamente las señales falsas.
El Estocástico clásico posiciona el precio actual entre un precio máximo y un mínimo durante un número determinado de barras, definido por el valor %K (Kperiod), y no distingue la diferencia entre los extremos, por ejemplo, 1 punto o 100 puntos. En ambos casos, los resultados serán los mismos, y obtendremos las señales de sobrecompra/sobreventa.
Sin embargo, al utilizar un umbral, podemos considerar solo oscilaciones significativas.En la Fig. 1 (EURUSD, 1M), se presenta el gráfico de precios, el estocástico estándar y el indicador propuesto.
Imagen:

Fig 1.
Los campos del indicador son los mismos que los de iStochastic, con la diferencia de que hay un parámetro adicional Sens - sensibilidad.
Los buffers de salida son los mismos: 0 - valor del Estocástico en sí, 1 - línea de señal.
double iCustom(string symbol, int timeframe, "_StochNR", int %Kperiod, int %Dperiod, int slowing, int method, int price_field, int mode, int shift); // StochNR con nuevo campo Sens añadido double iStochastic(string symbol, int timeframe, int %Kperiod, int %Dperiod, int slowing, int method, int price_field, int mode, int shift) // estocástico estándar
Para un uso práctico, se puede llamar como se especifica arriba, pero es mejor hacerlo de otra manera. Simplemente añade un poco de código a tu función Stoch:
double Stoch(int Kperiod, int Slowing, int PriceFild, double sens, int i) { // precios máximos y mínimos double max,min,c; for(int j=i; j<i+Slowing; j++) { if(PriceFild==1) { // por Close max+=Close[ArrayMaximum(Close,Kperiod,j)]; min+=Close[ArrayMinimum(Close,Kperiod,j)]; } else { // por High/Low max+=High[ArrayMaximum(High,Kperiod,j)]; min+=Low[ArrayMinimum(Low,Kperiod,j)]; } c+=Close[j]; } double delta=max-min; if(delta<sens) { sens/=2; max+=sens; min-=sens; } delta=max-min; if(delta==0) double s0=1; else s0=(c-min)/delta; return(100*s0); }
Es evidente que si necesitas una línea de señal, necesitarás una media móvil adicional de su valor. Otra opción es obtenerla del primer buffer de iCustom, pero será más lento.
Como ves, ahora el nombre es más informativo, incluye el tipo de cálculo del precio. Si la sensibilidad se define mayor que 0, su valor se añade al nombre del oscilador.
Nota del editor:
Ten en cuenta que es una traducción directa de la versión original en ruso.
Si tienes alguna pregunta para el autor, sugerencias o comentarios, lo mejor es publicarlos allí.
Si encuentras útil este código para el trading o fines educativos, no olvides agradecer al autor.
Publicaciones relacionadas
- Ideal ZigZag: Un Indicador Rápido para MetaTrader 5
- iWPRSignAlert: Tu nuevo aliado en MetaTrader 5
- iDeMarkerSignAlert: Tu nuevo indicador para MetaTrader 5
- iStochKomposterAlert: El Indicador de Señales para MetaTrader 5 con Alertas
- Niveles Históricos Fuertes: Herramienta Clave para Traders de MetaTrader 5