Indicatori: Price prediction by Nearest Neighbor found by a weighted correlation coefficient - pagina 2

 
tolga gogebakan:

C'è un avviso. Potreste aiutarmi per favore? Vi ringrazio in anticipo.

È benigno: continuate a usarlo così com'è, poiché non influisce sul lavoro dell'indicatore.
 
Ciao Vladimir, grazie mille per la tua gentilezza nel condividere il tuo bellissimo, fantastico, sorprendente e incredibile pensiero e idee futuristiche e avanzate. Sono un tuo fan nel codificare questo mql4 o 5. Continuiamo così. Ho apprezzato molto anche l'aiuto di McLaden, anche se la spiegazione è breve ma molto utile. Dio vi benedica tutti.
 

Complimenti all'autore!

Tutto è scritto in modo competente e compatto. Grazie.

Ci sono desideri di miglioramento, se lo stai ancora facendo.

1. Sulla storia è necessario disegnare non un vicino, ma l'ultimo punto della previsione spostato indietro della sua lunghezza (Nfut). Cioè calcolare e disegnare la previsione per un certo intervallo nel passato. In questo modo la qualità della previsione sarà evidente. Tuttavia, l'indicatore impiegherà molto tempo per pensare all'avvio.....

2. Un solo vicino è molto poco! Il risultato è instabile.

In teoria, è necessario prendere il numero di vicini = 3 lunghezze del vettore di partenza (cioè il pattern), e poi fare la media di tutte le previsioni (e meglio, con pesi proporzionali ai coefficienti di correlazione).

 

Ciao Vladimir,

Volevo parlarti di questo indicatore per un lavoro di personalizzazione.

Contattami se puoi: najnudel@gmail.com.

tks

 
Credo che la percentuale corretta sia un po' 50:50, ma i risultati previsti sono utili per il trading manuale.
 

Ho un algoritmo di nearest neighbour migliorato che uso per i miei scopi. Supera gli inconvenienti citati. L'idea è semplice. Quando si cerca il vicino più prossimo nei modelli storici, si memorizzano tutti i modelli passati, i loro modelli futuri noti e i coefficienti di correlazione tra questi modelli passati e il modello attuale. Chiamiamo questi coefficienti di correlazione r, che è il vettore di tutte le correlazioni passate. Invece di selezionare il modello passato con l'abs (r) più alto come vicino, utilizziamo TUTTI i modelli passati come "vicini più vicini", ma con i loro contributi ponderati exp(sw*abs(r)), dove sw è un esponente selezionato dall'utente che controlla la selettività della previsione dei modelli passati con i coefficienti di correlazione più alti. Un valore di sw molto grande farà sì che la previsione sia influenzata solo dal vicino con la correlazione più forte (il vero "vicino più vicino"). Un sw molto piccolo renderà tutti i modelli passati ugualmente importanti. Chi comprende l'idea può riscrivere il codice di cui sopra e pubblicare un nuovo indicatore. Di seguito è riportata l'implementazione in Matlab. Se si desidera includere solo i pattern passati con correlazione positiva, rimuovere la funzione abs () in r = abs (...). I pattern passati con correlazione negativa avranno automaticamente il peso più basso.

% 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 selezionato dall'utente che controlla la selettività della previsione dei modelli passati con i coefficienti di correlazione più alti. Un valore di sw molto grande farà sì che la previsione sia influenzata solo dal vicino con la correlazione più forte (il vero "vicino più vicino"). Un sw molto piccolo renderà tutti i modelli passati ugualmente importanti. Chi comprende l'idea può riscrivere il codice di cui sopra e pubblicare un nuovo indicatore. Di seguito è riportata l'implementazione in Matlab. Se si desidera includere solo i pattern passati con correlazione positiva, rimuovere la funzione abs () in r = abs (...). I pattern passati con correlazione negativa avranno automaticamente il peso più basso.

Vladimir, capisco l'idea.
Ma sarà comunque una previsione casuale.

Ho sperimentato molto con la ricerca di modelli circa 10 anni fa. Con il mirroring, l'inversione, la somma di paternità. Conclusione: completa casualità nel continuare un paternus nel futuro. Tutte le coincidenze sono casuali.

 
Nikolai Semko #:

Vladimir, ho capito l'idea.
Ma sarà comunque una previsione casuale.

Ho fatto molti esperimenti con la ricerca dei paternostri circa 10 anni fa. Con il mirroring, l'inversione, la somma di paternità. Conclusione: completa casualità nel continuare un paternus nel futuro. Tutte le coincidenze sono casuali.

Sono d'accordo

 
Nikolai Semko #:

Vladimir, ho capito l'idea.
Ma sarà comunque una previsione casuale.

Ho fatto molti esperimenti con la ricerca dei paternostri circa 10 anni fa. Con il mirroring, l'inversione, la somma di paternità. Conclusione: completa casualità nel continuare un paternus nel futuro. Tutte le coincidenze sono casuali.

Se si considera il tempo reale, niente affatto. Movimenti simili in momenti simili. Se si toglie il fattore tempo dal sistema, si ottiene la casualità.

 
okayjustask trading manuale.

questo codice ha bisogno di leggeri miglioramenti, ma la tua idea ha senso .