Teoria do Fluxo Aleatório e FOREX - página 59

 
AlexEro >> :


>> VOCÊ TEM QUE MUDAR SEU AVATAR.

 
begemot61 >> :

+10!!!

É melhor dirigir um carrinho. É mais saudável e não há necessidade de estradas normais.

Acontece que ele também não usa telefones, porque o canal de freqüência de tons é ruim para ele (embora provavelmente não haja nenhum lugar para ligar de Kanatchikovskaya Dacha)

 

Especialistas se preocupam com os danos causados por leitores de MP3

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

 
Bem, era necessário não encontrar algo bom e útil, mas desenterrar tais ...

Sugiro que você leia Malakhov. Há lá muita coisa interessante para você, vá em frente...

 

timbo писал(а) >>

Uma estratégia lucrativa em um processo estacionário aleatório é criada quando se conta um.

Você diz isso de uma só vez.
Por favor, não seja preguiçoso e escreva um roteiro em mql que simule uma estratégia vencedora em um processo com distribuição normal.
Desde que trabalhei com isto - sempre achei que não é uma tarefa nada trivial. Como regra, quando tentamos obter uma vitória por um processo estacionário obtemos um de dois resultados: ou a expectativa matemática do comércio = 0 ou os lucros são tão pequenos que é melhor eu manter meu dinheiro no banco. Penso que o problema pode ser resolvido para que os ganhos sejam pelo menos um pouco perceptíveis, mas não é fácil.

Ao mesmo tempo, gostaria de perguntar às pessoas: Alguém tem uma função, que retorna um valor com distribuição normal em uma faixa (0,1)? Matei o dia todo ontem, mas ainda não descobri como implementá-lo em mql.

 
benik писал(а) >>

Gostaria também de perguntar às pessoas: alguém tem uma função que devolve um valor com distribuição normal na faixa (0,1)? Matei o dia todo ontem, mas ainda não descobri como implementá-lo em mql.

A função MQL MahtRand() permite fazer isso facilmente. Como você sabe, ele retorna um inteiro pseudorandômico com uma distribuição uniforme na faixa de 0 a 32767. E P.D.F. de distribuição normal mapeia o eixo numérico [0, inf.] para o intervalo [0, 1]. Portanto, para obter um valor normalmente distribuído, basta levar um mapeamento inverso do intervalo [0,1] para o eixo Oh. A única questão é que o argumento é escolhido de forma aleatória. É para isso que MahtRand() é utilizado.

Ou seja, você primeiro carrega uma tabela de valores P.D.F. de distribuição normal no programa numericamente como [x, F(x)].

A seguir, você define uma função que mapeia uniformemente [1, 32767] para (0, 1), f(x) = x/32768. Como você pode ver, os valores 0 e 1 são excluídos do intervalo. Portanto, o valor x=0 também deve ser pulado. Estes efeitos marginais podem ser contabilizados de diferentes maneiras, mas são de pouca importância.

Agora gere uma série pseudo-aleatória com MahtRand(), mapeie cada um dos valores resultantes para um intervalo de unidade, e usando esse ponto como o valor P.D.F. da distribuição normal F(x), encontre o argumento correspondente x. É isso aí. Esse é um valor normalmente distribuído.

 

Yurixx писал(а) >>


Sim, esta é uma opção. Mas eu ainda gostaria de fazer uma função autônoma em mql. Sem carregar valores aleatórios de fora.
Tanto quanto sei, a distribuição normal pode ser obtida facilmente a partir de um uniforme, tomando a função Laplace inversa do valor uniforme em intervalo (0,1).
Riam o quanto quiserem, mas tenho um problema em aceitar a função Laplace inversa de MathRand()/32768.

Portanto, aqui está um script, que por idéia deve sair para arquivar "RandN(0-1).csv" aquele valor muito normal no intervalo (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 produz alguns disparates, mas eu já não tenho forças para melhorá-lo. Se alguém tem tempo e deseja, você pode melhorá-lo. O erro aqui é que a função RandN() calcula a densidade de distribuição em vez da função Laplace. Se alguém não tiver dificuldade para calcular o integral desta função, favor compartilhá-la com o público. É uma tarefa difícil para mim agora pensar como calcular o integral em mql.
 

benik, há algo aqui. Você pode descobrir por si mesmo?

 
Obrigado, vou dar uma olhada. Só não vai dar certo hoje :) Minha cabeça já está cheia. Vou tentar amanhã. <br / translate="no">
 
Ah, há uma função pronta para uma distribuição normal. Sim, obrigado por isso.