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