//+------------------------------------------------------------------+ //| PriceStat | //| Copyright © 2010-2011, FXMaster.de | //| programming & support - Alexey Sergeev (profy.mql@gmail.com) | //+------------------------------------------------------------------+ #property copyright "Copyright © 2010-2011, FXMaster.de" #property link "profy.mql@gmail.com | Alex Sergeev" #property indicator_chart_window #property indicator_color1 SkyBlue #property indicator_color2 YellowGreen #property indicator_color3 Tomato extern int gTF=1; // требуемый ТФ, 0-текущий extern double Discret=1; // шаг дискретизации шкалы цены extern double Width=100; // ширина гистограммы (в барах) extern bool Present=true; // показывать центральную гистограмму (между двумя вертикалями) extern double Future=1; // множитель для глубины расчета от левой вертикали (в будушее) extern double Past=1; // множитель для глубины расчета от правой вертикали (в прошлое) extern bool bVolume=false; // считать покрытие бара с учётом Volume bool first; string g_inf; datetime pdt1, pdt2; string gsID; //------------------------------------------------------- init int init() { first=true; gsID="stat"; pdt1=0; pdt2=0; return(0); } //------------------------------------------------------- deinit int deinit() { ObjectsDeleteAll2(0, OBJ_TREND, gsID); } //------------------------------------------------------- start int start() { g_inf=""; main(); Comment(g_inf); } //------------------------------------------------------- main void main() { string smb=Symbol(); int tf=Period(); if (gTF!=0) tf=gTF; string name[]; int n=ObjectSelect(0, OBJ_VLINE, "", name); if (n!=2) { INF("- вертикальных линий не 2"); return; } double from=ObjectGet(name[0], OBJPROP_TIME1); double to=ObjectGet(name[1], OBJPROP_TIME1); datetime dt; if (from0) { sID=gsID+"future"; ObjectsDeleteAll2(0, OBJ_TREND, sID); // зачистили dt=(from-to)*Future; dt2=from; dt1=from+dt; n=GetStat(smb, tf, dt1, dt2, pr, hi, lo); SetLine(sID+"Hi", dt1, hi*Point, dt2, hi*Point, indicator_color2, 1, STYLE_DOT, ""); SetLine(sID+"Lo", dt1, lo*Point, dt2, lo*Point, indicator_color2, 1, STYLE_DOT, ""); for (i=0; i0) { sID=gsID+"past"; ObjectsDeleteAll2(0, OBJ_TREND, sID); // зачистили dt=(from-to)*Past; dt1=to; dt2=to-dt; n=GetStat(smb, tf, dt1, dt2, pr, hi, lo); SetLine(sID+"Hi", dt1, hi*Point, dt2, hi*Point, indicator_color3, 1, STYLE_DOT, ""); SetLine(sID+"Lo", dt1, lo*Point, dt2, lo*Point, indicator_color3, 1, STYLE_DOT, ""); for (i=0; i=0) if (ObjectFind(names[i])!=wnd) continue; if (type>=0) if (ObjectType(names[i])!=type) continue; if (pref!="") if (StringSubstr(names[i], 0, StringLen(pref))!=pref) continue; ObjectDelete(names[i]); } } //--------------------------------------------------------------- INF void INF(string st, bool ini=false) { if (ini) g_inf=g_inf+"\n "+st; else g_inf=g_inf+"\n "+st; }