//+------------------------------------------------------------------+ //| TickData.mq4 | //| Copyright © 2007, Tim Reichard | //| http://FXIMPACT.COM | //+------------------------------------------------------------------+ #property copyright "Copyright © 2007, Tim Reichard" #property link "http://FXIMPACT.COM" // Programmer: Tim Reichard #property indicator_separate_window #property indicator_buffers 3 #property indicator_color1 Red #property indicator_color2 Ivory #property indicator_color3 Blue //---- buffers double ExtMapBuffer1[]; double ExtMapBuffer2[]; double ExtMapBuffer3[]; //extern int SwitchColorMinutes = 1; datetime timeten = 0; int element = 1; int once = 0; int count = 0; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators SetIndexBuffer(0, ExtMapBuffer1); SetIndexBuffer(1, ExtMapBuffer2); SetIndexBuffer(2, ExtMapBuffer3); SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,1); SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,1); SetIndexStyle(2,DRAW_LINE,STYLE_SOLID,1); timeten = TimeCurrent(); NewBar(); //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { double BID = Bid; if(NewBar() == true) { count++; for(int i = 1; i < count; i++) { ExtMapBuffer1[i-1] = ExtMapBuffer1[i]; ExtMapBuffer2[i-1] = ExtMapBuffer2[i]; ExtMapBuffer3[i-1] = ExtMapBuffer3[i]; } ExtMapBuffer1[count-1] = EMPTY_VALUE; ExtMapBuffer2[count-1] = EMPTY_VALUE; ExtMapBuffer3[count-1] = EMPTY_VALUE; count--; } if((BID == ExtMapBuffer1[0]) || (BID == ExtMapBuffer2[0]) || (BID == ExtMapBuffer3[0])) { return; } else { for(i = count; i > 0; i--) { ExtMapBuffer1[i] = ExtMapBuffer1[i-1]; ExtMapBuffer2[i] = ExtMapBuffer2[i-1]; ExtMapBuffer3[i] = ExtMapBuffer3[i-1]; } ExtMapBuffer1[i] = EMPTY_VALUE; ExtMapBuffer2[i] = EMPTY_VALUE; ExtMapBuffer3[i] = EMPTY_VALUE; } if(once == 0) { once = 1; ExtMapBuffer1[0] = BID; count++; } if(TimeMinute(TimeCurrent()) != TimeMinute(timeten)) { if(element == 1) { ExtMapBuffer1[0] = BID; ExtMapBuffer2[0] = BID; count++; element = 2; } else if(element == 2) { ExtMapBuffer2[0] = BID; ExtMapBuffer3[0] = BID; count++; element = 3; } else if(element == 3) { ExtMapBuffer3[0] = BID; ExtMapBuffer1[0] = BID; count++; element = 1; } timeten = TimeCurrent(); } else { if((ExtMapBuffer1[1] != EMPTY_VALUE) && (ExtMapBuffer3[1] != EMPTY_VALUE) || ((ExtMapBuffer2[1] == EMPTY_VALUE) && (ExtMapBuffer3[1] == EMPTY_VALUE))) { ExtMapBuffer1[0] = BID; count++; } else if((ExtMapBuffer2[1] != EMPTY_VALUE) && (ExtMapBuffer1[1] != EMPTY_VALUE) || ((ExtMapBuffer1[1] == EMPTY_VALUE) && (ExtMapBuffer3[1] == EMPTY_VALUE))) { ExtMapBuffer2[0] = BID; count++; } else if((ExtMapBuffer3[1] != EMPTY_VALUE) && (ExtMapBuffer2[1] != EMPTY_VALUE) || ((ExtMapBuffer1[1] == EMPTY_VALUE) && (ExtMapBuffer2[1] == EMPTY_VALUE))) { ExtMapBuffer3[0] = BID; count++; } } //---- //---- return(0); } bool NewBar() { static datetime lastbar = 0; datetime curbar = Time[0]; if(lastbar != curbar) { lastbar = curbar; return(true); } else { return(false); } } //+------------------------------------------------------------------+