MLS-HL4-Angle_v1

Author: Copyright � Trofimov Evgeniy Vitalyevich, 2008-2010
Miscellaneous
Implements a curve of type %1
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 supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---