Dynamische Perioden für Indikatoren

 
Viele Indikatoren verwenden einen "Zeitraum" zur Berechnung ihrer Werte. Dies ist in der Regel die Anzahl der Takte, die in die Berechnung des nächsten Wertes einfließen. Nehmen Sie zum Beispiel RSI. Grob gesagt zeigt dieser Indikator das Verhältnis zwischen der Länge des Preisanstiegs und der entsprechenden Länge des Preisrückgangs an. Wenn die Perioden sehr kurz sind, entsteht eine große Turbulenz, und wenn die Perioden sehr lang sind, entsteht eine schwache Pulsation nahe Null. Aber der Markt ist nicht immer einheitlich. Genau, sie ist immer ungleichmäßig. Nach der Veröffentlichung von Nachrichten sollte der Zeitraum nicht zu lang sein, um alle Bewegungen zu erfassen. Andererseits kann dieser Zeitraum bei einem langen "verlängerten" Trend (oder einer Flaute) ausgedehnt werden, um die Tendenz des Trends und nicht die Schwankungen innerhalb seines Kanals zu verfolgen.
Hat jemand versucht, Indikatoren zu entwickeln, die die Periodenlänge an veränderte Bedingungen anpassen? Zum Beispiel, "hier", wenn ein anderer Indikator (oder einige Berechnungen innerhalb der aktuellen Indikator) in einem solchen Bereich, wir proportional zu verringern die Länge der Periode für diese Bar, und in solchen Bedingungen (auf einem anderen bar) - umgekehrt.
Wenn ja - welche Ergebnisse wurden erzielt? Und ganz allgemein - ist diese Idee (automatische Abstimmung der Periodenlänge) vernünftig?
 
Wenn jemand wüsste, wie man ein langes Flat von einem langen Trend unterscheidet, oder wie man feststellt, ob ein Flat beendet ist und ein Trend begonnen hat, und die Indikatoren entsprechend anpasst oder seine TS anpasst.
Das wäre der Gral.
 
Ich habe es ausprobiert. Es kommen sehr interessante Varianten heraus. Zum Beispiel eine Mischung aus MA und Stochastik. D.h. der Winkel des MA beeinflusst die Perioden der Stochastik. Aber können Sie sich vorstellen, wie viele Varianten es gibt? Die Ergebnisse sind uneinheitlich, und ich bin zu keinem vernünftigen Ergebnis gekommen.
 
ForexTools >>:
да и вообще - есть ли здравое зерно в этой идее (автоподстройки длинны периода)?

Das Getreide ist vorhanden, aber es wird eine geeignete Mühle benötigt.

Die Idee ist nicht neu, suchen Sie in der Codebasis und im Forum. Auch in den mit MT5 gelieferten Indikatoren.

// Der schlaue Name "adaptive digitale Filter" bedeutet im Grunde das Gleiche. Genauer gesagt, sie verallgemeinert die Idee ein wenig.

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

Ich habe dies durch Korrelation mit Referenzharmonischen versucht,

Es stellt sich jedoch heraus, dass die Zeiträume manchmal sprunghaft ansteigen und dann wieder zum Ausgangswert zurückkehren, wodurch das Gesamtbild gestört wird,

Und außerdem ist diese Methode sehr lang, wenn in Echtzeit kann es noch in den Tester verwendet werden, aber in der Optimierung ist es ein totaler Fehler,

Nun, im Allgemeinen ist es ein vielversprechendes Thema.

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

Ja, das habe ich. Viele Male und auf unterschiedliche Weise. Das Ergebnis ist sicherlich besser (für Standardanwendungen), aber es ist immer noch - wie ich schon mehrfach geschrieben habe - eine Anpassung eines Satzpaares an einen Oktopus, weil BP und nicht eine Reihe von Impulsen berücksichtigt wird. Zum Beispiel eine sehr einfache Methode (abgesehen von dem, was ich bereits in der Code-Basis vorgestellt habe): Wenn die Amplitude des Balkens kleiner als ein bestimmter Schwellenwert ist, dann wird die Periode des Indikators um 1 erhöht, d.h. die Länge der Stichprobe ist gleich der Länge des Segments, in dem signifikante (mit einer Amplitude größer als der Schwellenwert) Balken gefunden werden. Bedingungen können natürlich (logischerweise) auf verschiedene Weise erfunden werden.

Zum Beispiel wird der RSI für diese elementare Auswahl so aussehen: Sie wählen Balken mit einem Swing von mehr als 2 Pips aus (die Periode erhöht sich, bis der erforderliche Mindestwert erreicht ist; die Periode wird nach oben durch einen vorgegebenen Parameter begrenzt - hier von 14 bis 33 (blau - normaler RSI, rot - mit dem Schwellenwert). Das folgende Fenster zeigt, wie sich der Zeitraum verändert hat.

Schauen Sie nicht auf das 0. Fenster - es hat den Indikator einfach nicht gelöscht. Das hat nichts damit zu tun. // ))), obwohl auch hier die Periodenanpassung durch den EMA-Koeffizienten verwendet wird.

===
Ja. Aber - ich wiederhole - es ist besser als nichts, aber ...)))
Übrigens, falls Sie es noch nicht wussten: Es gibt den so genannten DMI (Dynamic Momentum Index), bei dem sich die RSI-Periode ebenfalls ändert, allerdings in Abhängigkeit vom RMS. Sie können die Beschreibung in Williams und Chand sehen.
===
Und der von mir beschriebene einfache Ansatz kann auf alles angewendet werden, wo es eine Stichprobenlänge gibt. Wenn Sie etwas Komplexeres brauchen, gibt es einen speziellen Lenkungsanzeiger - MsterSlave (siehe in der Basis).

===========
Und hier, wo die Obergrenze der Periodenlänge praktisch unbegrenzt ist. D.h. die Periode des RSI wird immer länger, bis er 14 Balken mit mehr als 2 Pips Spread erreicht. Wie Sie sehen, reichen in der Regel 100 Balken für ein bestimmtes Instrument und einen bestimmten Zeitrahmen aus - mit anderen Worten, der Zeitraum geht nicht über 100 Balken hinaus.
Dateien:
_rsi_tr.mq4  3 kb
 
Svinozavr >>:

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

Anstelle einer Ungewissheit (welche Periode zu wählen ist) führen wir eine weitere ein (wie ein Mechanismus zur Änderung der Periodenlänge zu wählen ist) und denken, dass dadurch die erste Ungewissheit beseitigt wird.
Aber eine Unsicherheit durch eine andere zu ersetzen, scheint kein qualitatives Ergebnis zu bringen. verdammt, fast eine Philosophie, die Mutter aller Wissenschaften.
Vielen Dank an alle, die geantwortet haben - ich werde versuchen, sie zu verdauen, darüber nachzudenken und mir etwas einfallen zu lassen.
 
Das mit der Philosophie habe ich als Scherz geschrieben, aber dann dachte ich: Vielleicht gibt es einige allgemeine Gesetze, die für den Preis und seine Bewegungen gelten, zum Beispiel aus der Physik: Heisenbergs Unschärferelation. Vielleicht ist es wirklich unmöglich, "zwei Parameter aus verschiedenen Gruppen" gleichzeitig zu messen (und in unserem Fall vorherzusagen). D.h. wir können die genaue Zeit und den Preis kennen, aber nicht die Richtung der Preisbewegung, den Impuls (eine Kerze bildet keinen MA). Und umgekehrt, wenn wir die Richtung, den Impuls kennen, können wir nicht wissen, wann und wo der Preis ist (MA fällt nie mit dem aktuellen Preis zusammen).
 

Ein periodenadaptiver Indikator ist eine Übertragung eines Teils des Systems und der Handelsidee in seinen Code. D.h. das Timing hängt nicht vom Indikator ab, sondern von der Handelsidee, und der Indikator ist nur eine Transformation des Preises.
TA versucht, die objektiv auftretenden Prozesse auf dem Markt zu identifizieren und sie zu nutzen, solange sie noch existieren. D.h. der Anfangsprozess, und die Ereignisse auf dem Diagramm sind die Gelegenheit zu erkennen, in welcher Phase er sich befindet. Auf diese Weise ist es für die Anpassungsfähigkeit nicht notwendig, den Wert der Periode zu berechnen, sondern die neuen Referenzpunkte. D.h. es gibt ein bestimmtes TA-Ereignis (Durchbruch, Impuls, etc., etc.) - es gibt einen neuen Zeitpunkt, ab dem der Bezug hergestellt wird. Es handelt sich dabei um einen neuen T-Stop. Der Indikator zählt auf dem adaptiven Fenster mit einer Periode, die der Verschiebung des aktuellen Zeitmoments gegenüber dem Referenzzeitpunkt t-case entspricht. Wenn ein neuer Bezugspunkt ermittelt wird, wird die Periode von diesem aus berechnet. Aber vielleicht ist die Variante nützlich, wenn beim Auftreten eines neuen TA-Ereignisses die Periode des Indikators zu einem Standardwert wird, der tatsächlich die Erfassung des Preises der Bildung dieses Ereignisses bedeutet. Oder Sie können den Zeitraum des Indikators anhand der Zeit zwischen den nächsten TA-Ereignissen berechnen

 

Ich beschloss, mich an der Unterhaltung der Wissenschaftler zu beteiligen und mein eigenes Kochrezept beizusteuern. In den letzten Jahren habe ich fast alle Indikatoren mit sich adaptiv verändernden Parametern entwickelt. Primitive Lösungen funktionieren auf dem Markt nicht, zu diesem Schluss bin ich schon vor langer Zeit gekommen, und ich habe die Idee genährt, ein vollständig adaptives System zu schaffen, aber ich habe noch keine Zeit dafür, ich mache separate Anpassungsfragmente in Indikatoren. Hier ist ein Beispiel für ein Fragment des neuesten Indikators. Im Allgemeinen besteht der Indikator aus mehreren Funktionsblöcken, wobei jeder Block seine Zielsignale bildet, insgesamt gibt es 24 Signale, ich werde nur einen Block nennen, der Kanäle bildet. Ich habe noch kein Autotuning für den Wechsel von Zeitrahmen und Symbolen vorgenommen, daher sollte jede Variante individuell angepasst werden.

//=====================================================================================================================================
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);
           }
Expertenstartfunktion :

     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];
Wie Sie sehen können, werden die Parameter der Kanäle in Abhängigkeit von den durchschnittlichen dynamischen Indikatoren der letzten Balken adaptiv angepasst.
Das Ergebnis ist das folgende Bild:


VTN - blau, BTL - gelb, BTL - rosa, STH - blau, STC - rot, STL - lila;
Natürlich ist dies ein vereinfachter Ansatz, für eine genauere Anpassung an die sich verändernden Marktphasen brauchen wir eine komplexere Lösung, aber dennoch verbessert diese Variante die Eigenschaften des Indikators erheblich.
 
Meine neueste Entwicklung )))