Périodes dynamiques pour les indicateurs

 
De nombreux indicateurs utilisent une "période" pour calculer leurs valeurs. Il s'agit généralement du nombre de barres qui interviennent dans le calcul de la valeur suivante. Prenez l'indice RSI, par exemple. En gros, cet indicateur montre le rapport entre la durée de la hausse des prix et la durée similaire de la baisse des prix. Lorsque les périodes sont très courtes, cela donne une grande turbulence, et lorsque les périodes sont très longues, cela donne une faible pulsation proche de zéro. Mais le marché n'est pas toujours uniforme. Précisément, elle est toujours inégale. Après le communiqué de presse, les changements de session et les périodes courtes ne doivent pas être trop longs pour permettre de saisir tous les mouvements. En revanche, lors d'une longue tendance "prolongée" (ou flat), cette période peut être étendue pour tracer la tendance de la tendance, et non les fluctuations à l'intérieur de son canal.
Quelqu'un a-t-il essayé de construire des indicateurs qui adaptent la durée de la période aux conditions changeantes ? Par exemple, "ici", lorsqu'un autre indicateur (ou certains calculs à l'intérieur de l'indicateur actuel) dans une telle fourchette, nous diminuons proportionnellement la durée de la période pour cette barre, et dans de telles conditions (sur une autre barre) - vice versa.
Dans l'affirmative, quels sont les résultats obtenus ? Et en général, cette idée (l'autotuning de la durée de la période) a-t-elle un sens ?
 
Si quelqu'un savait comment distinguer un long plat d'une longue tendance, ou simplement comment déterminer si un plat est terminé et une tendance a commencé, et ajuster les indicateurs ou adapter leur TS en conséquence.
Ce serait le Graal.
 
Je l'ai essayé. Des variantes très intéressantes en ressortent. Par exemple, un hybride de MA et de stochastique. C'est-à-dire que l'angle de la MA influence les périodes des stochastiques. Mais pouvez-vous imaginer le nombre de variantes qu'il existe ? Les résultats sont incohérents et je n'ai rien trouvé de raisonnable.
 
ForexTools >>:
да и вообще - есть ли здравое зерно в этой идее (автоподстройки длинны периода)?

Le grain est là, mais il faut un moulin approprié.

L'idée n'est pas nouvelle, cherchez dans le codebase et le forum. Également dans les indicateurs fournis avec MT5.

// Le nom astucieux de "filtres numériques adaptatifs" signifie fondamentalement la même chose. Plus précisément, il généralise un peu l'idée.

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

J'ai essayé de le faire par corrélation avec les harmoniques de référence,

Mais il s'avère que parfois, les périodes font des sauts brusques et reviennent ensuite à la période initiale, ce qui gâche l'ensemble du tableau,

Et en plus cette méthode est très longue, si en temps réel elle peut encore être utilisée dans le testeur, mais dans l'optimisation c'est un échec total,

Eh bien, en général, c'est un sujet prometteur.

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

Oui, je l'ai fait. Plusieurs fois et de différentes manières. Le résultat s'améliore certainement (pour les applications standard), mais il s'agit toujours - comme je l'ai déjà écrit plusieurs fois - d'un ajustement d'une paire de phrases sur une pieuvre, puisque c'est la BP, et non une série d'impulsions, qui est considérée. Par exemple, une méthode très simple (en dehors de ce que j'ai déjà présenté dans la base de code) : si l'amplitude de la barre est inférieure à un seuil spécifié, alors la période de l'indicateur est augmentée de 1. C'est-à-dire que la longueur de l'échantillon sera égale à la longueur du segment, dans lequel les barres significatives (avec une amplitude supérieure au seuil) sont trouvées. Les conditions, bien sûr, peuvent être inventées (logiquement, bien sûr) de diverses manières.

Par exemple, le RSI pour cette sélection élémentaire ressemblera à cela : ils sélectionnent les barres avec un swing supérieur à 2 pips (la période augmente jusqu'à ce que le min nécessaire soit atteint ; la période est limitée en haut par un paramètre donné - ici de 14 à 33 (bleu - RSI normal, rouge - avec le seuil). La fenêtre ci-dessous montre comment la période a changé.

Ne regardez pas la 0ème fenêtre - elle n'a simplement pas effacé l'indicateur. Cela n'a rien à voir avec cela. // ))) bien que l'adaptation de la période par le coefficient EMA soit là aussi utilisée.

===
Oui. Mais - je le répète - c'est mieux que rien, mais ...))))
À propos, au cas où vous ne le sauriez pas, il existe ce que l'on appelle le DMI (Dynamic Momentum Index), où la période du RSI change également, mais en fonction du RMS. Vous pouvez voir la description dans Williams et Chand.
===
Et l'approche simple que j'ai décrite peut être appliquée à n'importe quoi, dès lors qu'il existe une longueur d'échantillonnage. Si vous avez besoin de quelque chose de plus complexe, il existe un indicateur de direction spécial - MsterSlave (voir dans la base).

===========
Et ici, où la limite supérieure de la durée des périodes est pratiquement illimitée. C'est-à-dire que la période du RSI augmentera jusqu'à ce qu'il atteigne 14 barres avec un écart de plus de 2 pips. Comme vous pouvez le constater, en règle générale, 100 barres pour un instrument et une période donnés sont suffisantes pour cela - en d'autres termes, la période ne va pas au-delà de 100 barres.
Dossiers :
_rsi_tr.mq4  3 kb
 
Svinozavr >>:

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

Au lieu d'une incertitude (quelle période choisir), on en introduit une autre (comment choisir un mécanisme pour changer la durée de la période) et on pense qu'elle éliminera la première.
Mais remplacer une incertitude par une autre ne semble pas donner un résultat qualitatif. sacrément, presque une philosophie, mère de toutes les sciences.
Merci à tous ceux qui ont répondu. Je vais essayer de digérer tout cela, d'y réfléchir et de proposer quelque chose.
 
J'ai écrit sur la philosophie pour plaisanter, mais ensuite j'ai pensé : peut-être y a-t-il des lois générales qui s'appliquent au prix et à ses mouvements, par exemple en physique : le principe d'incertitude d'Heisenberg. Peut-être qu'il est vraiment impossible de mesurer (et dans notre cas - de prédire) "deux paramètres de groupes différents" simultanément. C'est-à-dire que nous pouvons connaître le moment exact et le prix mais nous ne pouvons pas connaître la direction du mouvement du prix, l'impulsion (une bougie ne construit pas la MA). et vice versa, connaissant la direction, l'impulsion nous ne pouvons pas savoir quand et où se trouve le prix (la MA ne coïncide jamais avec le prix actuel).
 

Un indicateur adaptatif à la période est un transfert d'une partie du système et de l'idée de trading dans son code. C'est-à-dire que le timing ne dépend pas de l'indicateur, mais de l'idée de trading, et l'indicateur est juste une transformation du prix.
L'AT tente d'identifier les processus qui se produisent objectivement sur le marché et permet de les utiliser tant qu'ils existent encore. C'est-à-dire le processus initial, et les événements sur le graphique sont l'occasion de détecter dans quelle phase il se trouve. De cette façon, pour l'adaptabilité, il n'est pas nécessaire de calculer la valeur de la période, mais les nouveaux points de référence. C'est-à-dire qu'il y a un certain événement TA (percée, impulsion, etc., etc.) - il y a un nouveau point dans le temps à partir duquel la référence est faite. En fait, c'est un nouveau t-stop. L'indicateur compte sur la fenêtre adaptative avec une période égale au décalage de l'instant actuel par rapport à l'instant t de référence. Si un nouveau référentiel est identifié, la période est calculée à partir de celui-ci. Mais peut-être que la variante est utile, quand à l'apparition d'un nouvel événement TA la période de l'indicateur devient une valeur par défaut, ce qui signifie en fait la capture du prix de formation de cet événement. Ou pour calculer la période de l'indicateur, utilisez le temps entre les événements TA les plus proches.

 

J'ai décidé de me joindre à la conversation entre les scientifiques et de proposer ma propre recette de cuisine. Depuis quelques années, je fabrique presque tous les indicateurs dont les paramètres changent de manière adaptative. Les solutions primitives ne fonctionnent pas sur le marché, j'en suis arrivé à cette conclusion il y a longtemps, et j'ai nourri l'idée de créer un système entièrement adaptatif, mais je n'ai pas encore eu le temps de le faire, je fais des fragments d'adaptation séparés dans les indicateurs. Voici un exemple d'un fragment du dernier indicateur. En général, l'indicateur se compose de plusieurs blocs fonctionnels, chaque bloc formant ses signaux cibles, en tout il y a 24 signaux, je ne citerai qu'un bloc qui forme des canaux. Je n'ai pas encore fait d'autotuning pour le changement de délais et de symboles, donc chaque variante doit être ajustée individuellement.

//=====================================================================================================================================
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);
           }
fonction de démarrage expert :

     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];
Comme vous pouvez le constater, les paramètres des canaux sont ajustés de manière adaptative en fonction des indicateurs dynamiques moyens des dernières barres.
Le résultat est l'image suivante :


VTN - bleu, BTL - jaune, BTL - rose, STH - bleu, STC - rouge, STL - violet ;
Bien sûr, il s'agit d'une approche simplifiée, pour une adaptation plus précise aux phases changeantes du marché, nous avons besoin d'une solution plus complexe, mais néanmoins cette variante améliore considérablement les caractéristiques de l'indicateur.
 
Mon dernier développement :)))

Raison: