AFAIU, you want to avoid overlapping count from one day to another day. In short do you want to reset counter each day?
If so, then add this
/// @link https://forum.amibroker.com/t/how-to-make-afl-to-consider-only-todays-candle-sticks-for-generating-signals/12386/6
dn = DateNum();
new_day = dn != Ref(dn,-1);
function Counter_DailyReset(cond) {
/// @link http://tinyurl.com/y437hnrw
/// by fxshrat@gmail.com
/// commercial use prohibited!
local conseq1, conseq2, conseq;
conseq1 = BarsSince(!(cond AND ! new_day));
conseq2 = conseq1 + ValueWhen(new_day, cond);
conseq = IIf(BarsSince(new_day)+1 == conseq2, conseq2, conseq1);
return conseq;
}
red_bar = C < O;// or ROC(C,1) < 0;
green_bar = ! red_bar;
conseq_red = Counter_DailyReset(red_bar);
conseq_green = Counter_DailyReset(green_bar);
Filter = 1;
AddColumn(IIf(red_bar, 1, Null),"red_bar",1);
AddColumn(IIf(red_bar,BarsSince(!red_bar), Null),"conseq_red (unfiltered)",1);
AddColumn(IIf(red_bar,conseq_red, Null),"conseq_red ",1);
AddColumn(IIf(!red_bar,!red_bar, Null),"greenBar",1);
AddColumn(IIf(!red_bar,BarsSince(red_bar), Null),"conseq_green (unfiltered)",1);
AddColumn(IIf(!red_bar,conseq_green, Null),"conseq_green ",1);

And another for green bar

BTW, this one
CountOfconsecutiveGreenBar = Sum(redbar,BarsSince(redBar==0));
does not make sense to me.
- It does not count consecutive green bars but rather red bars
- and if you want to count consecutive red bars then you may just use BarsSince alone.
conseq_red = BarsSince(! redBar);
or
conseq_red = SumSince(! redBar, 1); // change "1" to something else you want to count instead.
BTW2, your line
CountOfconsecutiveGreenBar = Sum(redbar,BarsSince(redBar==0));
is zero-based. To make it one-based
CountOfconsecutiveGreenBar = Sum(redbar,BarsSince(redBar==0)+1);
then it will be equal to BarsSince(! redBar)
. So again use latter one (just BarsSince).