Hi all,
i've created an indicator with three buffers to manage color changing, but i've a problem about refresh of the last candle (candle in realtime)...don't work correctly in that candle (it's not enough a "Windowredraw" instruction).
Thanks for suggest.
int start()
{
int nLimit,nCountedBars;
string Y,M,D,Giorno;
nCountedBars=IndicatorCounted();
if(nCountedBars>0) nCountedBars--;
nLimit=Bars-nCountedBars-1;
//----
for(i=nLimit; i>=0; i--)
{
Y=IntegerToString(TimeYear(Time[i]));
M=IntegerToString(TimeMonth(Time[i]));
D=IntegerToString(TimeDay(Time[i]));
Giorno=Y + "." + M + "." + D;
if(Time[i]==StrToTime(Giorno + " " + OffStart))
{
ExtOBVBuffer[i]=xxx;
ExtAppoggioBuffer[i]=xxx;
Vol=xxx;
Min=Vol;
Max=Vol;
Up=false;Dw=false;Nt=true;
continue;
}
if(i==Bars-1)
{
ExtOBVBuffer[i]=xxx;
ExtAppoggioBuffer[i]=xxx;
}
else
{
double dCurrentPrice=GetAppliedPrice(COHLMTW, i);
double dPreviousPrice=GetAppliedPrice(COHLMTW, i+1);
if(dCurrentPrice==dPreviousPrice)
{
Vol=Vol;
}
else
{
if(dCurrentPrice<dPreviousPrice)
{
if(Nt)Vol=ExtOBVBuffer[i+1];
if(Up)Vol=ExtOBVBufferUp[i+1];
if(Dw)Vol=ExtOBVBufferDw[i+1];
}
else
{
if(Nt)Vol=ExtOBVBuffer[i+1];
if(Up)Vol=ExtOBVBufferUp[i+1];
if(Dw)Vol=ExtOBVBufferDw[i+1];
}
}
}
if(Vol>=Min+DeltaPuntiInd){Up=true;Dw=false;Nt=false;Min=Vol;}
if(Vol<=Max-DeltaPuntiInd){Up=false;Dw=true;Nt=false;Max=Vol;}
if(Nt){ExtOBVBuffer[i]=Vol;ExtOBVBufferUp[i]=EMPTY_VALUE;ExtOBVBufferDw[i]=EMPTY_VALUE;}
if(Up){ExtOBVBuffer[i]=EMPTY_VALUE;ExtOBVBufferUp[i]=Vol;ExtOBVBufferDw[i]=EMPTY_VALUE;}
if(Dw){ExtOBVBuffer[i]=EMPTY_VALUE;ExtOBVBufferUp[i]=EMPTY_VALUE;ExtOBVBufferDw[i]=Vol;}
if(Vol<Min)Min=Vol;
if(Vol>Max)Max=Vol;
ExtAppoggioBuffer[i]=Vol;
WindowRedraw();
}
//----
return(0);
}
Hi all,
i've created an indicator with three buffers to manage color changing, but i've a problem about refresh of the last candle (candle in realtime)...don't work correctly in that candle (it's not enough a "Windowredraw" instruction).
Thanks for suggest.
Your post is not very clear, but I have an idea of what is causing your problem.
When your code is checking conditions for Bar[0], conditions can change from tick to tick. This can result in more than 1 buffer receiving a value for that bar.
You can get over this by setting all buffers on Bar[0] to EMPTY_VALUE before checking the conditions.
The same goes for Bar[1] because it is possible that the last tick is missed when it was Bar[0] and so it needs to be checked that conditions did not change on the last tick.
if(Nt)Vol=ExtOBVBuffer[i+1]; if(Up)Vol=ExtOBVBufferUp[i+1]; if(Dw)Vol=ExtOBVBufferDw[i+1];
Play videoPlease edit your post.
For large amounts of code, attach it.
- In the initial fill Nt/Up/Dn contains the state of the previous candle and is used to compute the next. At the start of the loop you need to set those variables to the state they were at the previous candle. You're currently using the last calculated state of the current candle.
Thanks Gum,
i've tried to insert this instructions:
ExtOBVBuffer[i]=EMPTY_VALUE;
ExtOBVBufferUp[i]=EMPTY_VALUE;
ExtOBVBufferDw[i]=EMPTY_VALUE;
ExtAppoggioBuffer[i]=EMPTY_VALUE;
before
if(Nt){ExtOBVBuffer[i]=Vol;ExtOBVBufferUp[i]=EMPTY_VALUE;ExtOBVBufferDw[i]=EMPTY_VALUE;}
if(Up){ExtOBVBuffer[i]=EMPTY_VALUE;ExtOBVBufferUp[i]=Vol;ExtOBVBufferDw[i]=EMPTY_VALUE;}
if(Dw){ExtOBVBuffer[i]=EMPTY_VALUE;ExtOBVBufferUp[i]=EMPTY_VALUE;ExtOBVBufferDw[i]=Vol;}
but not change.
if i don't use different color, so one buffer, all is ok.
Play videoPlease edit your post.
For large amounts of code, attach it.
- In the initial fill Nt/Up/Dn contains the state of the previous candle and is used to compute the next. At the start of the loop you need to set those variables to the state they were at the previous candle. You're currently using the last calculated state of the current candle.
Thanks WH, you've inspirated my mind :)
Next time, i'll use SRC button.

- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
You agree to website policy and terms of use
Hi all,
i've created an indicator with three buffers to manage color changing, but i've a problem about refresh of the last candle (candle in realtime)...don't work correctly in that candle (it's not enough a "Windowredraw" instruction).
Thanks for suggest.