0
Views
0
Downloads
0
Favorites
MLS-HL4-Angle
//+---------------------------------------------------------------------+
//| MLS-HL4.mq4 |
//| The Method of Least Squares |
//| High and Low ver. 4 |
//| Copyright © Trofimov 2008 |
//+---------------------------------------------------------------------+
//| Ìåòîä íàèìåíüøèõ êâàäðàòîâ |
//| ïî âåðõíåé è íèæíåé îòìåòêå ñâå÷è |
//| Îïèñàíèå: Ðàñ÷¸ò ìèíèìàëüíîãî êâàäðàòè÷íîãî îòëîíåíèÿ îò ïðÿìîé |
//| â ïóíêòàõ. Åñëè ðûíîê êîëåáëåòñÿ â ïðåäåëàõ òàíãåíñà |
//| óãëà íàêëîíà ëèíèè òðåíäà ê ãîðèçîíòàëüíîé ïðÿìîé |
//| òî òðåíä ðàçâèâàåòñÿ óâåðåííî è ðàâíîìåðíî. |
//| Àâòîðñêîå ïðàâî ïðèíàäëåæèò Òðîôèìîâó Åâãåíèþ Âèòàëüåâè÷ó, 2008 |
//+---------------------------------------------------------------------+
#property copyright "Copyright © Trofimov Evgeniy Vitalyevich, 2008"
#property link "http://multitest.semico.ru/mnk.htm"
//---- Ñâîéñòâà èíäèêàòîðà
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 DodgerBlue
#property indicator_width1 2
//#property indicator_color2 DarkSeaGreen
//#property indicator_width2 0
//---- Âõîäÿùèå ïàðàìåòðû
extern int MyPeriod=12;
extern bool ReDraw=true; //-åñëè âêëþ÷åí, òî ïåðåðèñîâûâàåò íóëåâîé áàð ïðè êàæäîì íîâîì òèêå
// åñëè âûêëþ÷åí, òî íóëåâîé áàð ñîäåðæèò ôèêñèðîâàííîå çíà÷åíèå, âû÷èñëåííîå ïî ïðåäûäóùèì (ãîòîâûì) áàðàì
//---- Ìàññèâ äàííûõ èíäèêàòîðà
double MLS_Angel[];
//datetime LastTime;
//+------------------------------------------------------------------+
//| Ôóíêöèÿ èíèöèàëèçàöèè èíäèêàòîðà |
//+------------------------------------------------------------------+
int init()
{
//---- x äîïîëíèòåëüíûõ áóôåðà, èñïîëüçóåìûõ äëÿ ðàñ÷åòà
IndicatorBuffers(1);
//---- ïàðàìåòðû ðèñîâàíèÿ (óñòàíîâêà íà÷àëüíîãî áàðà)
SetIndexDrawBegin(0,MyPeriod);
//SetIndexDrawBegin(1,MyPeriod);
//---- x ðàñïðåäåëåííûõ áóôåðà èíäèêàòîðà
SetIndexBuffer(0,MLS_Angel);
//SetIndexBuffer(1,MLS_b);
//---- èìÿ èíäèêàòîðà è ïîäñêàçêè äëÿ ëèíèé
IndicatorShortName("MLS-HL4 ("+MyPeriod+") = ");
SetIndexLabel(0,"a");
//SetIndexLabel(1,"b");
//SetIndexStyle(1,DRAW_NONE, EMPTY, EMPTY, CLR_NONE);
return(0);
}
//+------------------------------------------------------------------+
//| Ôóíêöèÿ èíäèêàòîðà |
//+------------------------------------------------------------------+
int start() {
int limit, RD;
if(ReDraw) RD=1;
// Ïðîïóùåííûå áàðû
int counted_bars=IndicatorCounted();
//---- îáõîäèì âîçìîæíûå îøèáêè
if(counted_bars<0) return(-1);
//---- íîâûå áàðû íå ïîÿâèëèñü è ïîýòîìó íè÷åãî ðèñîâàòü íå íóæíî
limit=Bars-counted_bars-1+RD;
//---- îñíîâíûå ïåðåìåííûå
double k1, i1, j1, k2, i2, j2;
double a, b, y, S, H, L;
int x;
//---- îñíîâíîé öèêë
for(int t=limit-RD; t>-RD; t--) {
//if(LastTime==iTime(NULL,0,t)) return(0); //ëó÷øå íå âêëþ÷àòü
//LastTime=iTime(NULL,0,t);
//if(t<5) Print(t,"===== ",TimeToStr(LastTime)," =====");
k1=0; i1=0; j1=0; k2=0; i2=0;
for(x=t+MyPeriod-1; x>=t; x--)
{ // ñîñòàâëÿåì íîðìàëüíûå óðàâíåíèÿ k1=a*i1+b*j1 è k2=a*i2+b*j2
H=High[x]/Point;
L=Low[x]/Point;
k1=k1+H*x; k2=k2+H;
k1=k1+L*x; k2=k2+L;
i1=i1+2*x*x; i2=i2+2*x;
j1=j1+2*x;
}
j2=MyPeriod*2;
//Ðåøàåì ñèñòåìó óðàâíåíèé
a=(k1*j2-j1*k2)/(i1*j2-j1*i2);
//b=(k2-i2*a)/j2;
//Òåïåðü âñå òî÷êè High è Low, íà äàííûé ìîìåíò âðåìåíè,
//ïðèáëèçèòåëüíî ðàñïîëîæåíû âäîëü ïðÿìîé, îïèñàíîé óðàâíåíèåì y=ax+b,
//ãäå x - ýòî íîìåð ñâå÷è, à y - çíà÷åíèå öåíû.
MLS_Angel[t]=-a;
if(!ReDraw && t==1) MLS_Angel[0]=-a;
//MLS_b[t]=b*Point;
}
return(0);
}
//+------------------------------------------------------------------+
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
---