//+------------------------------------------------------------------+
//| 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