Differenzialrechnung, Beispiele. - Seite 5

 
Aleksey Panfilov:

Zum Thema Fourier: Das ist ein sehr interessantes Thema. Wenn Interesse besteht, werden wir das Thema in regelmäßigen Abständen aufgreifen.

Höchstwahrscheinlich werden die Hauptprobleme bei der Problemstellung auftreten (aufgrund einer anderen Methode). Soweit ich das verstanden habe, wählt der Indikator die Frequenzen mit der größten Amplitude aus dem Fourier-Spektrum aus.

Ich hatte die Idee, denFourier-Indikator an eine bereits gemittelte Polynomlinie anzuschrauben. Ich vermute, dass sich die extrapolierten Messwerte langsamer ändern würden.


Sie denken im Allgemeinen in die richtige Richtung.

Extrapolationen mit Polynom- und Fourier-Methoden sind von völlig anderer Natur. Die Fourier-Extrapolation kann nur auf einen flachen Markt angewandt werden, da dieser periodisch ist (diese Linie ist eine Summe von Sinuskurven unterschiedlicher Frequenz, Phase und Amplitude), und sie tendiert immer nach hinten.

Die polynomiale Extrapolation hingegen eignet sich gut für die Trendbestimmung, da sie aufgrund ihrer schrittweisen Natur ständig versucht, nach unten oder oben zu "fliegen".
Es ist daher sehr sinnvoll, die beiden Methoden zu kombinieren. Natürlich werden Sie mit einer einfachen Zusammenfassung nicht durchkommen. Aber ich habe eine klare Vorstellung davon, wie man sie am besten kombiniert, und das muss mit Hilfe der Mustererkennung geschehen. Und ich habe bereits einiges an Arbeit zu diesem Thema geleistet. Meinen ersten Erkennungsalgorithmus habe ich sogar schon vor längerer Zeit als Open Source veröffentlicht. Dieser Algorithmus findet lineare (Polynom von Grad 1) Kanäle in allen TFs. Obwohl er der primitivste und langsamste meiner Algorithmen ist, habe ich selbst auf dem Markt keinen besseren gefunden (ich rühme mich unter ).

Die Fourier-Extrapolation ist viel langsamer als die Polynom-Extrapolation, daher wäre es schön, wenn man versuchen könnte, sie zu beschleunigen; allerdings kann man mit der derzeitigen Geschwindigkeit noch recht gut arbeiten.

 
Evgeny Belyaev:

Das haben alle gemacht... geschrieben...


Um eine Reihe von Vergleichen anzustellen, sollten wir auf das zurückgreifen, was bereits bekannt ist.

 
      a1_Buffer[i] =iMA(NULL,0,145,0,MODE_EMA,PRICE_OPEN,i);// a1_Buffer[i]=  ((open[i] - Znach)    +5061600*a1_Buffer[i+1 ]-7489800   *a1_Buffer[i+2 ]+4926624*a1_Buffer[i+3 ]-1215450*a1_Buffer[i+4 ])/1282975;

      a5_Buffer[i+92]=a1_Buffer[i];   if(i<=1) { for(z=92-1;z>=0;z--){        a5_Buffer[i+0+z]=  2*a5_Buffer[i+1+z]  -  1*a5_Buffer[i+2+z]  ;  }}



      a2_Buffer[i]= ( (open[i] - Znach)  + 72   *a2_Buffer[i+1 ] )/73;
      
      a6_Buffer[i+92]=a2_Buffer[i];   if(i<=1) { for(z=92-1;z>=0;z--){         a6_Buffer[i+0+z]=  2*a6_Buffer[i+1+z] -  1*a6_Buffer[i+2+z]  ;  }}

Die erste Liniea1_Buffer wird als klassischer EMA mit einer Periode von 145 (72*2+1) dargestellt, der auf den Eröffnungspunkten basiert und 72 Schritte nach links verschoben ist. Die breite graue Linie auf dem Bild.

Die zweite Zeilea5_Buffer zeigt die Extrapolation mit einer geraden Linie auf den letzten beiden Punkten der ersten Zeile. Die graue Linie ist im Bilddünner.

Die dritte Liniea2_Buffer wird direkt aus der Differenzengleichung ersten Grades gezeichnet. Dieblaue Linie in der Abbildung.

1*Y_(-1)-2*Y_0+1*Y_(+1)=0 Differenzgleichung ersten Grades für gleichmäßig verteilte Punkte.

2*Y_(-1)-3*Y_0+1*Y_(+2)=0 Differenzgleichung ersten Grades für die Schulter in 2 Intervallen.

72*Y_(-1)-73*Y_0+1*Y_(+72)=0 Differenzgleichung erster Ordnung für die Schulter in 72 Intervallen.

Es handelt sich im Wesentlichen um eine archimedische Hebelgleichung ersten Grades.

Die vierte Zeilea6_Buffer zeigt die Extrapolation mit Hilfe einer geraden Linie aus den letzten beiden Punkten der dritten Zeile. Die rote Linie im Bild, die auf dem Anfangspunkt basiert.

Wir können die vollständige Identität der beiden Konstruktionen erkennen. Ich habe ein Beispiel gegeben, um die Umwandlung des Codes und die Umwandlung der klassischen EMA-Formel in die Differenzform nicht zu zeigen.

Ich möchte anmerken, dass dies bedeutet, dass wir die Konstruktion mit Polynomen, EMA eines bestimmten Grades, innerhalb der etablierten Terminologie nennen können. Denn die Frage der Benennung der konstruierten Linien bleibt offen. )

Wenn es Ihnen nichts ausmacht, natürlich:))

 
Nikolai Semko:

Meinen ersten Erkennungsalgorithmus habe ich sogar schon vor längerer Zeit als Open Source veröffentlicht. Dieser Algorithmus findet lineare (Polynom von Grad 1) Kanäle in allen TFs. Obwohl er der primitivste und langsamste meiner Algorithmen ist, habe ich selbst auf dem Markt keinen besseren gefunden(ich rühme mich unter).

Meiner Meinung nach zu Recht. :))
 

Ich möchte darauf hinweisen, dass der Punkt entweder durch vorherige Berechnung der Koeffizienten(a2_Buffer blaue Linie) oder durch Entnahme des erforderlichen Wertes aus der neu zu zeichnenden Linie(a6_Buffer gelbe Linie) extrapoliert werden kann. Allerdings ist die zweite Variante natürlich ressourcenintensiv.

      a1_Buffer[i] =iMA(NULL,0,145,0,MODE_EMA,PRICE_OPEN,i);// a1_Buffer[i]=  ((open[i] - Znach)    +5061600*a1_Buffer[i+1 ]-7489800   *a1_Buffer[i+2 ]+4926624*a1_Buffer[i+3 ]-1215450*a1_Buffer[i+4 ])/1282975;

      a5_Buffer[i+92]=a1_Buffer[i];   if(i<=1100) { for(z=92-1;z>=0;z--){        a5_Buffer[i+0+z]=  2*a5_Buffer[i+1+z]  -  1*a5_Buffer[i+2+z]  ;  }}



      a2_Buffer[i]= 37* a1_Buffer[i] -36 *a1_Buffer[i+1];
      
      a6_Buffer[i+56]=a5_Buffer[i+56];  


 

Nun wird durch ein Polynom zweiten Grades (EMA zweiten Grades) gemittelt und mit Hilfe einer Geraden auf verschiedene Hebelwirkungen extrapoliert.

      a1_Buffer[i]=  ((open[i] - Znach)    +5328*a1_Buffer[i+1 ]-   2628 *a1_Buffer[i+2 ])/2701;

      a5_Buffer[i+92]=a1_Buffer[i];   if(i<=1100) { for(z=92-1;z>=0;z--){        a5_Buffer[i+0+z]=  2*a5_Buffer[i+1+z]  -  1*a5_Buffer[i+2+z]  ;  }}



      a2_Buffer[i+20]=a5_Buffer[i+20]; 
      
      a3_Buffer[i+38]=a5_Buffer[i+38]; 
      
      a4_Buffer[i+56]=a5_Buffer[i+56];
        
      a6_Buffer[i+74]=a5_Buffer[i+74];
    

Die erste Abbildung zeigt das Plot-Schema, in der zweiten Abbildung werden alle Linien , die nicht neu gezeichnet werden, bis zum letzten Wert gezeichnet.

Die Indikatoren im Untergeschoss unterscheiden sich nur durch den eingestellten Zeilenversatz.



 

Mittelwertbildung durch Polynom zweiten Grades (EMA zweiten Grades) und Extrapolation auf verschiedene Hebelwirkungen durch eine quadratische Parabel (Polynom zweiten Grades).

      a1_Buffer[i]=  ((open[i] - Znach)    +5328*a1_Buffer[i+1 ]-   2628 *a1_Buffer[i+2 ])/2701;

      a5_Buffer[i+92]=a1_Buffer[i];   if(i<=1100) { for(z=92-1;z>=0;z--){        a5_Buffer[i+0+z]=  3*a5_Buffer[i+1+z]  -  3*a5_Buffer[i+2+z]  +  1*a5_Buffer[i+3+z]  ;  }}


      a2_Buffer[i+20]=a5_Buffer[i+20]; 
      
      a3_Buffer[i+38]=a5_Buffer[i+38]; 
      
      a4_Buffer[i+56]=a5_Buffer[i+56];
        
      a6_Buffer[i+74]=a5_Buffer[i+74];
  

Die erste Abbildung ist ein Plot-Schema, in der zweiten Abbildung werden alle Linien, die nicht neu gezeichnet werden, bis zum letzten Wert gezeichnet.

Die Indikatoren im Untergeschoss unterscheiden sich nur durch den eingestellten Zeilenversatz.


 

Ich habe das Thema ein paar Mal durchgelesen und verstehe nicht: Worüber reden wir?

Ein Zitat ist ein Zufallsprozess, der durch alle möglichen analytischen Kurven angenähert werden kann, insbesondere durch die Kurven hier im Thread.

Aber es gibt einen ganz wesentlichen Punkt.

Die Koeffizienten in diesen analytischen Kurven sind Konstanten, was eine sehr gewagte Idee ist.

Da wir uns einem Zufallsprozess annähern, sind die Koeffizienten ebenfalls RARE Größen und sollten eher BEWERTET als berechnet werden, mit allem, was dazu gehört. So kann man zum Beispiel leicht den Wert eines Koeffizienten ermitteln, seinen Wert sehen und bei der Auswertung feststellen, dass der Fehler bei der Bestimmung des Koeffizienten ein Vielfaches des Wertes selbst ist.

Und der Ärger ist damit noch nicht zu Ende. Ein Fehler ist ein Fehler, wenn er normal verteilt ist, und wenn er NICHT stationär ist, dann gibt es überhaupt keinen Koeffizienten, obwohl wir ihn sehen können.

Aus diesem Grund erweisen sich alle Indikatoren als nicht funktionsfähig. Sie können aber unbeschreiblich schön sein.


PS.

In einem Beitrag weiter oben wurde darauf hingewiesen, dass die Zukunft nicht aus der Vergangenheit hervorgeht. Diese traurige Tatsache soll hier offengelegt werden.

 
SanSanych Fomenko:

Ich habe den Thread ein paar Mal durchgelesen und verstehe nicht, worüber wir hier reden.

Ein Zitat ist ein Zufallsprozess, der durch alle möglichen analytischen Kurven angenähert werden kann, insbesondere durch die Kurven hier im Thread.

Aber es gibt einen ganz wesentlichen Punkt.

Die Koeffizienten in diesen analytischen Kurven sind Konstanten, was eine sehr gewagte Idee ist.

Da wir uns einem Zufallsprozess annähern, sind die Koeffizienten ebenfalls RARE Größen und sollten eher BEWERTET als berechnet werden, mit allem, was dazu gehört. So kann man zum Beispiel leicht den Wert eines Koeffizienten ermitteln, seinen Wert sehen und bei der Auswertung feststellen, dass der Fehler bei der Bestimmung des Koeffizienten ein Vielfaches des Wertes selbst ist.

Und der Ärger ist damit noch nicht zu Ende. Ein Fehler ist ein Fehler, wenn er normal verteilt ist, und wenn er NICHT stationär ist, gibt es überhaupt keinen Koeffizienten, obwohl wir ihn sehen können.

Aus diesem Grund erweisen sich alle Indikatoren als nicht funktionsfähig. Sie können aber unbeschreiblich schön sein.


PS.

In einem Beitrag weiter oben wurde darauf hingewiesen, dass die Zukunft nicht aus der Vergangenheit hervorgeht. Diese traurige Tatsache soll hier offengelegt werden.

Vielen Dank für Ihren Beitrag.

Auch nicht vergessen:

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Wissen Sie, wie man Kanäle vorbereitet?

SanSanych Fomenko, 2017.12.31 11:00

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Wissen Sie, wie man Kanäle vorbereitet?

Aleksey Ivanov, 2017.12.31 10:48

Ja, ich habe vergessen zu erwähnen, dass ich diese gleitenden Wahrscheinlichkeitsverteilungen unverzögert erstellt habe(gleitende Durchschnitte, die aus 2n+1 Punkten gebildet werden, hinken um n Punkte hinterher, dasselbe gilt natürlich auch für Verteilungen), für die gerade das Modell

GARCH prognostiziert eine Reihe von Punkten und erstellt ein Modell der nicht entarteten Verteilung am Ende der Geschichte (was wichtig ist), unter Berücksichtigung zusätzlicher Statistiken von ihnen zur Verfügung gestellt. Meine Frage an SanSanych(SanSanych Fomenko): "Ist dieser Ansatz eher für Sprünge geeignet oder wird er auch Probleme verursachen?


Ich kann Ihre Methode nicht bewerten und eine Antwort geben.

Sie versuchen, eine Idee in Erwägung zu ziehen, von denen es unzählige auf dem Markt gibt, aber wie eine überwältigende Anzahl von Autoren von Ideen stellen Sie sich nicht die Frage: Auf welcher Grundlage wird sich alles, was Sie in den historischen Daten sehen, in der Zukunft wiederholen? Oder genauer gesagt: Hat Ihre Idee überhaupt eine Vorhersagekraft?

Die Autoren von GARCH kamen nicht sofort zu diesem Modell, und übrigens in einem erbitterten Kampf mit den Ideologen des effizienten Marktes, den sie als stationär verstanden.

Aus der Statistik wissen wir, dass stationäre Prozesse vorhergesagt werden können, aber nicht-stationäre Prozesse sind sehr schlecht vorhersagbar. Genau das ist das Problem. Die Nicht-Stationarität hat nutzlose Berge von Mathematik in anderen Bereichen äußerst effektiv gemacht.

GARCH-Ideologie:

  • Die zugrunde liegende Prämisse ist NICHT die Stationarität
  • formulieren wir die Bedeutung des Wortes Nicht-Stationarität genau
  • Schritt für Schritt von NICHT zu Stationarität zu Stationarität übergehen.
  • Je näher die Stationarität, desto besser ist die Fähigkeit des Algorithmus, die Zukunft vorherzusagen.


Geht Ihre Idee in diese Richtung?


Ich denke, es wird sich auf jeden Fall als nützlich erweisen.
 

Mittelwertbildung durch Polynom vierten Grades mit Hebelwirkung 72 (EMA vierten Grades) und Extrapolation auf verschiedene Hebelwirkungen unter Verwendung einer Geraden.

      a1_Buffer[i]=((open[i] - Znach)    +5061600*a1_Buffer[i+1 ]-7489800    *a1_Buffer[i+2 ]+4926624*a1_Buffer[i+3 ]-1215450*a1_Buffer[i+4 ])/1282975;

      a5_Buffer[i+92]=a1_Buffer[i];   if(i<=1100) { for(z=92-1;z>=0;z--){        a5_Buffer[i+0+z]=  2*a5_Buffer[i+1+z]  -  1*a5_Buffer[i+2+z]  +  0*a5_Buffer[i+3+z]  ;  }}


      a2_Buffer[i+20]=a5_Buffer[i+20]; 
      
      a3_Buffer[i+38]=a5_Buffer[i+38]; 
      
      a4_Buffer[i+56]=a5_Buffer[i+56];
        
      a6_Buffer[i+74]=a5_Buffer[i+74];
 

Die erste Abbildung zeigt das Plot-Schema, in der zweiten Abbildung werden alle Linien, die nicht neu gezeichnet werden, bis zum letzten Wert gezeichnet.

Die Indikatoren im Untergeschoss unterscheiden sich nur durch den eingestellten Zeilenversatz.


 

Mittelwertbildung durch Polynom vierten Grades mit Hebelwirkung 72 (EMA vierten Grades) undExtrapolation auf verschiedene Hebelwirkungen unter Verwendungeiner quadratischen Parabel (Polynom zweiten Grades).

      a1_Buffer[i]=((open[i] - Znach)    +5061600*a1_Buffer[i+1 ]-7489800    *a1_Buffer[i+2 ]+4926624*a1_Buffer[i+3 ]-1215450*a1_Buffer[i+4 ])/1282975;

      a5_Buffer[i+92]=a1_Buffer[i];   if(i<=1100) { for(z=92-1;z>=0;z--){        a5_Buffer[i+0+z]=  3*a5_Buffer[i+1+z]  -  3*a5_Buffer[i+2+z]  +  1*a5_Buffer[i+3+z]  ;  }}


      a2_Buffer[i+20]=a5_Buffer[i+20]; 
      
      a3_Buffer[i+38]=a5_Buffer[i+38]; 
      
      a4_Buffer[i+56]=a5_Buffer[i+56];
        
      a6_Buffer[i+74]=a5_Buffer[i+74];

Die erste Abbildung ist ein Plot-Schema, in der zweiten Abbildung werden alle Linien, die nicht neu gezeichnet werden, bis zum letzten Wert gezeichnet.

Die Indikatoren im Untergeschoss unterscheiden sich nur durch den eingestellten Zeilenversatz.