I am not sure what problem you are having because it seems to work fine for me.
Add a couple of lines and run an Exploration to debug your code. You are using "ExRem" so you understand that removes excessive signals.
Maybe your are confused as to what that does?
https://www.amibroker.com/guide/afl/exrem.html
Running your code on the 30 stocks in the DJIA, produces this exploration result.
PER_II = Sum((2*Close-High-Low)/(High-Low)*Volume,21)/Sum(Volume,21);
Buy = PER_II > 0;
Sell = PER_II < 0;
Buy = ExRem(Buy, Sell);
Sell = ExRem(Sell, Buy);
Filter= Buy OR Sell;
AddColumn(PER_II, "PER_II", 1.3);
AddColumn(Buy, "Buy", 1.0, iif(Buy,colorWhite, colorDefault), IIf(Buy,colorGreen, colorDefault));
AddColumn(Sell, "Sell", 1.0, iif(Sell,colorWhite, colorDefault), IIf(Sell,colorRed, colorDefault));

Where are the "symbol results" for the other 27 stocks in the Index? They don't have a new cross over or cross under zero. So no new signal that day.
If we change the Exploration to see all stocks,
Filter=1; // Buy OR Sell;
AddColumn(PER_II, "PER_II", 1.3);
AddColumn(Buy, "Buy", 1.0, iif(Buy,colorWhite, colorDefault), IIf(Buy,colorGreen, colorDefault));
AddColumn(Sell, "Sell", 1.0, iif(Sell,colorWhite, colorDefault), IIf(Sell,colorRed, colorDefault));
We see the output below and all stocks from the watch list appear, even those with a zero as the result.

Hope that helps. Also check your data as that might cause you to lose results too.