Periodos dinámicos para los indicadores

 
Muchos indicadores utilizan un "período" para calcular sus valores. Suele ser el número de barras que intervienen en el cálculo del siguiente valor. Por ejemplo, el RSI. A grandes rasgos, este indicador muestra la relación entre la duración de la "racha" de precios al alza y la duración similar de la racha de precios a la baja. Cuando los periodos son muy cortos, da una gran turbulencia, y cuando los periodos son muy largos, da una débil pulsación cercana a cero. Pero el mercado no siempre es uniforme. Precisamente, siempre es desigual. Después de la publicación de la noticia el cambio de las sesiones de negociación y en tiempos cortos, para captar todos los movimientos el período no debe ser demasiado largo. Por otro lado, durante una tendencia larga "prolongada" (o plana) este periodo debería ser más largo para seguir la tendencia, no las oscilaciones dentro de su canal.
¿Ha intentado alguien construir indicadores que adapten la duración del periodo a las condiciones cambiantes? Por ejemplo, "aquí", cuando otro indicador (o algunos cálculos dentro del indicador actual) en tal rango, disminuimos proporcionalmente la longitud del período para esta barra, y en tales condiciones (en otra barra) - viceversa.
En caso afirmativo, ¿qué resultados se obtuvieron? Y en general, ¿tiene sentido esta idea (el autoajuste de la longitud del periodo)?
 
Si alguien supiera cómo distinguir un plano largo de una tendencia larga, o simplemente cómo determinar si un plano ha terminado y una tendencia ha comenzado, y ajustar los indicadores o adaptar su TS en consecuencia.
Eso sería el grial.
 
Lo he probado. Salen variantes muy interesantes. Por ejemplo, un híbrido de MA y estocástico. Es decir, el ángulo de la MA influye en los períodos de los estocásticos. Pero, ¿se imagina cuántas variantes hay? Los resultados son inconsistentes y no he llegado a nada sensato.
 
ForexTools >>:
да и вообще - есть ли здравое зерно в этой идее (автоподстройки длинны периода)?

El grano está ahí, pero se necesita un molino adecuado.

La idea no es nueva, busca en el código base y en el foro. También en los indicadores suministrados con MT5.

// El ingenioso nombre "filtros digitales adaptativos" significa básicamente lo mismo. Más concretamente, generaliza un poco la idea.

 
ForexTools >>:
Очень много индикаторов используют для рассчета своих значений так называемый "период". Обычно это количество баров которое учавствует в расчете очередного значения. Возьмем например RSI. Если очень грубо - этот индикатор показывает отношение длинны "пробега" цены вверх по отношению к аналогичной длине пробега цены вниз. При очень маленьких периодах получается жуткая болтанка, при очень длинных - нечто слабопульсирующее около нуля. Однако рынок не всегда равномерен. Точнее всегда не равномерен. После выхода новостей смены торговых сессий да еще на коротких таймах, чтобы поймать все движения период нужно выбирать не очень большой. С другой стороны во время длинного "затяжного" тренда (или флэта) этот период вполне разумно увеличить чтобы отслеживать тенденцию самого тренда, а не колебаний внутри его канала.
Кто нибудь пробовал строить индикаторы которые сами адаптируют длину периода под меняющиеся условия? Вот, например "здесь", когда какойто другой индикатор (или какието вычисления внутри текущего индикатора) в таком то диапазоне мы пропорционально сокращаем длинну перода для этого бара, а при таких то условиях (уже на другом баре) - наоборот увеличиваем.
Если да - то какие получались результаты? да и вообще - есть ли здравое зерно в этой идее (автоподстройки длинны периода)?

He probado esto a través de la correlación con los armónicos de referencia,

Pero resulta que a veces los periodos dan un salto brusco y luego vuelven al inicial, lo que estropea todo el panorama,

Y además este método es muy largo, si en tiempo real todavía se puede utilizar en el probador, pero en la optimización es un fracaso total,

Bueno, en general, es un tema prometedor.

 
ForexTools >>:
Очень много индикаторов используют для рассчета своих значений так называемый "период". Обычно это количество баров которое учавствует в расчете очередного значения. Возьмем например RSI. Если очень грубо - этот индикатор показывает отношение длинны "пробега" цены вверх по отношению к аналогичной длине пробега цены вниз. При очень маленьких периодах получается жуткая болтанка, при очень длинных - нечто слабопульсирующее около нуля. Однако рынок не всегда равномерен. Точнее всегда не равномерен. После выхода новостей смены торговых сессий да еще на коротких таймах, чтобы поймать все движения период нужно выбирать не очень большой. С другой стороны во время длинного "затяжного" тренда (или флэта) этот период вполне разумно увеличить чтобы отслеживать тенденцию самого тренда, а не колебаний внутри его канала.
Кто нибудь пробовал строить индикаторы которые сами адаптируют длину периода под меняющиеся условия? Вот, например "здесь", когда какойто другой индикатор (или какието вычисления внутри текущего индикатора) в таком то диапазоне мы пропорционально сокращаем длинну перода для этого бара, а при таких то условиях (уже на другом баре) - наоборот увеличиваем.
Если да - то какие получались результаты? да и вообще - есть ли здравое зерно в этой идее (автоподстройки длинны периода)?

Sí, lo he hecho. Muchas veces y de diferentes maneras. El resultado ciertamente mejora (para aplicaciones estándar), pero sigue siendo -como ya he escrito varias veces- un ajuste de un par de frases en un pulpo, ya que se considera la PA, y no una serie de pulsos. Por ejemplo, un método muy simple (aparte de lo que ya he presentado en la base de código): si la amplitud de la barra es menor que un umbral especificado, entonces el período del indicador se incrementa en 1. Es decir, la longitud de la muestra será igual a la longitud del segmento, en el que se pueden encontrar barras significativas (con amplitud mayor que el umbral). Las condiciones, por supuesto, se pueden inventar (lógicamente, por supuesto) de diversas maneras.

Por ejemplo, el RSI para esta selección elemental se verá así: seleccionan las barras con una oscilación mayor de 2 pips (el período aumenta hasta que se alcanza el mínimo necesario; el período está limitado en la parte superior por un parámetro dado - aquí de 14 a 33 (azul - RSI normal, rojo - con el umbral). La ventana siguiente muestra cómo ha cambiado el periodo.

No mire la ventana 0 - simplemente no borró el indicador. No tiene nada que ver. // ))) aunque allí también se utiliza la adaptación del periodo por el coeficiente EMA.

===
Sí. Pero -repito- es mejor que nada, pero...))
Por cierto, por si no lo sabías, existe el llamado DMI (Dynamic Momentum Index), donde el periodo del RSI también cambia, pero en función del RMS. Puede ver la descripción en Williams y Chand.
===
Y el sencillo planteamiento que he descrito puede aplicarse a cualquier cosa, donde haya una longitud de muestreo. Si necesitas algo más complejo, hay un indicador de dirección especial - MsterSlave (ver en la base).

===========
Y aquí, donde el límite superior de la duración del periodo es prácticamente ilimitado. Es decir, el periodo del RSI irá aumentando hasta llegar a 14 barras con más de 2 pips de spread. Como puede ver, por regla general, basta con 100 barras para un instrumento y un marco temporal determinados, es decir, el período no va más allá de 100 barras.
Archivos adjuntos:
_rsi_tr.mq4  3 kb
 
Svinozavr >>:

но все же это - как уже неодн. писал - примерка фрачной пары на осьминога, т.к....

En lugar de una incertidumbre (qué periodo elegir), introducimos otra (cómo elegir un mecanismo para cambiar la duración del periodo) y pensamos que eliminará la primera.
Pero sustituir una incertidumbre por otra no parece dar un resultado cualitativo. maldita sea, casi una filosofía, madre de todas las ciencias.
Gracias a todos los que han respondido. Intentaré digerirlo, pensarlo y sacar algo en claro.
 
Escribí lo de la filosofía como una broma, pero luego pensé: tal vez haya algunas leyes generales que se apliquen al precio y sus movimientos, por ejemplo de la física: el principio de incertidumbre de Heisenberg. Tal vez es realmente imposible medir (y en nuestro caso - predecir) "dos parámetros de diferentes grupos" simultáneamente. Es decir, podemos saber la hora exacta y el precio, pero no podemos saber la dirección del movimiento del precio, el impulso (una vela no construye MA). y viceversa, sabiendo la dirección, el impulso no podemos saber cuándo y dónde está el precio (MA nunca coincide con el precio actual).
 

Un indicador que se adapta al periodo es una transferencia de una parte del sistema y de la idea de negociación en su código. Es decir, el momento no depende del indicador, sino de la idea de negociación, y el indicador es sólo una transformación del precio.
El AT trata de identificar los procesos que ocurren objetivamente en el mercado y permite utilizarlos mientras existan. Es decir, el proceso inicial, y los eventos en el gráfico son la oportunidad de detectar en qué fase se encuentra. De este modo, para la adaptabilidad no es necesario calcular el valor del periodo, sino los nuevos puntos de referencia. Es decir, hay un determinado acontecimiento de AT (ruptura, impulso, etc., etc.) - hay un nuevo punto en el tiempo desde el que se hace la referencia. De hecho, se trata de una nueva parada en T. El indicador se cuenta en la ventana adaptativa con un periodo igual al desplazamiento del momento actual desde el caso t de referencia. Si se identifica un nuevo punto de referencia, el período se calcula a partir de él. Pero tal vez la variante es útil, cuando en la aparición de un nuevo evento de AT el período del indicador se convierte en algún valor por defecto, que en realidad significa la captura del precio de la formación de este evento. O bien, para calcular el período del indicador, utilice el tiempo entre los eventos de AT más cercanos

 

Decidí unirme a la conversación entre los científicos y contribuir con mi propia receta de cocina. Desde hace un par de años hago casi todos los indicadores con parámetros que cambian de forma adaptativa. Las soluciones primitivas no funcionan en el mercado, llegué a esta conclusión hace mucho tiempo, y he estado alimentando la idea de hacer un sistema totalmente adaptativo, pero todavía no tengo tiempo para hacerlo, hago fragmentos de adaptación separados en indicadores. He aquí un ejemplo de un fragmento del último indicador. En general, el indicador se compone de varios bloques funcionales, cada bloque forma sus señales de destino, en total hay 24 señales, sólo citaré un bloque que forma canales. Todavía no he hecho el autotuning para el cambio de plazos y símbolos, por lo que cada variante debe ser ajustada individualmente.

//=====================================================================================================================================
extern int PIB= 33;
extern int PIS= 37;
extern double PMB= 3.98;
extern double PMS= 3.98;
//====================================================================================================================================

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init() {

        PPB=NormalizeDouble(PIB*Point,Digits);
        PPS=NormalizeDouble(PIS*Point,Digits);
        PMB=NormalizeDouble(PMB*Point,Digits);
        PMS=NormalizeDouble(PMS*Point,Digits);
           }
función de inicio experto :

     PR=NormalizeDouble((High[1]-Low[1])+(High[2]-Low[2])+(High[3]-Low[3])+(High[4]-Low[4])+(High[5]-Low[5])+(High[6]-Low[6])+(High[7]-Low[7]),Digits);
     PRB=NormalizeDouble(PMB/PR,Digits); 
     PRS=NormalizeDouble(PMS/PR,Digits); 
      
      BTH[0]=High[0]-PR/17-PRB/2;
  if ((MathAbs(BTH[0]-BTH[1])<=PPB))
      BTH[0]=BTH[1];
      
      BTC[0]=Close[0]-PR/10;
  if ((MathAbs(BTC[0]-BTC[1])<=PPB))
      BTC[0]=BTC[1];
      
      BTC[0]=0.4*BTC[0]+0.6*BTC[1];
      
      BTL[0]=Low[0]-PR/17+PRB/2;
  if ((MathAbs(BTL[0]-BTL[1])<=PPB))
      BTL[0]=BTL[1];
  
      STH[0]=High[0]+PR/17-PRS/2;
  if ((MathAbs(STH[0]-STH[1])<=PPS))
      STH[0]=STH[1];
      
      STC[0]=Close[0]+PR/10;
  if ((MathAbs(STC[0]-STC[1])<=PPS))
      STC[0]=STC[1];
      
      STC[0]=0.4*STC[0]+0.6*STC[1];
      
      STL[0]=Low[0]+PR/17+PRS/2;
  if ((MathAbs(STL[0]-STL[1])<=PPS))
      STL[0]=STL[1];
Como puede ver, los parámetros de los canales se ajustan de forma adaptativa en función de los indicadores dinámicos medios de las últimas barras.
El resultado es la siguiente imagen:


VTN - azul, BTL - amarillo, BTL - rosa, STH - azul, STC - rojo, STL - morado;
Por supuesto, este es un enfoque simplificado, para una adaptación más precisa a las fases cambiantes del mercado necesitamos una solución más compleja, pero sin embargo esta variante mejora significativamente las características del indicador.
 
Mi última novedad )))

Razón de la queja: