//+------------------------------------------------------------------+ //| Harami v1.0 | //| (complete rewrite and name change of pattern alert) | //+------------------------------------------------------------------+ //| Harami.mq4 | //| Copyright © 2010, Santosh Halan | //+------------------------------------------------------------------ #property indicator_chart_window #property indicator_buffers 2 #property indicator_color1 Yellow #property indicator_color2 Yellow //---- extern bool Show_Alert = true; //---- buffers double upArrow[]; double downArrow[]; string PatternText[5000]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { SetIndexStyle(0, DRAW_ARROW, 0, 1); SetIndexArrow(0, 72); SetIndexBuffer(0, downArrow); //---- SetIndexStyle(1, DRAW_ARROW, 0, 1); SetIndexArrow(1, 71); SetIndexBuffer(1, upArrow); return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { ObjectsDeleteAll(0, OBJ_TEXT); return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { double Range, AvgRange; int counter, setalert; static datetime prevtime = 0; int shift; int shift1; int shift2; int shift3; string pattern, period; int setPattern = 0; int alert = 0; int arrowShift; int textShift; double O, O1, O2, C, C1, C2, L, L1, L2, H, H1, H2; //---- if(prevtime == Time[0]) { return(0); } prevtime = Time[0]; //---- switch(Period()) { case 1: period = "M1"; break; case 5: period = "M5"; break; case 15: period = "M15"; break; case 30: period = "M30"; break; case 60: period = "H1"; break; case 240: period = "H4"; break; case 1440: period = "D1"; break; case 10080: period = "W1"; break; case 43200: period = "MN"; break; } //---- for(int j = 0; j < Bars; j++) { PatternText[j] = "pattern-" + j; } //---- for(shift = 0; shift < Bars; shift++) { setalert = 0; counter = shift; Range = 0; AvgRange = 0; for(counter = shift; counter <= shift + 9; counter++) { AvgRange = AvgRange + MathAbs(High[counter] - Low[counter]); } Range = AvgRange / 10; shift1 = shift + 1; shift2 = shift + 2; shift3 = shift + 3; O = Open[shift1]; O1 = Open[shift2]; O2 = Open[shift3]; H = High[shift1]; H1 = High[shift2]; H2 = High[shift3]; L = Low[shift1]; L1 = Low[shift2]; L2 = Low[shift3]; C = Close[shift1]; C1 = Close[shift2]; C2 = Close[shift3]; // Check for Bullish Harami pattern if((H < H1)&& (L > L1)) { { ObjectCreate(PatternText[shift], OBJ_TEXT, 0, Time[shift1], Low[shift1] - Range*1.5); ObjectSetText(PatternText[shift], " ", 10, "Times New Roman", Blue); upArrow[shift1] = Low[shift1] - Range*0.5; } if(shift == 0 && Show_Alert == true) { pattern = "Bullish Harami Pattern"; setalert = 1; } } } // End of for loop return(0); } //+------------------------------------------------------------------+