Miscellaneous
0
Views
0
Downloads
0
Favorites
AKF_v1
//+------------------------------------------------------------------+
//| AKF.mq4 |
//+------------------------------------------------------------------+
#property copyright "Ïðèâàëîâ"
#property link "Skype privalov-sv"
#property indicator_separate_window // Èíäèê. ðèñóåòñÿ â îñíîâíîì îêíå
#property indicator_minimum -1.0 // Ãðàíèöû îêíà
#property indicator_maximum 1.0
#property indicator_level1 0.0 // ëèíèÿ íóëÿ
#property indicator_buffers 1 // Êîëè÷åñòâî áóôåðîâ
#property indicator_color1 Red // Öâåò ëèíèè
extern int History=1440;
extern bool WriteToFile=true;
double AKF[]; // Îòêðûòèå èíäèêàòîðíûõ ìàññèâîâ
double X[],Y[],Mu[];
datetime CountedBar=0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
ArrayResize(AKF,History+1);
ArrayResize(X,History+1);
ArrayResize(Y,History+1);
ArrayResize(Mu,History+1);
//--------------------------------------------------------------------
IndicatorDigits(8);
SetIndexBuffer(0,AKF); // Íàçíà÷åíèå ìàññèâà áóôåðó
SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,1);// Ñòèëü ëèíèè
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int i,m;
int counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
int limit=Bars-counted_bars;
if(counted_bars==0) limit--;
if(counted_bars<History+1) return(0);
//----
if(Time[0]==CountedBar) { return(0);}
CountedBar = Time[0];
if(Bars<History)
{
Alert(": Íåäîñòàòî÷íî áàðîâ íà ãðàôèêå");
return(0);
}
// íåîáõîäèìî ðàñ÷èòàòü ìàññèâ ìþ - ñîäåðæèò çíà÷åíèÿ ëèí. ðåãðåñèè
// ôîðìèðóåì ìàññèâû X è Y
for(i=0; i<=History; i++)
{
X[i]=Time[i]-Time[History];
Y[i]=Close[i];
}
double A=0,B=0; // îáíóëÿþ êîýôôèöèåíòû ëèí. ðåãðåñcèè
double SKO=0.0,AKF_norm=0.0;
LinearRegr(X,Y,History,A,B);
for(i=0; i<=History; i++)
{
Mu[i]=A*X[i]+B;
SKO += MathPow( Y[i] - Mu[i], 2 );
}
SKO/=History;
Print(" A =",DoubleToStr(A,8)," B =",DoubleToStr(B,8));
//-------------------------------------------------------------------------------------------
// Ðàñ÷¸ò ÀÊÔ
for(m=0; m<=History; m++)
{
double summ=0.0;
for(i=0; i<=History; i++)
{
if(i+m>History) continue;
summ+=(Y[i]-Mu[i]) *(Y[i+m]-Mu[i+m]);
}
AKF[m]=1/SKO*summ;
}
// 5. Íîðìèðîâêà
// Ïîëó÷åííûé ìàññèâ AKFm ïðîñòî äåëèì íà çíà÷åíèå, êîòîðîå íàõîäèòüñÿ â 0 ÿ÷åéêå
for(m=History; m>=0; m --) AKF[m]/=AKF[0];
return(0);
}
//+------------------------------------------------------------------+
//| Ðàññ÷åò êîýôôèöèåíòîâ A è B â óðàâíåíèè |
//| y(x)=A*x+B |
//| èñïîëüçóþòüñÿ ôîðìóëû http://forum.mql4.com/ru/10780/page5 |
//+------------------------------------------------------------------+
void LinearRegr(double &_X[],double &_Y[],int N,double &A,double &B)
{
double mo_X=0.0,mo_Y=0.0,var_0=0.0,var_1=0.0;
int i;
for(i=0; i<N; i++)
{
mo_X +=_X[i];
mo_Y +=_Y[i];
}
mo_X /=N;
mo_Y /=N;
for(i=0; i<N; i++)
{
var_0 +=(_X[i]-mo_X)*(_Y[i]-mo_Y);
var_1 +=(_X[i]-mo_X)*(_X[i]-mo_X);
}
A = var_0 / var_1;
B = mo_Y - A * mo_X;
}
//+------------------------------------------------------------------+
Comments
Markdown Formatting Guide
# H1
## H2
### H3
**bold text**
*italicized text*
[title](https://www.example.com)

`code`
```
code block
```
> blockquote
- Item 1
- Item 2
1. First item
2. Second item
---