Indicadores: Previsão de preço pelo Vizinho mais Próximo encontrado por um coeficiente de correlação ponderada - página 2

 
tolga gogebakan:

Há um aviso. Você poderia me ajudar? Agradeço desde já.

É benigno - continue usando-o como está, pois não influencia o trabalho do indicador
 
Olá, Vladimir, muito obrigado pela gentileza de compartilhar seus belos, impressionantes, espantosos e incríveis pensamentos e ideias futuristas e avançados. Sou seu fã na codificação do mql4 ou 5. Vamos continuar assim. Também agradeço muito a ajuda de McLaden, embora a explicação seja curta, mas muito útil. Deus abençoe a todos vocês.
 

Para o autor, parabéns!

Tudo foi escrito de forma inteligente e compacta. Muito obrigado.

Há desejos de melhoria, se ainda estiver fazendo isso.

1. No histórico, é necessário desenhar não um vizinho, mas o último ponto da previsão, deslocado para trás por seu comprimento (Nfut). Ou seja, calcular e desenhar a previsão para algum intervalo no passado. Assim, a qualidade da previsão será óbvia. Entretanto, o indicador levará muito tempo para pensar na inicialização.....

2. um vizinho é muito pouco! O resultado é instável.

Teoricamente, é necessário considerar o número de vizinhos = 3 comprimentos do vetor inicial (ou seja, padrão) e, em seguida, calcular a média de todas as previsões (e melhor, com pesos proporcionais aos coeficientes de correlação).

 

Hey Vladimir,

I wanted to talk with you about this indicator for a customization job.

Contact me if you can: najnudel@gmail.com.

tks

 
Acho que a taxa correta é um pouco 50:50, mas os resultados previstos são úteis para a negociação manual.
 

Tenho um algoritmo aprimorado de vizinho mais próximo que uso para meus propósitos. Ele supera as desvantagens mencionadas. A ideia é simples. Ao procurar o vizinho mais próximo em padrões históricos, armazene todos os padrões passados, seus padrões futuros conhecidos e os coeficientes de correlação entre esses padrões passados e o padrão atual. Vamos chamar esses coeficientes de correlação de r, que é o vetor de todas as correlações passadas. Em vez de selecionar o padrão passado com o maior abs (r) como o vizinho mais próximo, use TODOS os padrões passados como "vizinhos mais próximos", mas com suas contribuições ponderadas exp(sw*abs(r)), em que sw é um expoente selecionado pelo usuário que controla a seletividade da previsão de padrões passados com os maiores coeficientes de correlação. Um valor muito grande de sw fará com que a previsão seja influenciada somente pelo vizinho com a correlação mais forte (o verdadeiro "vizinho mais próximo"). Um sw muito pequeno fará com que todos os padrões anteriores sejam igualmente importantes. Aqueles que entenderem a ideia podem reescrever o código acima e publicar um novo indicador. Abaixo está a implementação em Matlab. Se você precisar incluir somente padrões anteriores com correlação positiva, remova a função abs () em r = abs (...). Assim, os padrões anteriores com correlação negativa terão automaticamente o peso mais baixo.

% Inputs
% sp is a time series to be predicted as a column vector
np=100;             	% past pattern length
nf=np;              	% future pattern length
sw=100;             	% weighting exponent in kNN

% Compute correlations to past patterns in sp
m  =numel(sp);		% number of bars in sp
x  =sp(1:m-np-nf);      % past patterns
y  =sp(m-np-nf+1:m-nf); % current past pattern
f  =sp(np+1:m-nf);      % future patterns
yf =sp(m-nf:m);         % current future pattern
Sx =movsum(x,np,'Endpoints','discard');
Sxx=movsum(x.^2,np,'Endpoints','discard');
Sy =sum(y);
Syy=sum(y.^2);
Sxy=conv(x,flip(y),'valid');
num=Sxy*np-Sx*Sy;
den=Sxx*np-Sx.*Sx;
r  =abs(real(num./sqrt(den)/sqrt(Syy*np-Sy*Sy)));

% Find nearest neighbor and extrapolate
w=exp(sw*r);
wsum=sum(w);
w=w/wsum;		% weighting coefficients of past patterns
a1=num./den;
a0=(Sxx.*Sy-Sx.*Sxy)./den;
a1=w.*a1;
a0=w.*a0;
a0_sum=sum(a0);
xp=conv(x,flip(a1),'valid')+a0_sum; % composite matched past pattern
xf=conv(f,flip(a1),'valid')+a0_sum; % predicted future pattern
xf=[xp(end);xf];

% Plot
figure
plot(1:np,y,'-k'); hold on;
plot(1:np,xp,'-b'); hold on;
plot(np:np+nf,yf,':k'); hold on;
plot(np:np+nf,xf,'-r');
 
Vladimir selecionado pelo usuário que controla a seletividade da previsão de padrões passados com os maiores coeficientes de correlação. Um valor muito grande de sw fará com que a previsão seja influenciada somente pelo vizinho com a correlação mais forte (o verdadeiro "vizinho mais próximo"). Um sw muito pequeno fará com que todos os padrões anteriores sejam igualmente importantes. Aqueles que entenderem a ideia podem reescrever o código acima e publicar um novo indicador. Abaixo está a implementação em Matlab. Se você precisar incluir somente padrões anteriores com correlação positiva, remova a função abs () em r = abs (...). Assim, os padrões anteriores com correlação negativa terão automaticamente o peso mais baixo.

Vladimir, entendo a ideia.
Mas ainda será uma previsão aleatória.

Fiz muitos experimentos para encontrar padrões há cerca de 10 anos. Com espelhamento, inversão, soma de padrões. Conclusão - completa aleatoriedade na continuação de um paternus no futuro. Todas as coincidências são aleatórias.

 
Nikolai Semko #:

Vladimir, entendi a ideia.
Mas ainda será uma previsão aleatória.

Fiz muitos experimentos com a busca de paternos há cerca de 10 anos. Com espelhamento, inversão, soma de paternos. Conclusão - completa aleatoriedade na continuação de um paternus no futuro. Todas as coincidências são aleatórias.

Concordo

 
Nikolai Semko #:

Vladimir, entendi a ideia.
Mas ainda será uma previsão aleatória.

Fiz muitos experimentos com a busca de paternos há cerca de 10 anos. Com espelhamento, inversão e soma de paternos. Conclusão - completa aleatoriedade na continuação de um paternus no futuro. Todas as coincidências são aleatórias.

Se você considerar o tempo real, de modo algum. Movimentos semelhantes em momentos semelhantes. Se você retirar o fator tempo do sistema, terá a aleatoriedade.

 
okayjustask negociação manual.

esse código precisa de pequenos aprimoramentos, mas, ok, sua ideia faz sentido