Períodos dinâmicos para os indicadores

 
Muitos indicadores utilizam um "período" para calcular seus valores. Este é geralmente o número de barras que estão envolvidas no cálculo do próximo valor. Tomemos o RSI, por exemplo. Grosso modo, este indicador mostra a proporção da duração da "corrida" do preço ascendente em relação à duração semelhante da corrida do preço descendente. Quando os períodos são muito curtos, dá uma grande turbulência, e quando os períodos são muito longos, dá uma pulsação fraca próxima de zero. Mas o mercado nem sempre é uniforme. Precisamente, é sempre desigual. Após a divulgação da notícia de mudança das sessões de negociação e em horários curtos, para capturar todos os movimentos o período não deve ser muito longo. Por outro lado, durante uma longa tendência "prolongada" (ou plana), este período deve ser mais longo para acompanhar a tendência, não as oscilações dentro de seu canal.
Alguém tentou construir indicadores que adaptem a duração do período às condições em mudança? Por exemplo, "aqui", quando outro indicador (ou alguns cálculos dentro do indicador atual) em tal faixa, diminuímos proporcionalmente a duração do período para esta barra, e em tais condições (em outra barra) - vice versa.
Se sim - que resultados foram obtidos? E em geral - há um senso comum nesta idéia (autoajuste da duração do período)?
 
Se alguém soubesse como distinguir um flat longo de uma tendência longa, ou apenas como determinar se um flat terminou e uma tendência começou, e ajustar os indicadores ou adaptar seu TS de acordo.
Esse seria o graal.
 
Experimentei-o. Surgiram variantes muito interessantes. Por exemplo, um híbrido de MA e estocástico. Isto é, o ângulo da MA influencia os períodos de estocásticos. Mas você pode imaginar quantas variantes existem? Os resultados são inconsistentes e eu não cheguei a nada de sensato.
 
ForexTools >>:
да и вообще - есть ли здравое зерно в этой идее (автоподстройки длинны периода)?

O grão está lá, mas é necessário um moinho adequado.

A idéia não é nova, procure na base de código e no fórum. Também nos indicadores fornecidos com o MT5.

// O nome inteligente "filtros digitais adaptáveis" significa basicamente a mesma coisa. Mais precisamente, ele generaliza um pouco a idéia.

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

Eu tentei isto através da correlação com as harmônicas de referência,

Mas acontece que às vezes os períodos saltam acentuadamente e depois voltam ao inicial, estragando assim todo o quadro,

E além deste método é muito longo, se em tempo real ainda pode ser usado no testador, mas na otimização é um fracasso total,

Bem, em geral, é um tema promissor.

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

Sim, eu tenho. Muitas vezes e de maneiras diferentes. O resultado certamente melhora (para aplicações padrão), mas ainda é - como já escrevi várias vezes - um ajuste de um par de frases em um polvo, uma vez que a BP, e não uma série de pulsos, é considerada. Por exemplo, um método muito simples (além do que já apresentei na base de código): se a amplitude da barra for menor que um limite especificado, então o período do indicador é aumentado em 1. Ou seja, o comprimento da amostra será igual ao comprimento do segmento, no qual barras significativas (com amplitude maior que o limite) são encontradas. As condições, é claro, podem ser inventadas (logicamente, é claro) de várias maneiras.

Por exemplo, o RSI para esta seleção elementar será assim: eles selecionam barras com um balanço maior que 2 pips (o período aumenta até atingir o mínimo necessário; o período é limitado no topo por um determinado parâmetro - aqui de 14 a 33 (azul - RSI normal, vermelho - com o limite). A janela abaixo mostra como o período mudou.

Não olhe para a 0ª janela - ela apenas não apagou o indicador. Não tem nada a ver com isso. // ))) embora a adaptação do período pelo coeficiente EMA também seja utilizada lá.

===
Sim. Mas - repito - é melhor do que nada, mas ...)))
A propósito, caso você não soubesse, existe o chamado DMI (Dynamic Momentum Index), que também muda o período do RSI, mas dependendo do RMS. Você pode ver a descrição em Williams e Chand.
===
E a abordagem simples que descrevi pode ser aplicada a qualquer coisa, onde haja um comprimento de amostragem. Se você precisar de algo mais complexo, há um indicador de direção especial - MsterSlave (ver na base).

===========
E aqui, onde o limite superior da duração do período é praticamente ilimitado. Isto é, o período de LER estará aumentando até atingir 14 barras com mais de 2 pontos de spread. Como você pode ver, como regra geral, 100 barras para um determinado instrumento e prazo é suficiente para isso - em outras palavras, o período não vai além de 100 barras.
Arquivos anexados:
_rsi_tr.mq4  3 kb
 
Svinozavr >>:

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

Em vez de uma incerteza (que período escolher), introduzimos outra (como escolher um mecanismo para mudar a duração do período) e pensamos que ele eliminará a primeira.
Mas substituir uma incerteza por outra não parece dar um resultado qualitativo. maldição, quase uma filosofia, mãe de todas as ciências.
Graças a todos que responderam - vou tentar digerir, pensar sobre o assunto e encontrar algo.
 
Eu escrevi sobre filosofia como uma piada, mas depois pensei: talvez existam algumas leis gerais que se aplicam ao preço e seus movimentos, por exemplo da física: o princípio de incerteza de Heisenberg. Talvez seja realmente impossível medir (e no nosso caso - prever) "dois parâmetros de grupos diferentes" simultaneamente. Ou seja, podemos saber o tempo exato e o preço, mas não podemos saber a direção do movimento do preço, impulso (uma vela não constrói MA). e vice-versa, conhecendo a direção, impulso, não podemos saber quando e onde está o preço (MA nunca coincide com o preço atual).
 

Um indicador de período adaptativo é uma transferência de uma parte do sistema e da idéia comercial para seu código. Isto é, o tempo depende não do indicador, mas da idéia comercial, e o indicador é apenas uma transformação do preço.
TA tenta identificar os processos que ocorrem objetivamente no mercado e permitir sua utilização enquanto eles ainda existem. Isto é, o processo inicial, e os eventos no gráfico são a oportunidade de detectar em que fase ele se encontra. Desta forma, para a adaptabilidade não é necessário calcular o valor do período, mas os novos pontos de referência. Isto é, há um certo evento de AT (avanço, impulso, etc.) - há um novo ponto no tempo a partir do qual a referência é feita. Na verdade, é uma nova parada t. O indicador é contado na janela adaptativa com um período igual ao deslocamento do momento atual a partir do caso t de referência. Se um novo dado for identificado, o período é calculado a partir dele. Mas talvez a variante seja útil, quando na aparência de um novo evento TA o período de indicador se torna algum valor padrão, o que na verdade significa a captura do preço de formação deste evento. Ou para calcular o período do indicador use o tempo entre os eventos de AT mais próximos

 

Decidi participar da conversa entre os cientistas e contribuir com minha própria receita culinária. Nos últimos anos, tenho feito quase todos os indicadores com parâmetros que mudam de forma adaptativa. Soluções primitivas não funcionam no mercado, cheguei a esta conclusão há muito tempo, e tenho alimentado a idéia de fazer um sistema totalmente adaptativo, mas ainda não tenho tempo para fazê-lo, faço fragmentos de adaptação separados em indicadores. Aqui está um exemplo de um fragmento do último indicador. Em geral, o indicador consiste em vários blocos funcionais, cada bloco formando seus sinais alvo, ao todo são 24 sinais, citarei apenas um bloco que forma canais. Ainda não fiz o autoajuste para a mudança de prazos e símbolos, portanto, cada variante deve 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);
           }
função de início especializado :

     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 você pode ver, os parâmetros dos canais são ajustados adaptativamente dependendo dos indicadores dinâmicos médios das várias últimas barras.
O resultado é a seguinte imagem:


VTN - azul, BTL - amarelo, BTL - rosa, STH - azul, STC - vermelho, STL - roxo;
É claro que esta é uma abordagem simplificada, para uma adaptação mais precisa às fases de mudança do mercado, precisamos de uma solução mais complexa, mas mesmo assim esta variante melhora significativamente as características do indicador.
 
Meu último desenvolvimento ))))