Teoria del flusso casuale e FOREX - pagina 59

 
AlexEro >> :


>> DEVI CAMBIARE IL TUO AVATAR.

 
begemot61 >> :

+10!!!

È meglio guidare un carrello. È più sano e non c'è bisogno di strade normali.

A quanto pare, non usa nemmeno i telefoni, perché il canale di frequenza a toni non va bene per lui (anche se probabilmente non c'è nessun posto dove chiamare da Kanatchikovskaya Dacha)

 

Gli esperti si preoccupano dei danni all'udito dei lettori MP3

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

 
Beh, è stato necessario trovare non qualcosa di buono e utile, ma per scavare tale ...

Vi suggerisco di leggere Malakhov. C'è un sacco di roba interessante per te, vai avanti...

 

timbo писал(а) >>

Una strategia redditizia su un processo casuale stazionario è creata sul conteggio di uno.

Lo dici una volta sola.
Per favore, non essere pigro e scrivi uno script in mql che simuli una strategia vincente su un processo con distribuzione normale.
Da quando ho lavorato con questo - ho sempre trovato che non è affatto un compito banale. Come regola, quando si cerca di ottenere una vincita da un processo stazionario si ottiene uno dei due risultati: o l'aspettativa matematica = 0 o i profitti sono così piccoli che è meglio tenere i soldi in banca. Penso che il problema possa essere risolto in modo che le vincite siano almeno in qualche modo percepibili, ma non è facile.

Allo stesso tempo vorrei chiedere alla gente: qualcuno ha una funzione che restituisce un valore con distribuzione normale in un intervallo (0,1)? Ho ucciso tutto il giorno ieri, ma non ho ancora capito come implementarlo in mql.

 
benik писал(а) >>

Vorrei anche chiedere alla gente: qualcuno ha una funzione che restituisce un valore con distribuzione normale nell'intervallo (0,1)? Ho ucciso tutto il giorno ieri, ma non ho ancora capito come implementarlo in mql.

La funzione MQL MahtRand() permette di farlo facilmente. Come sapete, restituisce un numero intero pseudorandom con una distribuzione uniforme nell'intervallo da 0 a 32767. E il P.D.F. della distribuzione normale mappa l'asse numerico [0, inf.] all'intervallo [0, 1]. Quindi, per ottenere un valore normalmente distribuito, basta prendere una mappatura inversa dell'intervallo [0, 1] sull'asse Oh. L'unica questione è che l'argomento è scelto a caso. Questo è ciò per cui si usa MahtRand().

Cioè, prima si carica una tabella di valori P.D.F. della distribuzione normale nel programma numericamente come [x, F(x)].

Poi, si imposta una funzione che mappa uniformemente [1, 32767] a (0, 1), f(x) = x/32768. Come potete vedere, i valori 0 e 1 sono esclusi dall'intervallo. Quindi anche il valore x=0 dovrebbe essere saltato. Questi effetti marginali possono essere spiegati in diversi modi, ma sono di poca importanza.

Ora generate una serie pseudo-casuale con MahtRand(), mappate ciascuno dei valori risultanti in un intervallo unitario e, usando quel punto come valore P.D.F. della distribuzione normale F(x), trovate il corrispondente argomento x. Questo è tutto. Questo è un valore normalmente distribuito.

 

Yurixx писал(а) >>


Sì, questa è un'opzione. Ma vorrei comunque fare una funzione autonoma in mql. Senza caricare valori casuali dall'esterno.
Per quanto ne so, la distribuzione normale può essere facilmente ottenuta da quella uniforme prendendo la funzione Laplace inversa dal valore uniforme nell'intervallo (0,1).
Ridete quanto volete, ma ho un problema nel prendere la funzione Laplace inversa da MathRand()/32768.

Quindi ecco uno script, che per idea dovrebbe produrre nel file "RandN(0-1).csv" il valore normale nell'intervallo (0,1).

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);
   }
Certamente emette qualche sciocchezza, ma già non ho forze per migliorarlo. Se qualcuno ha tempo e voglia, si può migliorare. L'errore qui è che la funzione RandN() calcola la densità della distribuzione invece della funzione Laplace. Se qualcuno non ha problemi a calcolare l'integrale di questa funzione, per favore lo condivida con il pubblico. È un compito difficile per me ora pensare come calcolare l'integrale in mql.
 

Benik, c'è qualcosa qui. Riesci a capirlo da solo?

 
Grazie, darò un'occhiata. Solo che non lo farà bene oggi :) La mia testa è già piena. Proverò domani. <br / translate="no">
 
Ah, c'è una funzione già pronta per una distribuzione normale. Sì, grazie per questo.
Motivazione: