Price Prediction By Nearest Neighbor Indicator For MT5
Table Of Contents:
- Price Prediction By Nearest Neighbor Indicator For MT5
- Instalace Price Prediction By Nearest Neighbor Indicator For MT5
- Parametry Price Prediction By Nearest Neighbor Indicator For MT5
- Vyrovnávací Price Prediction By Nearest Neighbor Indicator For MT5
- Hlavní části Kodexu
Ukazatel Price Prediction By Nearest Neighbor Indicator For MT5 čerpá očekávané budoucí pohyby cen, které se počítají z posledních cenových modelů. Nedávné cenové vzorce jsou tzv. Nejbližší sousedé, kteří dali tomuto ukazateli název. Cenové vzorce se používají pro výpočet váženého hlasování. Od tohoto výsledku jsou budoucí cenové pohyby nakresleny do grafu.
Instalace Price Prediction By Nearest Neighbor Indicator For MT5
Po stažení indikátoru pomocí výše uvedeného formuláře je třeba rozbalit zip soubor. Pak musíte zkopírovat soubor nearest_neighbor.mq5 do složky MQL5Indicators vaší instalace MT5 . Poté prosím restartujte MT5 a poté uvidíte indikátor v seznamu indikátorů.
Parametry Price Prediction By Nearest Neighbor Indicator For MT5
Price Prediction By Nearest Neighbor Indicator For MT5 obsahuje parametry 2 lze nakonfigurovat.
input int Npast =300; // Past bars in a pattern input int Nfut =50; // Future bars in a pattern (must be < Npast)
Vyrovnávací Price Prediction By Nearest Neighbor Indicator For MT5
Price Prediction By Nearest Neighbor Indicator For MT5 2 Price Prediction By Nearest Neighbor Indicator For MT5 poskytuje vyrovnávací paměti 2 .
SetIndexBuffer(0,ynn,INDICATOR_DATA); SetIndexBuffer(1,xnn,INDICATOR_DATA);
Hlavní části Kodexu
int OnCalculate(const int rates_total, const int prev_calculated, const datetime &Time[], const double &Open[], const double &High[], const double &Low[], const double &Close[], const long &tick_volume[], const long &volume[], const int &spread[]) { //--- check for insufficient data and new bar int bars=rates_total; if(bars lt Npast+Nfut) { Print("Error: not enough bars in history!"); return(0); } if(PrevBars==bars) return(rates_total); PrevBars=bars; //--- initialize indicator buffers to EMPTY_VALUE ArrayInitialize(xnn,EMPTY_VALUE); ArrayInitialize(ynn,EMPTY_VALUE); //--- main cycle //--- compute correlation sums for current pattern //--- current pattern starts at i=bars-Npast and ends at i=bars-1 double my=0.0; double syy=0.0; for(int i=0;i lt Npast;i++) { double y=Open[bars-Npast+i]; my +=y; syy+=y*y; } double deny=syy*Npast-my*my; if(deny lt =0) { Print("Zero or negative syy*Npast-my*my = ",deny); return(0); } deny=MathSqrt(deny); //--- compute correlation sums for past patterns //--- past patterns start at k=0 and end at k=bars-Npast-Nfut ArrayResize(mx,bars-Npast-Nfut+1); ArrayResize(sxx,bars-Npast-Nfut+1); ArrayResize(denx,bars-Npast-Nfut+1); int kstart; if(FirstTime) kstart=0; else kstart=bars-Npast-Nfut; FirstTime=false; for(int k=kstart;k lt =bars-Npast-Nfut;k++) { if(k==0) { mx[0] =0.0; sxx[0]=0.0; for(int i=0;i lt Npast;i++) { double x=Open[i]; mx[0] +=x; sxx[0]+=x*x; } } else { double xnew=Open[k+Npast-1]; double xold=Open[k-1]; mx[k] =mx[k-1]+xnew-xold; sxx[k]=sxx[k-1]+xnew*xnew-xold*xold; } denx[k]=sxx[k]*Npast-mx[k]*mx[k]; } //--- compute cross-correlation sums and correlation coefficients and find NN double sxy[]; ArrayResize(sxy,bars-Npast-Nfut+1); double b,corrMax=0; int knn=0; for(int k=0;k lt =bars-Npast-Nfut;k++) { //--- Compute sxy sxy[k]=0.0; for(int i=0;i lt Npast;i++) sxy[k]+=Open[k+i]*Open[bars-Npast+i]; //--- Compute corr coefficient if(denx[k] lt =0) { Print("Zero or negative sxx[k]*Npast-mx[k]*mx[k]. Skipping pattern # ",k); continue; } double num=sxy[k]*Npast-mx[k]*my; double corr=num/MathSqrt(denx[k])/deny; if(corr gt corrMax) { corrMax=corr; knn=k; b=num/denx[k]; } } Print("Nearest neighbor is dated ",Time[knn]," and has correlation with current pattern of ",corrMax); //--- Compute xm[] and ym[] by scaling the nearest neighbor double delta=Open[bars-1]-b*Open[knn+Npast-1]; for(int i=0;i lt Npast+Nfut;i++) { if(i lt =Npast-1) xnn[bars-Npast+i]=b*Open[knn+i]+delta; if(i gt =Npast-1) ynn[bars-Npast-Nfut+i]=b*Open[knn+i]+delta; } return(rates_total); } //+------------------------------------------------------------------+