Indicateurs: Price prediction by Nearest Neighbor found by a weighted correlation coefficient - page 2

 
tolga gogebakan:

Il y a un avertissement. Pourriez-vous m'aider ? Je vous remercie d'avance.

C'est bénin - continuez à l'utiliser tel quel puisqu'il n'influence pas le fonctionnement de l'indicateur.
 
Bonjour Vladimir, merci beaucoup pour votre gentillesse de partager vos belles, impressionnantes, étonnantes et incroyables pensées et idées futuristes et avancées. Je suis votre fan de codage de ce mql4 ou 5. Continuons ainsi. J'ai également beaucoup apprécié l'aide de McLaden, même si l'explication est courte mais très utile. Que Dieu vous bénisse.
 

Bravo à l'auteur !

Tout est écrit de manière intelligente et compacte. Je vous remercie.

Il y a des souhaits d'amélioration, si vous le faites encore.

1. Sur l'historique, il est nécessaire de dessiner non pas un voisin, mais le dernier point de la prévision, décalé de sa longueur (Nfut). Autrement dit, il faut calculer et dessiner la prévision pour un certain intervalle dans le passé. La qualité de la prévision sera alors évidente. Cependant, l'indicateur mettra beaucoup de temps à réfléchir au démarrage.....

2. un voisin, c'est très peu ! Le résultat est instable.

Théoriquement, il faut prendre le nombre de voisins = 3 longueurs du vecteur de départ (c'est-à-dire du motif), puis faire la moyenne de toutes les prévisions (et mieux, avec des poids proportionnels aux coefficients de corrélation).

 

Bonjour Vladimir,

Je voulais te parler de cet indicateur pour un travail de personnalisation.

Contactez-moi si vous le pouvez : najnudel@gmail.com.

tks

 
Je pense que le taux correct est plutôt de 50:50, mais les résultats prédits sont utiles pour le commerce manuel.
 

Je dispose d'un algorithme amélioré du plus proche voisin que j'utilise pour mes besoins. Il permet de surmonter les inconvénients mentionnés. L'idée est simple. Lors de la recherche du plus proche voisin dans les modèles historiques, il convient de stocker tous les modèles passés, leurs modèles futurs connus et les coefficients de corrélation entre ces modèles passés et le modèle actuel. Appelons ces coefficients de corrélation r, qui est le vecteur de toutes les corrélations passées. Au lieu de sélectionner le modèle passé ayant le plus grand abs (r) comme voisin le plus proche, utilisez TOUS les modèles passés comme "voisins les plus proches", mais avec leurs contributions pondérées exp(sw*abs(r)), où sw est un exposant choisi par l'utilisateur qui contrôle la sélectivité de la prédiction des modèles passés ayant les coefficients de corrélation les plus élevés. Une valeur très élevée de sw fera en sorte que la prédiction ne sera influencée que par le voisin ayant la plus forte corrélation (le véritable "plus proche voisin"). Une valeur sw très faible donnera la même importance à tous les modèles passés. Ceux qui comprennent l'idée peuvent réécrire le code ci-dessus et publier un nouvel indicateur. Vous trouverez ci-dessous l'implémentation dans Matlab. Si vous ne souhaitez inclure que les modèles passés présentant une corrélation positive, supprimez la fonction abs () dans r = abs (...). Les modèles passés avec une corrélation négative auront alors automatiquement le poids le plus faible.

% 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 choisi par l'utilisateur qui contrôle la sélectivité de la prédiction des modèles passés ayant les coefficients de corrélation les plus élevés. Une valeur très élevée de sw fera en sorte que la prédiction ne sera influencée que par le voisin ayant la plus forte corrélation (le véritable "plus proche voisin"). Une valeur sw très faible donnera la même importance à tous les modèles passés. Ceux qui comprennent l'idée peuvent réécrire le code ci-dessus et publier un nouvel indicateur. Vous trouverez ci-dessous l'implémentation dans Matlab. Si vous ne souhaitez inclure que les modèles passés présentant une corrélation positive, supprimez la fonction abs () dans r = abs (...). Les modèles passés avec une corrélation négative auront alors automatiquement le poids le plus faible.

Vladimir, je comprends l'idée.
Mais il s'agira toujours d'une prédiction aléatoire.

J'ai beaucoup expérimenté la recherche de modèles il y a une dizaine d'années. Avec l'effet miroir, l'inversion, la sommation des paternes. Conclusion : la poursuite d'un paternus dans le futur est totalement aléatoire. Toutes les coïncidences sont aléatoires.

 
Nikolai Semko #:

Vladimir, je comprends l'idée.
Mais il s'agira toujours d'une prédiction aléatoire.

J'ai beaucoup expérimenté la recherche de paternos il y a environ 10 ans. Avec l'effet miroir, l'inversion, la sommation des paterns. Conclusion : la poursuite d'un paternus dans le futur est totalement aléatoire. Toutes les coïncidences sont aléatoires.

Je suis d'accord

 
Nikolai Semko #:

Vladimir, je comprends l'idée.
Mais il s'agira toujours d'une prédiction aléatoire.

J'ai beaucoup expérimenté la recherche de paternos il y a environ 10 ans. Avec l'effet miroir, l'inversion, la sommation des paterns. Conclusion : la poursuite d'un paternus dans le futur est totalement aléatoire. Toutes les coïncidences sont aléatoires.

Si vous considérez le temps réel, pas du tout. Des mouvements similaires à des moments similaires. Si vous retirez le facteur temps du système, vous obtenez le hasard.

 
okayjustask trading manuel.

ce code a besoin de légères améliorations mais okayjustask votre idée a du sens