지표: Price prediction by Nearest Neighbor found by a weighted correlation coefficient - 페이지 2

 
tolga gogebakan:

경고가 있습니다. 도와주시겠어요? 미리 감사드립니다.

표시기의 작업에 영향을 미치지 않으므로 그대로 계속 사용하세요.
 
안녕하세요 블라디미르, 아름답고, 멋지고, 놀랍고, 놀라운 미래 지향적이고 진보된 생각과 아이디어를 친절하게 공유해 주셔서 대단히 감사합니다. 저는 mql4 또는 5로 코딩하는 것을 좋아합니다. 앞으로도 계속 그렇게 하죠. 짧은 설명이지만 매우 유용한 McLaden의 도움에 감사드립니다. 여러분 모두에게 신의 축복이 있기를.
 

저자에게 찬사를 보냅니다!

모든 것이 지능적이고 간결하게 작성되었습니다. 감사합니다.

여전히하고 있다면 개선에 대한 소원이 있습니다.

1. 역사에서 이웃이 아니라 예측의 마지막 지점을 그릴 필요가 있으며 길이 (Nfut)만큼 뒤로 이동해야합니다. 즉, 과거의 일부 간격에 대한 예측을 계산하고 그립니다. 그러면 예측의 품질이 분명해집니다. 그러나 지표는 시작시 생각하는 데 오랜 시간이 걸립니다.....

2. 한 이웃은 아주 적습니다! 결과는 불안정합니다.

이론적으로 이웃 수 = 시작 벡터(즉, 패턴)의 길이 3을 취한 다음 모든 예측의 평균(상관 계수에 비례하는 가중치를 사용하는 것이 더 좋음)을 구해야 합니다.

 

안녕하세요 블라디미르,

사용자 지정 작업에 대한 이 지표에 대해 상담하고 싶습니다.

가능하면 저에게 연락주세요: najnudel@gmail.com.

tks

 
정확한 비율은 50:50 정도라고 생각하지만 예측 결과는 수동 거래에 유용합니다.
 

저는 제 목적에 맞게 개선된 가장 가까운 이웃 알고리즘을 사용하고 있습니다. 이 알고리즘은 앞서 언급한 단점을 극복합니다. 아이디어는 간단합니다. 과거 패턴에서 가장 가까운 이웃을 검색할 때 모든 과거 패턴, 알려진 미래 패턴, 그리고 이러한 과거 패턴과 현재 패턴 사이의 상관 계수를 저장합니다. 이러한 상관 계수를 모든 과거 상관 관계의 벡터인 r이라고 부르겠습니다. 가장 높은 상관계수(r)를 가진 과거 패턴을 가장 가까운 이웃으로 선택하는 대신 모든 과거 패턴을"가장 가까운 이웃"으로 사용하되 기여도에 가중치를 부여한 exp(sw*abs(r))를 사용하며, 여기서 sw는 상관 계수가 가장 높은 과거 패턴을 예측하는 선택성을 제어하는 사용자가 선택한 지수입니다. sw 값이 매우 크면 예측이 가장 강한 상관관계를 가진 이웃(진정한 '가장 가까운 이웃')의 영향을 받게 됩니다. 매우 작은 sw는 모든 과거 패턴을 똑같이 중요하게 만듭니다. 이 아이디어를 이해하시는 분들은 위의 코드를 다시 작성하여 새로운 지표를 게시할 수 있습니다. 아래는 Matlab에서 구현한 것입니다. 양의 상관관계가 있는 과거 패턴만 포함해야 하는 경우 r = abs (...)에서 abs () 함수를 제거합니다. 그러면 음의 상관 관계를 가진 과거 패턴은 자동으로 가장 낮은 가중치를 갖습니다.

% 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 사용자가 선택한 지수입니다. sw 값이 매우 크면 예측이 가장 강한 상관관계를 가진 이웃(진정한 '가장 가까운 이웃')의 영향을 받게 됩니다. 매우 작은 sw는 모든 과거 패턴을 똑같이 중요하게 만듭니다. 이 아이디어를 이해하시는 분들은 위의 코드를 다시 작성하여 새로운 지표를 게시할 수 있습니다. 아래는 Matlab에서 구현한 것입니다. 양의 상관관계가 있는 과거 패턴만 포함해야 하는 경우 r = abs (...)에서 abs () 함수를 제거합니다. 그러면 음의 상관 관계를 가진 과거 패턴은 자동으로 가장 낮은 가중치를 갖습니다.

블라디미르, 아이디어는 이해합니다.
하지만 여전히 무작위 예측이 될 것입니다.

약 10년 전에 패턴을 찾기 위해 많은 실험을 했습니다. 미러링, 반전, 부계 합산으로. 결론-파터누스를 미래로 이어가는 데 있어 완전한 무작위성. 모든 우연은 무작위입니다.

 
Nikolai Semko #:

블라디미르, 무슨 말인지 알겠어요.
하지만 여전히 무작위 예측일 뿐입니다.

약 10년 전에 파테노스 검색으로 많은 실험을 했습니다. 미러링, 반전, 파터노 합산으로 말이죠. 결론 - 파터누스를 미래로 이어가는 데 있어 완전한 무작위성. 모든 우연은 무작위입니다.

동의합니다.

 
Nikolai Semko #:

블라디미르, 무슨 말인지 알겠어요.
하지만 여전히 무작위 예측일 뿐입니다.

약 10년 전에 파테노스 검색으로 많은 실험을 했습니다. 미러링, 반전, 파터노 합산으로 말이죠. 결론 - 파테누스를 미래로 이어가는 데 있어 완전한 무작위성. 모든 우연은 무작위입니다.

실시간을 고려한다면 전혀 그렇지 않습니다. 비슷한 순간에 비슷한 움직임. 시스템에서 시간 요소를 제거하면 무작위성을 얻을 수 있습니다.

 
okayjustask 수동 거래에 유용합니다.

이 코드는 약간의 개선이 필요하지만 아이디어가 타당합니다.