The following indicator "dissappears" when a new candle is formed.
Anyone know of a why to get it to "re-draw"?
thanks.
Anyone know of a why to get it to "re-draw"?
thanks.
Inserted Code
#property indicator_chart_window
#property indicator_buffers 2
extern int varExtDepth=12;
extern int varExtDeviation=5;
extern int varExtBackstep=3;
extern color color_trend_1=Magenta;
extern color color_trend_2=Magenta;
double upperband[];
double lowerband[];
int init()
{
IndicatorBuffers(2);
//---- drawing settings
//---- indicator buffers mapping
SetIndexBuffer(0,upperband);
SetIndexBuffer(1,lowerband);
SetIndexLabel(0,"Band 1") ;
SetIndexLabel(1,"Band 2") ;
SetIndexEmptyValue(0,0.0);
SetIndexEmptyValue(1,0.0);
ArraySetAsSeries(upperband,true);
ArraySetAsSeries(lowerband,true);
return(0);
}
int deinit()
{
ObjectDelete("trend_1"); ObjectDelete("trend_2");
return(0);
}
int start()
{
int shift;
bool varNewBar=funcIsNewBar(Period());
if (varNewBar)
{
ObjectDelete("trend_1"); ObjectDelete("trend_2");
DrawTrends();
for(shift=Bars-1; shift>=0; shift--)
{
upperband[shift]= ObjectGetValueByShift("trend_1",shift);
lowerband[shift]= ObjectGetValueByShift("trend_2",shift);
}
}
return(0);
}
void DrawTrends()
{
double temp = 0;
static int count = 0;
double save_0 , save_1 , save_2 , save_3;
int t_0 , t_1 , t_2 , t_3, back=1;
//get last up
for(int i = 0 ; i < Bars ; i++)
{
temp = iCustom(NULL,0,"ZigZag",varExtDepth,varExtDeviation,varExtBackstep,0,i);
if (temp != 0) count++;
if(count == back + 1 && temp != 0) {save_0 = temp; t_0 = i;}
if(count == back + 2 && temp != 0) {save_1 = temp; t_1 = i;}
if(count == back + 3 && temp != 0) {save_2 = temp; t_2 = i;}
if(count == back + 4 && temp != 0) {save_3 = temp; t_3 = i;}
if(count == back + 5) break;
}
//draw trends
Print(save_0,":",save_1,":",save_2,":",save_3);
ObjectCreate("trend_2",OBJ_TREND,0,iTime(NULL,0,t_3),save_3,iTime(NULL,0,t_1),save_1);
ObjectCreate("trend_1",OBJ_TREND,0,iTime(NULL,0,t_2),save_2,iTime(NULL,0,t_0),save_0);
ObjectSet("trend_1",OBJPROP_STYLE,STYLE_SOLID);
ObjectSet("trend_2",OBJPROP_STYLE,STYLE_SOLID);
ObjectSet("trend_1",OBJPROP_WIDTH,2);
ObjectSet("trend_2",OBJPROP_WIDTH,2);
ObjectSet("trend_1",OBJPROP_COLOR,color_trend_1);
ObjectSet("trend_2",OBJPROP_COLOR,color_trend_2);
}
//+---------------------- support funcion(s) ------------------------+
bool funcIsNewBar(int timeFrame)
{
bool res=false;
// the array contains open time of the current (zero) bar
// for 7 (seven) timeframes
static datetime _sTime[7];
int i=6;
//Note: i below will be 6 or timeframe will be day.
switch (timeFrame)
{
case 1 : i=0; break;
case 5 : i=2; break;
case 15 : i=3; break;
case 30 : i=4; break;
case 60 : i=5; break;
case 240: break;
case 1440:break;
default: timeFrame = 1440;
}
//----
if (_sTime[i]==0 || _sTime[i]!=iTime(Symbol(),timeFrame,0))
{
_sTime[i] = iTime(Symbol(),timeFrame,0);
res=true;
}
//----
return(res);
}