// CandleCountdown //______________________________________________________________________________________ #property indicator_chart_window #property indicator_buffers 0 #define OBJECT_NAME "CandleCountdown" #define MSG_PREFIX "<= " #define MAX_VALUE "999d hh:mm:ss" #define DEFAULT_FONT "Arial" extern int Right_Shift_from_Bar = 1; extern color clockcolor = Gold; extern int fontSize = 10; int DAY_SECONDS; string MAX_PADDING; int MAX_LENGTH; int init() { DAY_SECONDS = PERIOD_D1 * 60; MAX_PADDING = ""; int totalSpaces = StringLen(MSG_PREFIX + MAX_VALUE); for( int i = totalSpaces*1.5 + 1; i > 0; i--) MAX_PADDING = StringConcatenate(MAX_PADDING, " "); MAX_LENGTH = StringLen(MAX_PADDING); return(0); } int deinit() { switch( UninitializeReason() ) { case REASON_CHARTCLOSE: case REASON_REMOVE: case REASON_RECOMPILE: ObjectDelete( OBJECT_NAME ); break; case REASON_CHARTCHANGE: case REASON_PARAMETERS: case REASON_ACCOUNT: break; } return(0); } int start() { datetime barOpenTime = Time[0]; bool hasHours = (Period() > PERIOD_H1); bool hasDays = (Period() > PERIOD_D1); datetime barCloseTime = barOpenTime + Period()*60; datetime leftUntilClose = barCloseTime - TimeCurrent(); string msg = ""; bool exists = false; datetime objectX = barOpenTime + Period()*60*Right_Shift_from_Bar; double objectY; string fontName = NULL; if (leftUntilClose <= 0) leftUntilClose = 1; if (hasDays && (leftUntilClose / DAY_SECONDS>1)) { msg = msg + (leftUntilClose / DAY_SECONDS-1) + "D+ "; leftUntilClose %= DAY_SECONDS; } msg = msg + TimeToStr(leftUntilClose, TIME_SECONDS); if (!hasHours) msg = StringSubstr(msg, 3); objectY = Bid - 1 * Point; msg = MSG_PREFIX + msg; msg = StringSubstr(MAX_PADDING, MAX_LENGTH - StringLen(msg)*1.5) + msg; if (ObjectFind(OBJECT_NAME) == -1) { ObjectCreate (OBJECT_NAME, OBJ_TEXT, 0, objectX, objectY); ObjectSet (OBJECT_NAME, OBJPROP_COLOR, clockcolor); ObjectSetText (OBJECT_NAME, msg, fontSize, DEFAULT_FONT); } ObjectSet (OBJECT_NAME, OBJPROP_COLOR, clockcolor); ObjectMove (OBJECT_NAME, 0, objectX, objectY); ObjectSetText (OBJECT_NAME, msg, fontSize); return(0); }