Maschinelles Lernen im Handel: Theorie, Modelle, Praxis und Algo-Trading - Seite 3184

 

Ich habe mir verschiedene Arten von Simulationen von Zeitreihen und deren Eigenschaften angesehen und eine synthetische Reihe aus Sinuskurven und Rauschen erstellt (ich habe Sinuskurven zur besseren Übersichtlichkeit genommen).

Die Schlussfolgerung ist... Diese Simulation muss noch richtig verstanden werden...


Die erste Reihe ist das Original (oben links), alle anderen Reihen sind Simulationen, die auf den Eigenschaften der ersten Reihe aufbauen.

ein weiterer Durchlauf


par(mar=c(2,2,2,2),mfrow=c(3,2))

n <- 1:1000
#  original series
s <- sin(n/50+1) + sin(n/20+15)/2 + rnorm(n,sd = 0.1) 
s |> plot(t="l", main = "original series (2 sin + noise)")

s |> rnorm(mean = mean(s),sd = sd(s)) |> cumsum() |> plot(t="l",main = "random generation")
library(forecast)
s |> ets() |> simulate() |> plot(t="l",main = "Exponential smoothing state space model")
s |> ar() |> simulate() |> plot(t="l",main = "Fit Autoregressive Models to Time Series")
s |> nnetar() |> simulate() |> plot(t="l",main = "Neural Network Time Series Forecasts")
s |> Arima() |> simulate() |> cumsum() |> plot(t="l",main = "ARIMA model to univariate time series")
 
Maxim Dmitrievsky #:

Ich weiß nicht, wo das Problem liegt.

Es gab überhaupt kein Problem. Das heißt, es gab kein Problem, das gelöst werden musste. Es ging nur darum, Zwischenergebnisse auszutauschen und verschiedene Interpretationen zu diskutieren.


Ich selbst bin ziemlich verärgert über meine Vermutung.

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Maschinelles Lernen im Handel: Theorie, Modelle, Praxis und Algo-Trading

fxsaber, 2023.08.19 00:50

Wenn dopilivayut, für Monte Carlo, wahrscheinlich die beste Option, um ein Zufalls-Symbol mit den gewünschten stat. Eigenschaften zu generieren.

Ich dachte, dass ich durch eine solche Randomisierung der perfekt skalierbaren realen Tick-Historie auch ein Symbol erhalte, das bei richtiger Abstimmung perfekt skalierbar sein wird. Aber ich bekam einen kompletten Fehlschlag, was mich zumindest dazu brachte, mich zu fragen, was in der realen Historie war, dass es perfekt skalierte?

 
Maxim Dmitrievsky #:

Das bedeutet immer noch, dass mehr Alpha in den Zecken steckt.

Wir können nur mit Sicherheit sagen, dass es bei der Arbeit mit Ticks mehr Informationen gibt als bei der Arbeit mit Balken. Daher ist es logisch, mit Zecken zu arbeiten, wenn man über die entsprechenden Rechenkapazitäten verfügt.

 
mytarmailS #:

Die erste Reihe ist das Original (oben links), alle anderen Reihen sind Simulationen auf der Grundlage der Merkmale der ersten Reihe

Ich würde keine der Simulationen verwenden. Was sie tun:

  1. Suche nach mehreren (sagen wir 100) statistischen Merkmalen in der Balkenhistorie.
  2. Erzeugen Sie Balkenreihen so, dass diese 100 statistischen Merkmale übereinstimmen.

Es ist absurd, dass 100 Werte eine ursprüngliche Serie von Millionen von Werten beschreiben können! Es scheint ein Werkzeug der Theoretiker zu sein, aber nicht der Praktiker.


Dervorgeschlagene Algorithmus arbeitet mit Ticks. Die Tick-Volumina stimmen in den empfangenen Balken überein, die Spreads stimmen überein. Identische scharfe Reaktion auf Nachrichten, identisches Rollover-Verhalten, usw.

Klingt alles prima. Aber ich kann Scalping auch nach einer solchen Randomisierung nicht lehren. Und bis jetzt habe ich keine Erklärung dafür.


Ich würde ein EX5-Skript posten, das das notwendige Zufallssymbol erzeugt, aber die Forenregeln verbieten das. Ich bin noch nicht so weit, einen Blogeintrag dafür zu verfassen. Wenn jemand Interesse daran hat, es zu spinnen, kann er mich gerne kontaktieren.

 
fxsaber #:

war nicht etwas, das gelöst werden musste.

Ich möchte folgende Aufgabe lösen.


Aufgabe.

Randomisieren Sie ein echtes skalierbares Symbol, so dass es skalierbar bleibt.


Zielsetzung.

Monte Carlile.

 
fxsaber #:
Aber ich bin komplett gescheitert, was mich zumindest dazu gebracht hat, mich zu fragen, was an der wirklichen Geschichte so perfekt war.

Ich denke, der Unterschied liegt in der Serialität oder Wiederholbarkeit der aufeinanderfolgenden Balken/Ticks. Während eines Trends gehen die meisten in dieselbe Richtung, der Randomiser macht sie im Durchschnitt in 1.

 
Forester #:

Ich denke, der Unterschied liegt in der Serialität oder Wiederholbarkeit der aufeinanderfolgenden Balken/Ticks. Während eines Trends sind die meisten von ihnen in eine Richtung, der Randomizer macht sie im Durchschnitt in 1.

Es gibt mehrere Hypothesen. Vorsichtshalber habe ich MathRand überprüft, indem ich das Skript mit einem realen und einem zufälligen Symbol ausgeführt habe.

#property script_show_inputs

input datetime inFrom = D'2023.01.01';

double GetAvgPrice( const MqlTick &Tick )
{
  return((Tick.bid + Tick.ask) / 2);
}

void OnStart()
{
  MqlTick Ticks[];
  
  int Amount1 = 0;
  int Amount2 = 0;
  
  for (uint i = CopyTicksRange(_Symbol, Ticks, COPY_TICKS_INFO, inFrom * 1000) - 1; (bool)i--;)
  {
    const double Diff = NormalizeDouble(GetAvgPrice(Ticks[i]) - GetAvgPrice(Ticks[i + 1]), 8);
    
    if (Diff > 0)
      Amount1++;
    else if (Diff < 0)
      Amount2++;
  }
  
  Print(Amount1);
  Print(Amount2);
}

Beide Symbole zeigten fast die gleichen Werte an. Interessant ist, dass Betrag1 ~ Betrag2. D.h. die Tendenz wird nicht durch die Anzahl der Inkremente eines Zeichens gebildet, sondern durch die absoluten Werte der Inkremente selbst.

Im aktuellen Randomisierungsalgorithmus ändert sich die Reihenfolge der absoluten Werte der Inkremente nicht.

 
fxsaber #:

Es gibt mehrere Hypothesen. Vorsichtshalber habe ich MathRand überprüft, indem ich dieses Skript mit einem echten und einem zufälligen Symbol ausgeführt habe.

Beide Symbole zeigten fast die gleichen Werte. Interessant ist, dass Betrag1 ~ Betrag2. D.h. die Tendenz wird nicht durch die Anzahl der Inkremente eines Symbols gebildet, sondern durch die absoluten Werte der Inkremente selbst.

Amount1 - Amount2 ist eher Volatilität. Tendenz ist, wenn man viele von ihnen addiert. In realen Daten sind die Trends eins, in randomisierten Daten (bis etwa Through1) sind die Trends eher zufällige Ausreißer mit zunehmender Volatilität. Ich gehe davon aus, dass sie in ihrer Amplitude um ein Vielfaches kleiner sind als die realen Trends.

UPD: Ich habe nicht gesehen, dass Sie ~ anstelle von - geschrieben haben.

Zu ~. Ihre ungefähre Rave bedeutet genau das, wirklich gut gemischt, gemittelt in 1.
 
fxsaber #:

Keine einzige Simulation, die ich verwenden würde. Was sie tun:

  1. Finden Sie mehrere (sagen wir 100) statistische Merkmale in der Balkenhistorie.
  2. Erzeugen Sie eine Reihe von Balken, so dass diese 100 statistischen Merkmale übereinstimmen.

Es istabsurd, dass 100 Werte eine ursprüngliche Reihe von Millionen von Werten beschreiben können! Es scheint ein Werkzeug der Theoretiker zu sein, aber nicht der Praktiker.

Es ist absurd, sich über etwas zu wundern, mit dem man nicht vertraut ist, und es als absurd zu bezeichnen.....

Sind Sie mit Algorithmen zur Dimensionalitätsreduktion oder zur Komprimierung vertraut?

fxsaber #:

Dervorgeschlagene Algorithmus arbeitet mit Ticks. Die Tick-Volumina stimmen in den empfangenen Balken überein, die Spreads stimmen überein. Identische scharfe Reaktion auf Nachrichten, identisches Rollover-Verhalten, etc.

Hört sich alles gut an. Aber ich kann Scalping auch nach einer solchen Randomisierung nicht lehren. Und bis jetzt habe ich keine Erklärung dafür.

Hier ist die Antwort darauf, wie gut Ihre Randomisierung den realen Marktprozess simuliert.....

fxsaber #:

Aufgabe.

Randomisieren Sie ein reales skalpierbares Symbol so, dass es skalpierbar bleibt.

Und hier ist eine Kriterium/Fitness-Funktion, um eine richtige Zeilensimulation zu erstellen

 
mytarmailS #:

Es ist absurd, sich von Unbekanntem überraschen zu lassen und es absurd zu nennen ....

In diesen künstlichen Daten als Signal - periodische Funktionen, für deren Analyse 1-2-10 Perioden ausreichen (alle 50 Balken, zum Beispiel, die gleiche Funktion (absolut), aber mit unterschiedlichem Rauschen, nach 50 wieder, usw.). In den Marktdaten gibt es keine periodische Funktion, also müssen wir alles analysieren....

Grund der Beschwerde: