Diálogo do autor. Alexander Smirnov. - página 14

 
Yurixx:
Prival:

VBAG primeiro postou 1 indicador, depois o substituiu por outro (eu vi tudo :-) ), e postou o terceiro, mas já é um especialista. E ainda não consigo ver o quadro em movimento, o que me convencerá de que o matemático tem razão. O militar de cabeça dura é tão "burro" :-) sobre a fé cega não aceita :-)


Não sei, Sergey, por que você precisa de imagens em movimento, mas posso fazer de você um indicador com 2 linhas. Um LRMA, o outro 3*LWMA-2*MA. Eles se sobreporão completamente, ou seja, um deles não será visível por causa do outro. Você desliga a cor do outro, você vê o primeiro. Você liga a cor - você só vê a outra.

Eu também lhe enviaria uma prova de equivalência, é curta - apenas uma dúzia de linhas. Mas se baseia em fórmulas que são derivadas analiticamente para implementar a regressão linear. Bem, para não contar tudo em números, e se possível usar fórmulas finitas - quanto menos ciclos, mais rápido é contado. Mas isto é um cálculo bastante longo, não quero brincar com o Word.


Obrigado. Vou tentar fazer isso eu mesmo. Eu preciso de uma distração. Finalmente terminei o filtro Kalman. Mas há uma semana que não consigo fazer o teste. Receio que se funcionar :-(. Estou procurando por erros tentando preparar melhor seus dados e tornar a previsão ainda mais precisa. Funciona em Matkadec, mas tenho receio de testá-lo no testador.

 
VBAG:
Se você tiver algoritmos mais racionalizados para calcular os traços ou a regressão, seria muito interessante dar uma olhada!

Os algoritmos são muito barulhentos para chamá-los, mas posso lhe dar uma idéia. O princípio é simples: você ganha na velocidade, você perde na memória. Como o primeiro é mais necessário, nós carregamos a memória.

Por exemplo, um simples SMA. O algoritmo incorporado deve ser universal e calculá-lo em qualquer lugar, independentemente do contexto. E você pode usar os resultados de cálculos anteriores em seu próprio programa. Para calcular o novo valor de SMA, deve-se tomar a soma dos valores de preço N anteriores, o primeiro deve ser subtraído dele e o novo valor atual deve ser adicionado. Esta soma é então dividida por N. Por isso, devemos carregar a soma variável dos preços N anteriores e a matriz desses preços N e atualizar a soma e a matriz em cada barra. Como resultado, para calcular o SMA em cada barra, precisamos executar 3 operadores: Atualizar a soma, atualizar o elemento da matriz e calcular o valor do SMA. Sem loops.

 
Prival:

Mas já faz uma semana que não consigo fazer o teste. Receio que possa funcionar:-( .


Sim, isso também acontece. :-))
 
LeoV escreveu:
Aqui está, por exemplo, JMA e SSA com um período de 50 anos. Mas eu tenho a CSSA baseada na SSA, mas não redesenhada. Muito rápido. Eu recomendo este algoritmo.....

Fora do tópico, claro, mas ainda interessante - LeoV, você poderia me mostrar uma foto do indicador CSSA Cycles do mesmo desenvolvedor (parece muito bom em ações) ? Quero ver como fica nas cotações forex.
 
Yurixx:
Tal método provavelmente faz sentido, mas somente se os períodos forem curtos. E a memória não é a principal razão. Uma reinicialização perderá o que estamos arrastando atrás de nós. É ótimo, no entanto. Obrigado pela resposta.
 
Prival:

O filtro Kalman está finalmente terminado.

Ouvi dizer que você está empurrando o tema Kalman. Eu perdi essa discussão por algum motivo. Onde posso vê-lo?

P.S. Anexei um arquivo sobre o assunto - talvez alguém esteja interessado.
Arquivos anexados:
 
Sim, se você se diz um covarde, você entra na caixa. OK, Sergey, aqui está uma prova (eu preciso dela de qualquer forma, para minha própria confiança):

Vamos ter amostras de tempo - t = 1, 2, ... N. A numeração é invertida em MQL4, ou seja, N é a barra atual, "zero". Estas leituras correspondem à cláusula Сlose(1), Сlose(2), ... Сlose(N). Tentemos construir uma linha reta y = A*t+B passando pelos cloises por MNC. Depois calculamos A*N + B, ou seja, LRMA no bar atual.

Calculamos a soma dos quadrados de erro:

Delta^2 = Soma( ( ( y(i) - Close(i) )^2; i = 1..N ) = Soma( ( A*i + B - Close(i) )^2; i = 1..N )

Diferenciamos este material por A e B e obtemos um sistema de equações para os quocientes A e B ideais:

Soma( ( ( A*i + B - Fechar(i) ) * i ); i = 1...N ) = 0
Soma( A*i + B - Fechar(i) ); i = 1...N ) = 0

Expandindo as somas, obtemos (omitimos as faixas de índice para simplificar a notação)

A*Soma( i^2 ) + B*Soma( i ) = Soma( i*Fechado(i) )
A*Soma( i ) + B*Soma( 1 ) = Soma( Fechar(i) )

Prival, agora olhe para o lado direito. A soma à direita na primeira equação é quase LWMA, apenas sem o fator normalizador. Na segunda, é a SMA, também sem ela. Aqui estão as fórmulas exatas para estas escalas:

LWMA = 2/(N*(N+1)) *Soma( i*Fecho(i) )
SMA = 1/N * Soma( Fechar(i) )

Agora, lembre-se do que a soma dos quadrados naturais de 1 a N é igual (é N*(N+1)*(2*N+1)/6), substitua-o em nosso sistema e nós o obtemos:

A * N*(N+1)*(2*N+1)/6 + C * N*(N+1)/2 = LWMA * N*(N+1)/2
A * N*(N+1)/2 + C * N = SMA * N

Simplificando:

A * (2*N+1)/3 + C = LWMA
A * (N+1)/2 + C = SMA

Não vou resolver o sistema, sou muito preguiçoso (já está claro aqui). Vou apenas multiplicar a primeira equação por 3, e a segunda por 2, e depois subtrair a segunda da primeira:

A * (2*N+1) + 3 * C - A * (N+1) - 2 * C = 3 * LWMA - 2 * SMA

À esquerda, após a simplificação, permanece A*N + B, ou seja, exatamente nossa regressão no ponto N.
 
Alexey! Respeito novamente! Tenho me perguntado de onde vem o "/6" em minha fórmula LRMA (ou devo dizer fórmula Omega)!
 
VBAG:
Este método provavelmente faz sentido, mas somente se os períodos forem pequenos. E a memória não é o principal motivo. Ao reiniciarmos, o que arrastamos atrás de nós se perderá. Mas ótimo, obrigado pela resposta.


Este método é bom para qualquer período. Quando você reinicia, tudo, é claro, está perdido. Entretanto, na partida, podemos sempre primeiro executar este algoritmo pouco sofisticado através de todo o gráfico, criando as informações necessárias. Ou é possível não executá-lo em todo o gráfico, mas apenas em um pedaço suficiente dele.

Este método tem apenas uma desvantagem - em vez de um iMA, você tem que escrever um número de linhas de código por sua própria mão. :-)

 

Alexei, obrigado. Vou sentar-me com um lápis. Os derivados de A e B são assim


Eu verifiquei a resposta, sim, de fato A*N+B=3*LWMA-2*SMA

embora o matemático tenha perdido um duque ao tomar a derivada.

e tenho algumas dúvidas, que elas devem corresponder não no ponto N, mas no (N-1)/2. Bulashev p.156. Parece que sim. Aqui está uma foto que coincide no ponto N. Portanto, estou bastante enganado.