//+------------------------------------------------------------------+ //| FiboPiv_v1.mq4 | //| Kalenzo | //| bartlomiej.gorski@gmail.com | //+------------------------------------------------------------------+ #property copyright "Kalenzo" #property link "bartlomiej.gorski@gmail.com" #property indicator_chart_window //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- ObjectDelete("П1"); ObjectDelete("П2"); ObjectDelete("П3"); ObjectDelete("С1"); ObjectDelete("С2"); ObjectDelete("С3"); ObjectDelete("PIVIOT"); ObjectDelete("Поддержка 1"); ObjectDelete("Поддержка 2"); ObjectDelete("Поддержка 3"); ObjectDelete("Уровень Пивота"); ObjectDelete("Сопротивление 1"); ObjectDelete("Сопротивление 2"); ObjectDelete("Сопротивление 3"); Comment(" "); //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { //---- double rates[1][6],yesterday_close,yesterday_high,yesterday_low; ArrayCopyRates(rates, Symbol(), PERIOD_D1); if(DayOfWeek() == 1) { if(TimeDayOfWeek(iTime(Symbol(),PERIOD_D1,1)) == 5) { yesterday_close = rates[1][4]; yesterday_high = rates[1][3]; yesterday_low = rates[1][2]; } else { for(int d = 5;d>=0;d--) { if(TimeDayOfWeek(iTime(Symbol(),PERIOD_D1,d)) == 5) { yesterday_close = rates[d][4]; yesterday_high = rates[d][3]; yesterday_low = rates[d][2]; } } } } else { yesterday_close = rates[1][4]; yesterday_high = rates[1][3]; yesterday_low = rates[1][2]; } //---- Calculate Pivots Comment("\nYesterday quotations:\nH ",yesterday_high,"\nL ",yesterday_low, "\nC ",yesterday_close); double R = yesterday_high - yesterday_low;//range double p = (yesterday_high + yesterday_low + yesterday_close)/3;// Standard Pivot double r3 = p + (R * 1.000); double r2 = p + (R * 0.618); double r1 = p + (R * 0.382); double s1 = p - (R * 0.382); double s2 = p - (R * 0.618); double s3 = p - (R * 1.000); drawLine(r3,"C3", Lime,0); drawLabel("Сопротивление 3",r3,Lime); drawLine(r2,"C2", Magenta,0); drawLabel("Сопротивление 2",r2,Magenta); drawLine(r1,"C1", OrangeRed,0); drawLabel("Сопротивление 1",r1,OrangeRed); drawLine(p,"PIVIOT",Blue,1); drawLabel("Уровень пивота",p,Blue); drawLine(s1,"П1",DeepPink,0); drawLabel("Поддержка 1",s1,DeepPink); drawLine(s2,"П2",Crimson,0); drawLabel("Поддержка 2",s2,Crimson); drawLine(s3,"П3",Red,0); drawLabel("Поддержка 3",s3,Red); //---- return(0); } //+------------------------------------------------------------------+ void drawLabel(string name,double lvl,color Color) { if(ObjectFind(name) != 0) { ObjectCreate(name, OBJ_TEXT, 0, Time[10], lvl); ObjectSetText(name, name, 8, "Arial", EMPTY); ObjectSet(name, OBJPROP_COLOR, Color); } else { ObjectMove(name, 0, Time[10], lvl); } } void drawLine(double lvl,string name, color Col,int type) { if(ObjectFind(name) != 0) { ObjectCreate(name, OBJ_HLINE, 0, Time[0], lvl,Time[0],lvl); if(type == 1) ObjectSet(name, OBJPROP_STYLE, STYLE_SOLID); else ObjectSet(name, OBJPROP_STYLE, STYLE_DOT); ObjectSet(name, OBJPROP_COLOR, Col); ObjectSet(name,OBJPROP_WIDTH,1); } else { ObjectDelete(name); ObjectCreate(name, OBJ_HLINE, 0, Time[0], lvl,Time[0],lvl); if(type == 1) ObjectSet(name, OBJPROP_STYLE, STYLE_SOLID); else ObjectSet(name, OBJPROP_STYLE, STYLE_DOT); ObjectSet(name, OBJPROP_COLOR, Col); ObjectSet(name,OBJPROP_WIDTH,1); } }