Ressonância estocástica - página 26

 
Prival:

Portanto, a tarefa pegou. Isso é bom. Agora vou tentar expressar meus pensamentos. Se eu escrevi algo errado (ou não compreensível - me diga).

grasn

  1. Sim, há realmente um efeito de borda. Mas essa é a questão, muitas vezes é considerada ruim (interferindo). E se houver uma "ressonância estocástica"? Suponha que esta variante - a direção do movimento de preços coincide com a direção da curva (ressonância), mas não coincide (sem ressonância). Quem verificou? (Talvez o Graal esteja deitado lá J). As diversas janelas Henning, Hemming, Blackman, etc. também não podem ser descontadas. (reduzindo este efeito).
  2. Com relação ao ruído, Nós sempre temos uma mistura de sinal+ruído. E não temos nenhum mecanismo para separá-lo do sinal, mecanicamente (como no meu exemplo, fechando o receptor e medindo sua intensidade). Por isso, sugiro outra opção. Comece a partir do conceito de energia. A energia do sinal move o mercado. A energia sonora nos impede de ver (isolar um sinal útil).
  3. Como agir
...

O que você quer dizer com "pegá-lo"? Estamos discutindo-o durante vinte páginas, se você o ler com atenção (não tenha pressa). Boa visão geral do processamento de sinais, obrigado, mas eu recomendo despejar tudo isso, se você quiser fazer um trabalho frutífero sobre este assunto, e substituí-lo por um filtro digital normal de baixa passagem da classe FIR ou IIR, a menos que você tenha certeza de que o filtro de baixa passagem encontrará um sinal verdadeiro.

Com relação ao ruído, seria melhor selecionar TUDO em vez de NÓS, é mais lógico, mas o efeito de borda é mal removido com esta abordagem, é um fato, e portanto você não selecionará nenhum ruído nas bordas, o sinal em si será ruído.

PS: Como resultado, você inventará um filtro muito pior do que o FATL. Não se engane a mim e a você, fazer um filtro adaptável é uma arte completa e os princípios de seu design são bem diferentes.

 
AAB:
Candidato, este trabalho descreve a previsão do movimento de preços em termos de níveis potenciais, você pode estar interessado. A qualidade não é boa, mas é uma leitura mono, além disso, há apenas quatro páginas de fórmulas e gráficos.


Hmm, eu não dei um link para isso no início? :) Como eles dizem, deixe o pão fluir e ele voltará para você :). Bom trabalho, imho.

Prival:

- construção de um indicador


Lembro-me de quando estava experimentando a biblioteca do Klot que fiz algum tipo de indicador. Somente deve ser executado no visualizador e esperar até que haja barras suficientes para FFT. Os saltos lá são claros a partir de que, número de freqüências joga, se para aumentar a amostragem eles serão suavizados. É claro que a biblioteca de klot deve estar no lugar (está em CodeBase).

Arquivos anexados:
offtma_e.mq4  4 kb
 
lna01:

Hm, não foi esse o elo que eu dei no início? :) Como eles dizem, coloque pão na água e ele voltará para você :). Bom trabalho, imho.


Sim, estou ferrado, pelo menos assine de onde e de cuja ração roubaram, Vot não se lembra depois de ler que você gosta do artigo, e quem deu o link e esqueceu, sim, lembre-se dos peixes em Strugatsky disse: "Meus anos não são esses, serra de madeira...". Mas cada nuvem tem um lado bom, as pessoas podem baixar este documento mais uma vez.
 

Atenção a todas as partes interessadas e espectadores.

Aqui está a solução para o problema que eu dirigi a todos vocês há alguns dias. Em princípio, não há nada de novo nele. Acabo de implementar o programa, que descrevi no último post sobre este assunto. O objetivo de colocá-lo lá fora é simples: vejo várias aplicações deste método, então talvez ele seja útil para alguém. Também quero "demonstrar" a utilidade da abordagem teórica.

Portanto, o problema é simples. Há uma série {X} de números aleatórios que obedecem a uma certa estatística. A estatística não é gaussiana porque os valores possíveis de X pertencem ao intervalo [0,∞]. O ponto X = 0, em geral, pode não pertencer à população em geral. O número de membros da série {X} é N, que é suficientemente grande para dar alguma credibilidade à distribuição com base nos dados disponíveis e outros parâmetros estatísticos:

µ=M(X) é o valor médio da série {X}

D=M(X*X) - a variação da série {X}

σ =√D - inclinação da série {X}

Como a série disponível é limitada, todos os seus elementos pertencem ao intervalo finito [Xmin,Xmax], Xmin>=0.

Construímos uma média móvel Y com o período M na série disponível {X}. O método de cálculo da média pode ser arbitrário. Como resultado, obtemos uma nova série {Y}, que tem, evidentemente, termos N-M+1. O conjunto de séries {Y} também pertence a um intervalo finito. Denotado por [Ymin,Ymax].

A questão é como calcular Ymin e Ymax a partir das estatísticas e dos parâmetros da série {Y}? Escreverei no final para que isto pode ser usado.

O primeiro passo é construir uma distribuição analítica da série {X}. No livro de Bulashev, encontrei apenas uma função de distribuição, que tem como área de definição [0,∞] a distribuição lognormal. Eu não vou dizer nada de ruim sobre isso, mas não me agradou.

Como as estatísticas de minha (e muitas outras) série é tal que a densidade de probabilidade p(X) em X→0 e X→∞ tende a 0, assumi a seguinte forma geral para p(X):

p(X)=A*(X^a)*exp(-B*(X^b)), onde a>0 e b>0

Assim, a função de distribuição integral é definida da seguinte forma: F(X)= ∫ p(ξ) dξ. Aqui e outros limites de integração de 0 a X estão implícitos. Infelizmente, o editor local não deixa índices superiores e inferiores no site. É preciso torcê-lo. Certamente parece confuso, mas não há nada que possa ser feito. ξ é apenas uma variável de integração.

Para poder fazer qualquer coisa com ela, esta integral tem que ser tomada em forma analítica. Ao integrar sobre as peças e usar o valor limite p(0)=0, pode-se ver que

∫ (ξ^a)*exp(-B*(ξ^b)) dξ = -1/(B*b) * (X^(a-b+1))*exp(-B*(X^b)) + (a-b+1)/(B*b) *∫ (ξ^(a-b))*exp(-B*(ξ^b)) dξ

Ou seja, o índice a do valor X a cada vez diminui de b. Se após k passos este expoente se torna igual a b-1, a integral é reduzida à tabular. Assim, podemos formular explicitamente a condição de integralidade:

a - k*b = b - 1, ou a = (k+1)*b - 1, onde k>0 é um número inteiro.

Entretanto, como ainda temos que calcular a média e a variância, esta integrabilidade não é suficiente. Vamos ver o que é necessário para computar explicitamente todos os momentos centrais desta distribuição. Obviamente µ = ∫X*p(X) dX (aqui integrando a ∞). Vamos computar µ em função de µ(X), assumindo na integral que o limite superior é variável.

µ(X) = ∫ ξ ξ*A*(ξ^a)*exp(-B*(ξ^b)) dξ = ∫ A*(ξ^(a+1))*exp(-B*(ξ^b)) dξ

Ou seja, é um integrante do mesmo tipo com expoente a1=a+1. Para a integrabilidade, a1 deve satisfazer a mesma condição:

a1 = (k1+1)*b - 1, onde k1>0 é um número inteiro.

Comparando isto com a condição para um, obtemos: b = 1/( k1 - k). Denotando n = k1 - k finalmente obtemos uma forma admissível do parâmetro b: b = 1/n, onde n>0 é um número inteiro. Observe também que a relação 0<n<=k deve ser satisfeita.

Tendo tudo isso em mente, podemos obter de forma explícita não apenas a função de distribuição integral F(X), mas também todos os momentos centrais da distribuição:

F(X) = 1 - exp(-Z)*∑ (Z^i)/i!

Ml(X) = (k+n*l)!/(k!*(B^(n*l)) *{ 1 - exp(-Z)*∑ (Z^i)/i! }, onde Z = B*(X^(1/n)) .

A constante A que aparece na função p(X) é calculada a partir da condição de normalização e contabilizada nestas expressões. O sinal de totalização ∑ na linha superior implica totalização sobre o índice i de 0 a k, e na linha inferior - sobre i de 0 a k+n*l . O valor Ml é o l-ésimo momento central (não confundir l e 1).

Note que todas as funções obtidas passam a 0 quando X=0, e têm os seguintes limites quando X→∞:

F(X→∞) = 1 (condição de normalização) e Ml(X→∞) = (k+n*l)!/(k!*(B^(n*l))).

Assim obtemos:

µ = M(X) = M1(X) = (k+n)!/(k!*(B^n))

D = M(X*X) = M2(X) = (k+2*n)!/(k!*(B^(2*n))

Agora que tudo está aí para sempre, podemos voltar à série original. A função de distribuição final resultante p(X) contém três parâmetros que podem ser usados para assegurar que p(X) reproduza melhor as estatísticas da série {X} - B, k, n.

Você poderia, é claro, encontrá-los pela MNC, mas isso é chato. Tornei mais simples para a minha série. A partir das fórmulas acima, pode-se ver que

D/µ^2 = (k+2*n)!*k!/((k+n)!)^2

Assim, o valor de D/µ^2 é independente de B. Como D e µ são conhecidos pela série {X}, só precisamos escolher um par (n,k) que dê o valor mais próximo. Acabei de construir uma tabela sobre possíveis valores de (n,k) pares, e encontrei apenas 4 adequados: (2, 3), (3,8), (4,16) e (5,26). O valor de B é agora determinado elementar a partir de expressões para D ou µ.

Curiosamente, os valores (n,k) dos dois primeiros pares (não verifiquei os outros) deram uma excelente reprodutibilidade da curva de distribuição experimental p(X). Pelo menos para mim esta qualidade é excelente.

Ocorreu-me uma pergunta interessante ao longo do caminho. Alguém pode me esclarecer por que uma função de distribuição tão simples e conveniente com boas propriedades não é usada em estatísticas? E se for usado, por que não está escrito sobre? Nunca vi ninguém tentar aproximar-se de uma distribuição incremental que não fosse a lognormal.

 

A terceira etapa do balé marlesoniano envolve o cálculo de alguns limites X1 e X2.

A construção da série Y = ∑ X está associada com a média de valores M de X. É razoável supor que Ymin (um mínimo teórico) pode ser obtido se M dos menores valores de X cair dentro da média.

No eixo OX, M dos menores valores de valor X ocupam o intervalo [0, X1] e M dos maiores valores de valor X ocupam o intervalo [X2, ∞]. Esta é na verdade a definição dos valores X1 e X2 .

Como há N elementos na série {X} no total, F(X1) = M/N e 1 - F(X2) = M/N .

A função F(X) é conhecida na forma analítica, portanto as equações acima para determinação de X1 e X2 são equações analíticas, embora transcendentais. Qualquer método de iteração numérica pode ser aplicado para resolvê-los. Como, como pode ser visto no gráfico abaixo, a função F(X) é monotônica, pode-se chegar rapidamente aos valores de F(X1) e F(X2) a partir do ponto de inflexão usando o método de descida de gradiente. Quando calculados com a máxima precisão permitida pela MQL, 13-14 passos e menos de um segundo de tempo foram suficientes para obter os valores de X1 e X2 . O tempo foi praticamente o mesmo para os pares (2,3) e (3,8). O MQL é uma coisa boa, mesmo assim. (O que é um matcad .... J)

Espero que esteja claro onde p(X) e onde F(X) está.

Fig.1.

Também seria interessante observar a dependência de X1 e X2 em M, ou melhor, na relação M/N. Mas vamos colocá-lo de lado por enquanto, já que não nos resta muito tempo. Observe apenas que no limite, quando M→N, X1→∞ e X2→0 devem ser mantidos. E vamos tratar da definição do objetivo final de toda esta história, os valores Ymin e Ymax.

Na verdade, agora é muito simples. O intervalo [0, X1] dá a posição de M menos X e [X2, ∞] dá a posição de M mais X. Nossa tarefa é determinar os dois valores médios sobre eles. Se o algoritmo de cálculo da média não for trivial, então o problema deve ser resolvido separadamente para cada caso em particular. Se corresponder a um simples MA, podemos utilizar as fórmulas:

Ymin = M(X1)/F(X1) e Ymax = (µ - M(X2))/(1 - F(X2)).

Estas fórmulas têm um simples "significado físico", por isso não entrei em uma explicação. Em vez disso, vou apresentar o gráfico de dependências Ymin e Ymax nos valores Х1 e Х2. Ele mostra Ymin em vermelho e Ymax em azul. A linha horizontal em azul-turquesa indica o valor de µ.

Como seria de se esperar, Ymin em X1→∞ e Ymax em X2→0 tendem ambos para µ, um de baixo e um de cima.

Figura 2.

Ambos correspondem a M→N, o que está perfeitamente claro do gráfico de dependência de X1 e X2 do valor de M. Eu não o dei já? Sim, você fez. Este é o primeiro dos gráficos. E das duas curvas você deve usar a curva F(X). Mas você não deve determinar F por X, mas vice versa, você deve determinar X por F. Ao fazer isso, você também tem que olhar as equações para X1 e X2 e lembrar que se M→N, então M/N→1.

Assim, acontece que quando M/N aumenta com M, X1 aumenta (e Ymin aumenta com ele) e X2 diminui (Ymax diminui com ele). Mas é sempre Ymin< X1 e Ymax>X2 .

Em meus cálculos obtive que 1 - 3 - 5 valores da série {X}, dependendo do valor de N, podem ir além do limite superior de X2 (o limite inferior, neste sentido, não tem interesse). Ao mesmo tempo, o valor de Ymax nunca é excedido. O que é, em geral, compreensível: o caso em que todos os valores M de X são maiores é excepcional. Quanto aos valores das séries {Y}, a probabilidade de que excedam X2 é ainda menor. Para não mencionar Ymax.

Portanto, temos duas estimativas da faixa de valores {Y}, uma dura e outra suave. Podemos usar qualquer um deles, dependendo das exigências do problema.

PS

Desculpe. Não posso inserir fotos. Não em nenhum formato. O site deve estar com problemas.

 

E, finalmente, por que tudo isso é necessário.

Enquanto eu estava nisso, vi várias possibilidades de usar tudo isso.

1. Normalização de todos os indicadores de AT conhecidos, em particular - osciladores. Alguém prestou atenção ao fato de que os osciladores só podem ser usados em uma faixa estreita de seus períodos de suavização? À medida que o período diminui, ele começa a jogar para frente e para trás, e à medida que aumenta, a amplitude diminui tanto que não consegue atingir os níveis. Exemplo de uma LER favorita abaixo. Duas variações para os dois períodos 14 e 30. Se você contar com o segundo, você não poderá negociar de forma alguma. Os níveis 70/30 são muito raramente atingidos. Ou estes níveis devem ser otimizados de novo para cada período.

Fig.3.

Os indicadores de AT não dependem praticamente do t/f, tanto quanto eu entendo, esta é uma peculiaridade de suas estatísticas. Mas aqui, se o problema de alisamento fosse resolvido, talvez algo novo pudesse ser ganho com eles. Com um procedimento de normalização estocástica como esse, acho que isso é bem possível.

2. Meu problema pessoal foi que a disseminação da série depende significativamente do N. De que outra forma poderia ser, Hurst sofreu por nada? :-))

Agora posso levar tudo a um padrão universal, no qual nem mudar para outro t/f, nem mudar o período de suavização afetará o alcance dos valores da série. Isto permite que os mesmos níveis sejam usados para entrada/saída para todos os outros valores de parâmetros. A otimização faz sentido sob tais condições. Ao otimizar em um t/f, posso então verificar a rentabilidade da estratégia em outro t/f. Se ela persistir, significa que a estratégia realmente funciona. Caso contrário, ela é descartada.

Talvez seja útil para outra pessoa.

3. Até agora, ninguém conseguiu normalizar diretamente a tabela de preços. Mas seria bom fazer isso. Estamos interessados não no valor absoluto, mas em suas flutuações. Talvez consigamos fazer isso dessa maneira. Aqueles que o desejarem podem tentar.

4. Em redes neurais das quais nada sei, é necessário normalizar os dados. Sair da faixa condicional leva à perda do neuromouse.

Talvez esta forma de normalização venha a ser mais útil em alguns casos do que a utilizada atualmente.

Isso é tudo. A crítica é aceita sob qualquer forma.

PS

Não coloquei intencionalmente nenhum código ou amostra de código. O algoritmo não é descrito em detalhes, mas muito detalhado. É fácil de entender. Se você quiser, é claro.

Eu encorajo a comunidade a seguir meu exemplo.

As razões são as seguintes.

Este bolo não está pronto para o consumo. Não é uma solução final, mas um método. Qualquer uso deste método em tarefas privadas ainda os deixará como tarefas privadas. Aqueles que, sem se preocuparem em compreendê-la e utilizá-la de forma significativa para si mesmos, apressar-se-ão em utilizar as soluções de outras pessoas, serão enganados, terão desperdiçado tempo e possivelmente dinheiro.

Para usar este método corretamente, você precisa

1. Formule o que é sua série {X}.

2. Formá-lo corretamente com um procedimento apropriado.

Examinar suas estatísticas, calcular parâmetros estatísticos.

Explore a correspondência das estatísticas desta série em diferentes t/fs.

5. Encontre o par estatístico apropriado k,n.

6. Calcular o parâmetro B.

7. Construir uma função de distribuição de modelos p(X) e compará-la com a função experimental. O uso deste método só será correto se o ajuste do modelo e do experimento for satisfatório. E para isso é necessário ter um critério de estimativa.

8. E, finalmente, também é necessário poder utilizar corretamente o Ymin e o Ymax obtidos. Não é tão fácil quanto possa parecer. :-)

Portanto, colegas programadores, não apenas evitem incentivar os freebies, mas também dêem aos outros uma chance, uma oportunidade de mostrar iniciativa e descobrir algo por si mesmos.

Um programador não é aquele que programa tudo em que pode deitar as mãos.

Assim como um homem não é alguém que bebe tudo o que queima e come... tudo o que se move.

 
Vamos analisar isso, obrigado, e por favor, carregue as fotos e cole-as usando "Anexar arquivo".
 

Claro que sim, mas é chamado de "pela porta dos fundos". Espero que seja uma medida temporária. Assim que estiver funcionando corretamente, colocarei as fotos onde elas pertencem.

PS

Infelizmente, até mesmo isso não se entende.

Moderadores, HOOOOOOOOOOOOOOOOOOOOOO!! Conserte o local, pls. Sem foto para anexar, sem arquivo ...

 

para Yurixx

Incrível, em vez de apenas olhar para a dispersão das séries médias móveis resultantes, chegamos tranquilamente a uma estimativa teórica, e por gradiente de descida, com base em uma distribuição não comprovada. Isso é teoricamente legal!

Certo, ainda não acredito, após uma viagem de negócios à gloriosa cidade de Kurgan, vou relê-la novamente. :о)))

PS: Lembro-me de um caso da minha vida quase científica. Veio ao meu chefe com um longo rolo de fórmulas derivadas, depois de procurar, ele disse que não havia erros, mas que poderia ser mais simples. A esta observação respondi orgulhosamente "não procuramos caminhos fáceis", ao que ele respondeu imediatamente "é por isso que você não o encontra".

 
grasn:

para Yurixx

Incrível, em vez de apenas olhar para a dispersão das séries médias móveis resultantes, chegamos tranquilamente a uma estimativa teórica, e por gradiente de descida, com base em uma distribuição não comprovada. Isso é teoricamente legal!

Na minha opinião, é mais simples do que isso. Um pequeno pedaço de código que calcula os coeficientes de normalização dependendo do t/f e dos parâmetros de média está embutido no init() do indicador ou conselheiro. Funciona. Como você pode fazer isso no Campeonato se o Expert Advisor não estiver em seu computador e o histórico estiver carregado no volume desconhecido?

Mas isso é um assunto trivial. Tenho uma pergunta mais séria. Você tem que recalcular estas proporções toda vez que você muda um símbolo, t/f, etc., manualmente ou usando Matkad :-)? ? Você não se cansa disso? Ou criar um banco de dados para todos os símbolos, t/f, parâmetros de suavização, etc. ? ? :-)

Há mais um ponto, o mais importante. Mas se você ainda não notou, tanto faz. :-)))

A propósito, a "distribuição não comprovada", dado que em forex não se conhece nenhuma distribuição de qualquer valor (apenas que se sabe que não é normal) é ridícula. É uma boa piada.

Razão: