//+------------------------------------------------------------------+ //| Geo_Impulse.mq4 | //| Copyright © 2007, Geokom | //| geokom2004@yandex.ru | //+------------------------------------------------------------------+ // // // Geo_Impulse.mq4 - Индикатор для отображения значимого бара // Если бар обновляет High / Low и соответствует направлению // // #property copyright "Copyright © 2011, Geokom" #property link "geokom2004@yandex.ru" #property indicator_separate_window #property indicator_buffers 2 #property indicator_color1 Lime // #property indicator_width1 2 #property indicator_color2 Red // #property indicator_width2 2 /* #property indicator_color3 Yellow // #property indicator_width3 2 #property indicator_color4 Red // #property indicator_width4 3 #property indicator_color5 Lime // #property indicator_width5 3 #property indicator_color6 Red // #property indicator_width6 3 #property indicator_color7 Lime // #property indicator_width7 2 #property indicator_color8 Red // #property indicator_width8 2 */ #property indicator_maximum 1 #property indicator_minimum -1 extern int ObjectCorner=1; extern int X_ObjectPosition = 30; extern int Y_ObjectPosition = 20; /* extern int MA_Period1=3;//периоды средних - быстрая extern int MA_Period2=3;//медленная extern int MA_Mode1=3;// 0 = SMA, 1 = EMA, 2 = SMMA, 3 = LWMA extern int MA_Price1=0;// 0 = Close, 1 = Open, 2 = High, 3 = Low, 4 = HL/2, 5 = HLC/3, 6 = HLCC/4 extern int MA_Mode2=3;// 0 = SMA, 1 = EMA, 2 = SMMA, 3 = LWMA extern int MA_Price2=1;// 0 = Close, 1 = Open, 2 = High, 3 = Low, 4 = HL/2, 5 = HLC/3, 6 = HLCC/4 extern int MA_Shift1=0; extern int MA_Shift2=0; extern int fl=0;// extern string iName = "";//JMoving Avereges extern int MA_period_1 = 3; // глубина первого сглаживания extern int MA_method_1 = 0; // метод усреднения extern int MA_period_2 = 4; // глубина первого сглаживания extern int MA_method_2 = 0; // метод усреднения extern int Input_Price_Customs_1 = 0; extern int Input_Price_Customs_2 = 1; */ //---- buffers double ExtMapBuffer1[]; double ExtMapBuffer2[]; double ExtMapBuffer3[]; double ExtMapBuffer4[]; /* double ExtMapBuffer4[]; double ExtMapBuffer5[]; double ExtMapBuffer6[]; double ExtMapBuffer7[]; double ExtMapBuffer8[]; */ double C,O,H,L,M3,N3,M4,N4; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators SetIndexStyle(0,DRAW_HISTOGRAM); SetIndexBuffer(0,ExtMapBuffer1); SetIndexStyle(1,DRAW_HISTOGRAM); SetIndexBuffer(1,ExtMapBuffer2); /* SetIndexStyle(2,DRAW_HISTOGRAM); SetIndexBuffer(2,ExtMapBuffer3); SetIndexStyle(3,DRAW_LINE); SetIndexBuffer(3,ExtMapBuffer4); SetIndexStyle(4,DRAW_LINE); SetIndexBuffer(4,ExtMapBuffer5); SetIndexStyle(5,DRAW_LINE); SetIndexBuffer(5,ExtMapBuffer6); SetIndexStyle(6,DRAW_LINE); SetIndexBuffer(6,ExtMapBuffer7); SetIndexStyle(7,DRAW_LINE); SetIndexBuffer(7,ExtMapBuffer8); */ //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| возвращает сигнал если сдвинут объект | bool isMovedObject(string ObjName,bool Draw,int ObjCod,int ObjectSize,int dX,int dY,color InitObjColor) { if((!Draw)) // Если код = 0 - удаляем объект { if(ObjectFind(ObjName)==0) {ObjectDelete(ObjName);} return(False); } bool X = False; bool Y = False; if(ObjectFind(ObjName)==-1) { ObjectCreate(ObjName,OBJ_LABEL,0,0,0); ObjectSetText(ObjName,CharToStr(ObjCod),ObjectSize,"Wingdings",InitObjColor); ObjectSet(ObjName,OBJPROP_CORNER,ObjectCorner); ObjectSet(ObjName,OBJPROP_XDISTANCE,X_ObjectPosition+dX); ObjectSet(ObjName,OBJPROP_YDISTANCE,Y_ObjectPosition+dY); } if(ObjectFind(ObjName)==0) { ObjectSet(ObjName,OBJPROP_CORNER,1); ObjectSetText(ObjName,CharToStr(ObjCod),ObjectSize,"Wingdings",InitObjColor); if(ObjectGet(ObjName,OBJPROP_XDISTANCE) != X_ObjectPosition+dX) {ObjectSet(ObjName,OBJPROP_XDISTANCE,X_ObjectPosition+dX); } if(ObjectGet(ObjName,OBJPROP_YDISTANCE) != Y_ObjectPosition+dY) {ObjectSet(ObjName,OBJPROP_YDISTANCE,Y_ObjectPosition+dY); } } return(False); } //| возвращает сигнал если сдвинут объект | //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int counted_bars=IndicatorCounted(); if(counted_bars<0) return(-1); if(counted_bars>0) counted_bars--; int limit=Bars-counted_bars; if(counted_bars==0) limit-=1+2; for(int i=0; iO && H>High[i+1] && L >= Low[i+1]){ ExtMapBuffer1[i] = 1;ExtMapBuffer2[i] = 0;} if (CO && H>High[i+1] ){ ExtMapBuffer1[i] = 1;ExtMapBuffer2[i] = 0;} if(CO && H>MathMax( High[i+1], High[i+2] ) && L >= MathMin ( Low[i+1],Low[i+2] ) ){ ExtMapBuffer1[i] = 1;ExtMapBuffer2[i] = 0;} if (CO && H>MathMax( High[i+1], High[i+2] ) ){ ExtMapBuffer1[i] = 1;ExtMapBuffer2[i] = 0;} if(C=0;j--) { double C = iClose(NULL, PERIOD_D1,j); double O = iOpen(NULL, PERIOD_D1,j); double H = iHigh(NULL, PERIOD_D1,j); double L = iLow(NULL, PERIOD_D1,j); ExtMapBuffer3[j] = 0; ExtMapBuffer4[j] = 0; // color TodayColor = LightGray; color TodayColor=Gray; if(TimeDayOfWeek(iTime(NULL,PERIOD_D1,j+1))!=0) { if(C>O && H>iHigh(NULL,PERIOD_D1,j+1)) { ExtMapBuffer3[j]=1;ExtMapBuffer4[j]=0; TodayColor=Blue; } if(CO && H>MathMax(iHigh(NULL,PERIOD_D1,j+1),iHigh(NULL,PERIOD_D1,j+2))) { ExtMapBuffer3[j]=1;ExtMapBuffer4[j]=0; TodayColor=Blue; } if(C