Hilfe bei Fourier - Seite 9

 
ANG3110 писал (а):

Das ist kein schlechtes Ergebnis, wenn wir ein Grundgerüst für die Fourier-Zerlegung erstellen. Insbesondere können wir die Regression leicht nach vorne extrapolieren und die Fourierkurve relativ zu ihr aufzeichnen. Es ist möglich, eine Mouvette als Stütze zu verwenden und die Summe der Oberschwingungen in einem separaten Fenster so darzustellen, als ob die Mouvette linear fortgesetzt würde. Man kann einen gleichmäßig variierenden Mittelwert wie T3 zugrunde legen, der um eine halbe Periode nach hinten verschoben ist, so dass er genau zu den Daten passt, und das Ende mit einer Parabel extrapolieren, die auf einen minimalen Effektivwert eingestellt ist, und relativ zu dieser Extrapolation die Fourierkurve bilden. In jedem Fall ist die Wahrscheinlichkeit hoch, dass sich Zyklen wiederholen, wenn wir mehrere Varianten der Fourier-Extrapolation mit unterschiedlichen Perioden erstellen und jede Variante im Hinblick auf den minimalen RMS-Wert optimieren. Wenn die Lesarten mehrerer Varianten übereinstimmen, können sie als wahrscheinlich angesehen werden. Bei weiterem Vorlauf oder Rückstand wird ein korrigierendes Differenzsignal erzeugt, das zur Selbstoptimierung oder Neuberechnung verwendet werden kann. Dies erinnert an den FATF-Detektor in Radioempfängern, der am effizientesten und immun gegen Störungen ist.
Eigentlich ist es kein so großes Problem, Fourier-Reihen auszugeben, ohne in der Zeit vorauszudenken, so dass das Ende nahe an der Reihe liegt. Es ist die Ausgabe von Fourier zukünftiger Zitate, die interessant ist. Sie haben Screenshots Ihres Indikators gepostet, auf denen die Fourier-Reihe für die zukünftige Zeit dargestellt ist, die gut mit der Realität übereinstimmt. Nach welchen Prinzipien funktioniert sie?
 
shobvas писал (а):

Nun, eigentlich ist es kein so großes Problem, die Fourier-Reihe auszugeben, ohne in der Zeit voranzukommen, so dass das Ende nahe an der Reihe liegt. Es ist interessant, die Fourier-Reihe zukünftiger Zitate auszugeben. Sie haben Screenshots Ihres Indikators gepostet, auf denen die Fourier-Reihe für die zukünftige Zeit dargestellt ist, was gut mit der Realität übereinstimmt. Nach welchen Prinzipien funktioniert sie?
Dort wird die Zerlegung relativ zu LinearRegressin vorgenommen. Wie bei einem Radio ist es für eine optimale Hörbarkeit wünschenswert, auf ein Minimum an Rauschen und ein Maximum an Signal abzustimmen, d. h. die Abstimmung erfolgt mit einem Minimum an RMS. Um die Periode einfach zu ändern, wird ein Skript für Geraden oder Regressionskanäle angewendet. Die Enddaten werden erfasst und an das Anzeigegerät übertragen. Wenn wir also die Linien verschieben, ändern wir sofort die Periode und berechnen das gesamte Bild neu. Der Kommentar zeigt den Effektivwert an, und die Anpassungen werden entsprechend dem minimalen Effektivwert plus einer kleinen Verschiebung nach Augenmaß vorgenommen, damit die Höhen und Tiefen so weit wie möglich übereinstimmen. Wir haben auch die Möglichkeit hinzugefügt, die Anzahl der Obertöne durch die Funktion GetAsyncKeyState(int nVirtKey) zu ändern. Durch Drücken der entsprechenden Pfeiltasten auf der Tastatur können wir dann schnell die Anzahl der Obertöne hinzufügen oder abziehen. Das Gleiche geschieht mit Hilfe eines Skripts, das alles zeichnet. Ich habe bereits früher ein wenig über Einstellungen und Varianten geschrieben. Für unterschiedliche Zeiträume und unterschiedliche Plausibilität wird die Anzahl der Oberschwingungen unterschiedlich angenommen.
Es können jedoch mehr oder weniger zufriedenstellende Ergebnisse erzielt werden, wenn die Mindestharmonische 12 bis 24 Stunden und der Mindestzeitraum 2-3 Tage oder mehr beträgt. Dies ist für die tägliche Vorhersage. Die Technik für die globale Vorhersage ist die gleiche, aber die Zeiträume sind natürlich länger. Je nach Skala stimmen die monatlichen und jährlichen Langfristprognosen sehr gut mit den realen Daten überein, insbesondere bei einigen Frequenzen, die sich mit sehr hoher Wahrscheinlichkeit periodisch wiederholen. Um Statistiken über diese Frequenzen zu erhalten, wird ein ausgeklügelter Spektrumanalysator erstellt, der auch über den gesamten Zeitbereich gezogen werden kann.
 
ANG3110 писал (а):
Die Zerlegung dort erfolgt relativ zu LinearRegressin. Das Heck ist wie ein Radio, um die beste Hörbarkeit zu erreichen, ist es wünschenswert, für minimales Rauschen und maximales Signal abzustimmen, d.h. die Abstimmung erfolgt nach dem minimalen RMS. Um die Periode einfach zu ändern, wird ein Skript für Geraden oder Regressionskanäle angewendet. Die Enddaten werden erfasst und an das Anzeigegerät übertragen. Wenn wir also die Linien verschieben, ändern wir sofort die Periode und berechnen das gesamte Bild neu. Der Kommentar zeigt den Effektivwert an, und die Anpassungen werden entsprechend dem minimalen Effektivwert plus einer kleinen Verschiebung nach Augenmaß vorgenommen, damit die Höhen und Tiefen so weit wie möglich übereinstimmen. Wir haben auch die Möglichkeit hinzugefügt, die Anzahl der Obertöne durch die Funktion GetAsyncKeyState(int nVirtKey) zu ändern. Durch Drücken der entsprechenden Pfeiltasten auf der Tastatur können wir dann schnell die Anzahl der Obertöne hinzufügen oder abziehen. Das Gleiche geschieht mit Hilfe eines Skripts, das alles zeichnet. Ich habe bereits früher ein wenig über Einstellungen und Varianten geschrieben. Für unterschiedliche Zeiträume und unterschiedliche Plausibilität wird die Anzahl der Oberschwingungen unterschiedlich angenommen.
Es können jedoch mehr oder weniger zufriedenstellende Ergebnisse erzielt werden, wenn die Mindestharmonische 12 bis 24 Stunden und der Mindestzeitraum 2-3 Tage oder mehr beträgt. Dies ist für die tägliche Vorhersage. Die Technik für die globale Vorhersage ist die gleiche, aber die Zeiträume sind natürlich länger. Je nach Skala stimmen die langfristigen monatlichen und jährlichen Vorhersagen sehr gut mit den realen Daten überein, insbesondere bei einigen Frequenzen, die sich mit sehr hoher Wahrscheinlichkeit periodisch wiederholen. Um Statistiken über diese Frequenzen zu erhalten, wird ein ausgeklügelter Spektrumanalysator erstellt, der auch über den gesamten Zeitbereich gezogen werden kann.

Ich verstehe das nicht wirklich...
Die Fourier-Reihe wird aus der Preisdifferenz und dem Wert der Regressionslinie gebildet, richtig?

Es ist nicht ganz klar, wie der Schwanz aussieht, obwohl.... Wie wird der minimale RMS-Wert eingestellt?
Vielen Dank im Voraus für Antworten =)
 
shobvas писал (а):
Ich verstehe das nicht ganz...
Eine Fourier-Reihe wird aus der Preisdifferenz und dem Wert der Regressionsgeraden gebildet, richtig?

Das mit dem Schwanz ist nicht ganz klar, obwohl.... Wie wird der minimale RMS-Wert eingestellt?
Vielen Dank im Voraus für Antworten =)

Ja. Zuerst berechnen wir die LR[i]-Koordinaten. Dann Array dc[i]=Close[i]-LR[i]; Aus Array dc[i] Fourier fx[i] erstellen. Und fügen Sie LR[i]-Koordinaten hinzu. fx[i]=fx[i]+LR[i] oder fx[i]+=LR[i]; Wenn wir extrapolieren, berechnen wir LR[i] und fx[i] vor und nach i=0 (Sie können es selbst herausfinden).
Da wir den Schätzzeitraum (T) mit dem Skript verschieben, verkleinern oder strecken können, wird der RMS des "Endes" bei jeder Verschiebung automatisch neu berechnet.
Das heißt sq=0.0; for (int n=0; n<T; n++) sq+=(Close[i0+n]-fx[n])*(Close[i0+n]-fx[n]); sq=MathSqrt(sq/T); und für minimalen RMS (sq) einstellen.
In meinen Screenshots ist der "Schwanz" in Gelb und Grün dargestellt, während die Extrapolation in Rot und Blau angezeigt wird.
Im Allgemeinen erfordern all diese Konstruktionen zunächst viel Zeit und geistige Anstrengung, und wenn Sie das Gefühl haben, dass Sie noch nicht so weit sind, warten Sie, bis Sie reifer sind. Andernfalls kann es passieren, dass Sie es leid sind und mit den Ergebnissen nicht zufrieden sind.
 
ANG3110 писал (а):
Ja. Zuerst berechnen wir die LR[i]-Koordinaten. Dann Array dc[i]=Close[i]-LR[i]; Aus Array dc[i] Fourier fx[i] erstellen. Und fügen Sie LR[i]-Koordinaten hinzu. fx[i]=fx[i]+LR[i] oder fx[i]+=LR[i]; Wenn wir extrapolieren, berechnen wir LR[i] und fx[i] vor und nach i=0 (Sie können es selbst herausfinden).
Da wir den Schätzzeitraum (T) mit dem Skript verschieben, verkleinern oder strecken können, wird der RMS des "Endes" bei jeder Verschiebung automatisch neu berechnet.
Das heißt sq=0.0; for (int n=0; n<T; n++) sq+=(Close[i0+n]-fx[n])*(Close[i0+n]-fx[n]); sq=MathSqrt(sq/T); und für minimalen RMS (sq) einstellen.
In meinen Screenshots ist der "Schwanz" in Gelb und Grün dargestellt, während die Extrapolation in Rot und Blau angezeigt wird.
Im Allgemeinen brauchen all diese Konstruktionen am Anfang sehr viel Zeit, und wenn Sie das Gefühl haben, dass Sie noch nicht so weit sind, warten Sie, bis Sie reif genug sind, sonst werden Sie vielleicht müde und sind mit dem Ergebnis nicht zufrieden.

Der minimale RMS-Wert wird also durch T festgelegt, habe ich das richtig verstanden?
Oder wird die Anzahl der harmonischen Frequenzen in der Fourier-Zerlegung durch den minimalen RMS angepasst?

Aber das Interessanteste, nämlich wie die Extrapolation der Fourier-Funktion erfolgt, hast du immer noch nicht erzählt =)
 
shobvas писал (а):
Der minimale RMS-Wert ist also auf T eingestellt, stimmt's?
Oder wird die Anzahl der harmonischen Frequenzen in der Fourier-Zerlegung durch den minimalen RMS angepasst?

Das Interessanteste ist jedoch, wie die Extrapolation der Fourier-Funktion durchgeführt wird =)
Als Ergebnis der Berechnung einer linearen Regression erhalten wir die Formel LR[i]=b+a*i;
Als Ergebnis der Fourier-Berechnung erhalten wir die Anzahl der Oberschwingungen N, die Koeffizienten ak[k],bk[k], wobei k der Anzahl der Oberschwingungen entspricht (k=0...N); und die Formel für die Fourier-Berechnung sum=0.0; for(k=0; k<=N; k++) sum+=ak[k]*MathCos(w*k*i)+bk[k]*MathSin(w*k*i); fx[i]=sum;
Wenn wir nun, sagen wir, eine halbe Periode im Voraus extrapolieren wollen, berechnen wir
Daten von T bis -T/2; for(int i=T; i>=-T/2; i--), aber da Arrays nur positive Indizes enthalten dürfen, fügen wir alles von -1 bis -T/2 in das zweite Array ein, oder es gibt einen Trick, um die Aufteilung in 2 Arrays zu umgehen, indem alle Elemente um +T/2 zurückgeschoben werden, und diese Verschiebung wird beim Zeichnen berücksichtigt. Der Rest der Beschreibung macht nur Sinn, wenn wir bereits Erfahrung mit solchen Konstruktionen haben. In Skripten haben wir überhaupt keine Probleme mit dem Vorwärtszeichnen. In Indikatoren sollten wir SetIndexShift( ) verwenden;
 

Das heißt, Sie berechnen fx[i] bei i<0 durch eine Formel:

sum=0.0; for(k=0; k<=N; k++) sum+=ak[k]*MathCos(w*k*i)+bk[k]*MathSin(w*k*i); fx[i]=sum;

Etwa so?

Und für welchen Zeitraum erstellen Sie die Fourier-Funktion? [T,0]?

 
shobvas писал (а):

Das heißt, Sie berechnen fx[i] bei i<0 durch eine Formel:

sum=0.0; for(k=0; k<=N; k++) sum+=ak[k]*MathCos(w*k*i)+bk[k]*MathSin(w*k*i); fx[i]=sum;

Etwa so?

Und für welchen Zeitraum erstellen Sie die Fourier-Funktion? [T,0]?

SetIndexShift(0,T/2);

for (i=T; i>=-T/2; i--)
{
Summe=0,0;
for(int k=0; k<=N; k++) sum+=ak[k]*MathCos(w*k*i)+bk[k]*MathSin(w*k*i);
fx[i+T/2]=sum+b+a*i;
}
 

Wie genau werden die Koeffizienten ak, bk berechnet?

Wird das Integral über welches Intervall genommen? Von T bis 0 oder was?

 
shobvas писал (а):

Wie genau werden die Koeffizienten ak, bk berechnet?

Wird das Integral über welches Intervall genommen? Von T bis 0 oder was?


for (int k=0; k<=N; k++)
{
sum_cos=0.0;
sum_sin=0.0;
for (int i=0; i<T; i++)
{
sum_cos+=(Close[i]-b-a*i)*MathCos(w*k*i);
sum_sin+=(Close[i]-b-a*i)*MathSin(w*k*i);
}
ak[k]=sum_cos*2/T;
bk[k]=sum_sin*2/T;
}
ak[0]=ak[0]/2;