Zufallsstromtheorie und FOREX - Seite 59

 
AlexEro >> :


>> DU MUSST DEINEN AVATAR ÄNDERN.

 
begemot61 >> :

+10!!!

Es ist besser, einen Wagen zu fahren. Das ist gesünder, und es besteht kein Bedarf an normalen Straßen.

Wie sich herausstellt, benutzt er auch keine Telefone, weil der Tonfrequenzkanal für ihn schlecht ist (obwohl man von der Kanatchikovskaya Dacha aus wahrscheinlich nirgendwo anrufen kann)

 

Experten befürchten Hörschäden durch MP3-Player

http://www.smh.com.au/news/digital-music/turn-it-down/2007/01/04/1167777193761.html?from=rss

 
Nun, es war notwendig, nicht etwas Gutes und Nützliches zu finden, sondern so etwas auszugraben ...

Ich schlage vor, Sie lesen Malakhov. Es gibt eine Menge interessanter Dinge für Sie, machen Sie weiter...

 

timbo писал(а) >>

Eine gewinnbringende Strategie auf einen stationären Zufallsprozess wird bei der Zählung von eins erstellt.

Das sagen Sie nur einmalig.
Bitte seien Sie nicht faul und schreiben Sie ein Skript in mql, das eine Gewinnstrategie für einen Prozess mit Normalverteilung simuliert.
Solange ich mich damit beschäftige, habe ich immer wieder festgestellt, dass dies keine triviale Aufgabe ist. Wenn wir versuchen, einen Gewinn durch einen stationären Prozess zu erzielen, erhalten wir in der Regel eines von zwei Ergebnissen: entweder ist die mathematische Erwartung des Handels = 0 oder die Gewinne sind so gering, dass ich mein Geld lieber auf der Bank lasse. Ich denke, das Problem kann so gelöst werden, dass die Gewinne zumindest etwas spürbar sind, aber es ist nicht einfach.

Gleichzeitig möchte ich die Leute fragen: Hat jemand eine Funktion, die einen Wert mit Normalverteilung in einem Bereich (0,1) zurückgibt? Ich habe gestern den ganzen Tag damit verbracht, aber ich habe immer noch nicht herausgefunden, wie man das in mql implementiert.

 
benik писал(а) >>

Ich möchte auch Leute fragen: Hat jemand eine Funktion, die einen Wert mit Normalverteilung im Bereich (0,1) zurückgibt? Ich habe gestern den ganzen Tag damit verbracht, aber ich habe immer noch nicht herausgefunden, wie man das in mql implementiert.

Mit der MQL-Funktion MahtRand() ist es recht einfach, diese Funktion selbst zu implementieren. Wie Sie wissen, gibt sie eine pseudozufällige ganze Zahl mit einer gleichmäßigen Verteilung im Bereich von 0 bis 32767 zurück. Und die P.D.F. der Normalverteilung bildet die numerische Achse [0, inf.] auf das Intervall [0, 1] ab. Um also einen normalverteilten Wert zu erhalten, müssen Sie lediglich eine inverse Abbildung des Intervalls [0, 1] auf die Oh-Achse vornehmen. Die einzige Frage ist, dass das Argument willkürlich gewählt wird. Hierfür wird MahtRand() verwendet.

Das heißt, Sie laden zunächst eine Tabelle mit P.D.F.-Werten der Normalverteilung numerisch als [x, F(x)] in das Programm.

Als Nächstes setzen Sie eine Funktion, die [1, 32767] gleichmäßig auf (0, 1) abbildet, f(x) = x/32768. Wie Sie sehen können, sind die Werte 0 und 1 aus dem Intervall ausgeschlossen. Daher sollte auch der Wert x=0 übersprungen werden. Diese Randeffekte können auf verschiedene Weise berücksichtigt werden, sind aber von geringer Bedeutung.

Erzeugen Sie nun mit MahtRand() eine Pseudo-Zufallsreihe, ordnen Sie jeden der resultierenden Werte einem Einheitsintervall zu, und verwenden Sie diesen Punkt als P.D.F.-Wert der Normalverteilung F(x), um das entsprechende Argument x zu finden. Das war's. Dies ist ein normal verteilter Wert.

 

Yurixx писал(а) >>


Ja, das ist eine Möglichkeit. Aber ich würde trotzdem gerne eine eigenständige Funktion in mql erstellen. Ohne das Laden von Zufallswerten von außen.
Soweit ich weiß, lässt sich die Normalverteilung leicht aus der Uniformverteilung ableiten, indem man die inverse Laplace-Funktion aus dem Uniformwert im Intervall (0,1) nimmt.
Lachen Sie so viel Sie wollen, aber ich habe ein Problem damit, die inverse Laplace-Funktion von MathRand()/32768 zu nehmen.

Hier ist also ein Skript, das von der Idee her in die Datei "RandN(0-1).csv" den ganz normalen Wert im Intervall (0,1) ausgeben sollte.

int start()
  {
//----
      string FileName = "RandN(0-1).csv";
      int handle = FileOpen ( FileName, FILE_CSV| FILE_WRITE);
      MathSrand(GetTickCount());
      for (int i=1; i<=32768; i++)
      {
         double val = RandN(0,1);
         FileWrite( handle, val);
      }
//----
   return(0);
  }
//+------------------------------------------------------------------+

   double RandN(int a, int sigma)
   {
      double pi = 3.14159265;
      double exp = 2.71828183;
      double x = MathRand()/32768.0;
      double pow = -(MathPow( x- a,2.0)/(2*MathPow( sigma,2.0)));
      double f = (1/( sigma*MathSqrt(2* pi)))*MathPow(exp,pow);
      return ( f);
   }
Sicherlich gibt er einigen Unsinn von sich, aber ich habe ohnehin keine Kräfte, um ihn zu verbessern. Wenn jemand Zeit und Lust hat, kann man es verbessern. Der Fehler liegt hier darin, dass die Funktion RandN() die Verteilungsdichte anstelle der Laplace-Funktion berechnet. Wenn jemand keine Schwierigkeiten hat, das Integral dieser Funktion zu berechnen, teilen Sie es bitte mit der Öffentlichkeit. Es ist eine schwierige Aufgabe für mich, zu überlegen, wie ich das Integral in mql berechnen kann.
 

benik, hier ist etwas. Können Sie es selbst herausfinden?

 
Danke, ich werde es mir ansehen. Heute wird es einfach nicht klappen :) Mein Kopf ist bereits voll. Ich werde es morgen versuchen. <br / translate="no">
 
Ah, es gibt eine vorgefertigte Funktion für eine Normalverteilung. Ja, ich danke Ihnen dafür.
Grund der Beschwerde: