Author: Yuriy Tokman (YTG)
0 Views
0 Downloads
0 Favorites
REGRESSION
//+------------------------------------------------------------------+
//|                                                   REGRESSION.mq4 |
//|                                               Yuriy Tokman (YTG) |
//|                                            yuriytokman@gmail.com |
//+------------------------------------------------------------------+
#property copyright "Yuriy Tokman (YTG)"
#property link      "yuriytokman@gmail.com"// indicator REGRESSION
#property version   "1.00"
#property strict
#property indicator_chart_window

input int REGRESSION_1 = 50;
input int REGRESSION_2 = 100;
input int REGRESSION_3 = 200;
input color clr_1      = clrRed;
input color clr_2      = clrLime;
input color clr_3      = clrBlue;
input int   Width      = 2;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   GetDell();
   Comment("");
//---   
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   RegressionCreate(0,"ytg_Regression_1",0,Time[0],Time[REGRESSION_1],clr_1,STYLE_SOLID,Width);
   RegressionCreate(0,"ytg_Regression_2",0,Time[0],Time[REGRESSION_2],clr_2,STYLE_SOLID,Width);   
   RegressionCreate(0,"ytg_Regression_3",0,Time[0],Time[REGRESSION_3],clr_3,STYLE_SOLID,Width);
   
   ChartRedraw();
   Sleep(1000);      
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+ 
//| Ñîçäàåò êàíàë íà ëèíåéíîé ðåãðåññèè ïî çàäàííûì êîîðäèíàòàì      | 
//+------------------------------------------------------------------+ 
bool RegressionCreate(const long            chart_ID=0,        // ID ãðàôèêà 
                      const string          name="Regression", // èìÿ êàíàëà 
                      const int             sub_window=0,      // íîìåð ïîäîêíà  
                      datetime              time1=0,           // âðåìÿ ïåðâîé òî÷êè 
                      datetime              time2=0,           // âðåìÿ âòîðîé òî÷êè 
                      const color           clr=clrRed,        // öâåò êàíàëà 
                      const ENUM_LINE_STYLE style=STYLE_SOLID, // ñòèëü ëèíèé êàíàëà 
                      const int             width=1,           // òîëùèíà ëèíèé êàíàëà 
                      const bool            fill=false,        // çàëèâêà êàíàëà öâåòîì 
                      const bool            back=false,        // íà çàäíåì ïëàíå 
                      const bool            selection=false,    // âûäåëèòü äëÿ ïåðåìåùåíèé 
                      const bool            ray_right=false,   // ïðîäîëæåíèå êàíàëà âïðàâî 
                      const bool            hidden=false,       // ñêðûò â ñïèñêå îáúåêòîâ 
                      const long            z_order=0)         // ïðèîðèòåò íà íàæàòèå ìûøüþ 
  {
   if(ObjectFind(name)>=0)ObjectDelete(name);//åñëè îáúåêò óæå ñîçäàí óäàëÿåì åãî, äëÿ îòðèñîâêè íà êàæäîì òèêå 
//--- ñáðîñèì çíà÷åíèå îøèáêè 
   ResetLastError(); 
//--- ñîçäàäèì êàíàë ïî çàäàííûì êîîðäèíàòàì
   if(!ObjectCreate(chart_ID,name,OBJ_REGRESSION,sub_window,time1,0,time2,0)) 
     { 
      Print(__FUNCTION__,": íå óäàëîñü ñîçäàòü êàíàë íà ëèíåéíîé ðåãðåññèè! Êîä îøèáêè = ",GetLastError()); 
      return(false); 
     } 
//--- óñòàíîâèì öâåò êàíàëà 
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr); 
//--- óñòàíîâèì ñòèëü ëèíèé êàíàëà 
   ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style); 
//--- óñòàíîâèì òîëùèíó ëèíèé êàíàëà 
   ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width); 
//--- îòîáðàçèì íà ïåðåäíåì (false) èëè çàäíåì (true) ïëàíå 
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back); 
//--- âêëþ÷èì (true) èëè îòêëþ÷èì (false) ðåæèì âûäåëåíèÿ êàíàëà äëÿ ïåðåìåùåíèé 
//--- ïðè ñîçäàíèè ãðàôè÷åñêîãî îáúåêòà ôóíêöèåé ObjectCreate, ïî óìîë÷àíèþ îáúåêò 
//--- íåëüçÿ âûäåëèòü è ïåðåìåùàòü. Âíóòðè æå ýòîãî ìåòîäà ïàðàìåòð selection 
//--- ïî óìîë÷àíèþ ðàâåí true, ÷òî ïîçâîëÿåò âûäåëÿòü è ïåðåìåùàòü ýòîò îáúåêò 
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection); 
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection); 
//--- âêëþ÷èì (true) èëè îòêëþ÷èì (false) ðåæèì ïðîäîëæåíèÿ îòîáðàæåíèÿ êàíàëà âïðàâî 
   ObjectSetInteger(chart_ID,name,OBJPROP_RAY_RIGHT,ray_right); 
//--- ñêðîåì (true) èëè îòîáðàçèì (false) èìÿ ãðàôè÷åñêîãî îáúåêòà â ñïèñêå îáúåêòîâ 
   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden); 
//--- óñòàíîâèì ïðèîðèòåò íà ïîëó÷åíèå ñîáûòèÿ íàæàòèÿ ìûøè íà ãðàôèêå 
   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order); 
//--- óñïåøíîå âûïîëíåíèå 
   return(true); 
  } 
//----
void GetDell (string name_n = "ytg")
  {
   string vName;
   for(int i=ObjectsTotal()-1; i>=0;i--)
    {
     vName = ObjectName(i);
     if (StringFind(vName,name_n) !=-1) ObjectDelete(vName);
    }  
  }
//----

Comments