#property copyright "Copyright © 2010, Julien Loutre" #property link "http://www.thetradingtheory.com" #import "drawing.ex4" void draw_bar(string uid, string i, int x, double y, int x2, double y2, color c); void draw_line(string uid, string i, int x, double y, int x2, double y2, color c); void draw_array_as_line(string uid, double& a[], color c); void draw_erase(string uid); void draw_erase_all(); int rgb2int(int r, int g, int b); int colorGradient(int r, int g, int b, int r2, int g2, int b2, double min, double max, double pos); double map(double x, double in_min, double in_max, double out_min, double out_max); void draw_vline(string uid, string i, int x, double y, color c); #import #property indicator_chart_window extern string timeframe = "D1"; extern color BullColor = SteelBlue; extern color BearColor = White; extern int CandleNumber = 10; double extBuffer[],chart[]; double open,close,open1,close1,high,low; int p; int currentCandle = 0; string uid="candles"; int init() { IndicatorShortName("Candles["+timeframe+"]"); return(0); } int start() { int i,j; int c = 0; int openTime,closeTime,openPos,currentPos; double openValue,closeValue; int p; bool flag; int HLpos; int HLwidth; if (timeframe == "D1") { p = 1440; } else if (timeframe == "H4") { p = 240; } else if (timeframe == "H1") { p = 60; } else if (timeframe == "M30") { p = 30; } else if (timeframe == "M15") { p = 15; } int tbars = p/Period()*CandleNumber+p/Period(); int barPerCandle = p/Period(); double h,l; for (i=tbars;i>=0;i--) { if (timeframe == "D1") { flag = TimeHour(iTime(NULL,0,i)) == 0 && TimeMinute(iTime(NULL,0,i)) == 0; } else if (timeframe == "H4") { flag = TimeMinute(iTime(NULL,0,i)) == 0 && (TimeHour(iTime(NULL,0,i)) == 0 || TimeHour(iTime(NULL,0,i)) == 4 || TimeHour(iTime(NULL,0,i)) == 8 || TimeHour(iTime(NULL,0,i)) == 12 || TimeHour(iTime(NULL,0,i)) == 16 || TimeHour(iTime(NULL,0,i)) == 20); } else if (timeframe == "H1") { flag = TimeMinute(iTime(NULL,0,i)) == 0; } else if (timeframe == "M30") { flag = TimeMinute(iTime(NULL,0,i)) == 30; } else if (timeframe == "M15") { flag = TimeMinute(iTime(NULL,0,i)) == 0 || TimeMinute(iTime(NULL,0,i)) == 15 || TimeMinute(iTime(NULL,0,i)) == 30 || TimeMinute(iTime(NULL,0,i)) == 45; } tbars = p/Period()*CandleNumber+p/Period(); barPerCandle = p/Period(); if (flag) { c++; openTime = Time[i]; openValue = Open[i]; openPos = i; draw_bar(uid, c, openTime, openValue, openTime, openValue, BullColor); h = 0; l = 100000; } if (c>0) { if (Low[i]h) {h=High[i];} currentPos = i; HLwidth = (openPos-currentPos)/8; closeTime = Time[i]; closeValue = Close[i]; HLpos = openPos-((openPos-currentPos)/2)-(HLwidth/2); if (openValue>closeValue) { // Down draw_bar(uid, c, openTime, openValue, closeTime, closeValue, BearColor); if (HLwidth>2) { draw_bar(uid+"_h", c, Time[HLpos], h, Time[HLpos+HLwidth], openValue, BearColor); draw_bar(uid+"_l", c, Time[HLpos], closeValue, Time[HLpos+HLwidth], l, BearColor); } } else { // Up draw_bar(uid, c, openTime, openValue, closeTime, closeValue, BullColor); if (HLwidth>1) { draw_bar(uid+"_h", c, Time[HLpos], h, Time[HLpos+HLwidth], closeValue, BullColor); draw_bar(uid+"_l", c, Time[HLpos], openValue, Time[HLpos+HLwidth], l, BullColor); } } } } return(0); } int deinit() { draw_erase_all(); return(0); }