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);
}
//+------------------------------------------------------------------+





Sample





Analysis



Market Information Used:

Series array that contains the highest prices of each bar
Series array that contains the lowest prices of each bar


Indicator Curves created:



Indicators Used:



Custom Indicators Used:

Order Management characteristics:

Other Features: