//+------------------------------------------------------------------+ //| Hans Breakout.mq4 | //| Copyright © 2006 Scorpion@fxfisherman.com | //+------------------------------------------------------------------+ #property copyright "FxFisherman.com" #property link "http://www.fxfisherman.com" #property indicator_chart_window #property indicator_buffers 4 #property indicator_color1 Red #property indicator_color2 Blue #property indicator_color3 Red #property indicator_color4 Blue extern int Breakout_Pips=5; extern int Exit_Hour = 23; extern int From_Hour_1 = 6; extern int From_Minute_1 = 0; extern int To_Hour_1 = 9; extern int To_Minute_1 = 59; extern int From_Hour_2 = 10; extern int From_Minute_2 = 0; extern int To_Hour_2 = 13; extern int To_Minute_2 = 59; extern int Bars_Count= 10000; //---- buffers double v1[]; double v2[]; double v3[]; double v4[]; int init() { IndicatorBuffers(4); SetIndexArrow(0, 159); SetIndexStyle(0,DRAW_ARROW,STYLE_SOLID,1,Red); SetIndexDrawBegin(0,-1); SetIndexBuffer(0, v1); SetIndexLabel(0,"High1"); SetIndexArrow(1, 159); SetIndexStyle(1,DRAW_ARROW,STYLE_SOLID,1,Blue); SetIndexDrawBegin(1,-1); SetIndexBuffer(1, v2); SetIndexLabel(1,"Low1"); SetIndexArrow(2, 159); SetIndexStyle(2,DRAW_ARROW,STYLE_SOLID,1,Red); SetIndexDrawBegin(2,-1); SetIndexBuffer(2, v3); SetIndexLabel(2,"High2"); SetIndexArrow(3, 159); SetIndexStyle(3,DRAW_ARROW,STYLE_SOLID,1,Blue); SetIndexDrawBegin(3,-1); SetIndexBuffer(3, v4); SetIndexLabel(3,"Low2"); watermark(); return(0); } int start() { int i; int shift; double price; datetime calculated1, calculated2; double pipsBreakout = Breakout_Pips * Point; i = Bars_Count; while(i>=0) { // High/Low 1 datetime today = StripTime(Time[i]); int nowMins = TimeHour(Time[i]) * 60 + TimeMinute(Time[i]); if (calculated1 < today && nowMins > (To_Hour_1 * 60) + To_Minute_1) { calculated1 = today; double highest1 = High[GetHighest(Symbol(), Period(), MODE_HIGH, Time[i], From_Hour_1, From_Minute_1, To_Hour_1, To_Minute_1)]; double lowest1 = Low[GetLowest(Symbol(), Period(), MODE_LOW, Time[i], From_Hour_1, From_Minute_1, To_Hour_1, To_Minute_1)]; } if (calculated1 == today && nowMins < Exit_Hour * 60) { v1[i] = highest1 + pipsBreakout; v2[i] = lowest1 - pipsBreakout; } // High/Low 2 if (calculated2 < today && nowMins > (To_Hour_2 * 60) + To_Minute_2) { calculated2 = today; double highest2 = High[GetHighest(Symbol(), Period(), MODE_HIGH, Time[i], From_Hour_2, From_Minute_2, To_Hour_2, To_Minute_2)]; double lowest2 = Low[GetLowest(Symbol(), Period(), MODE_LOW, Time[i], From_Hour_2, From_Minute_2, To_Hour_2, To_Minute_2)]; } if (calculated2 == today && nowMins < Exit_Hour * 60) { v3[i] = highest2 + pipsBreakout; v4[i] = lowest2 - pipsBreakout; } i--; } return(0); } //+------------------------------------------------------------------+ datetime StripTime(datetime dt) { return (dt - (TimeHour(dt)*3600) - (TimeMinute(dt)*60) - TimeSeconds(dt)); } //+------------------------------------------------------------------+ //| Get highest/lowest bar between a time period. | //+------------------------------------------------------------------+ int GetHighest(string symbol, int timeframe, int price_mode, datetime date, int from_hour, int from_minute, int to_hour, int to_minute) { date = StripTime(date); datetime from_time = date + (from_hour * 3600) + (from_minute * 60); datetime to_time = date + (to_hour * 3600) + (to_minute * 60); int from_bar = iBarShift(symbol, timeframe, from_time, false); int to_bar = iBarShift(symbol, timeframe, to_time, false); int hh = Highest(symbol, timeframe, price_mode, from_bar - to_bar + 1, to_bar); return(hh); } int GetLowest(string symbol, int timeframe, int price_mode, datetime date, int from_hour, int from_minute, int to_hour, int to_minute) { date = StripTime(date); datetime from_time = date + (from_hour * 3600) + (from_minute * 60); datetime to_time = date + (to_hour * 3600) + (to_minute * 60); int from_bar = iBarShift(symbol, timeframe, from_time, false); int to_bar = iBarShift(symbol, timeframe, to_time, false); int ll = Lowest(symbol, timeframe, price_mode, from_bar - to_bar + 1, to_bar); return(ll); } void watermark() { ObjectCreate("fxfisherman", OBJ_LABEL, 0, 0, 0); ObjectSetText("fxfisherman", "fxfisherman.com", 11, "Lucida Handwriting", RoyalBlue); ObjectSet("fxfisherman", OBJPROP_CORNER, 2); ObjectSet("fxfisherman", OBJPROP_XDISTANCE, 5); ObjectSet("fxfisherman", OBJPROP_YDISTANCE, 10); return(0); }