The script is simple, going for a color scheme logic which tenderly avoids rigorous signals processing.
For the script to remain simple, logical derivatives are also out; as such, there are no secondary relations built off of primary ones. And it also ignores (unless you do this yourself) the logic in a varying order of lines.
Coloring has been done according to a limited set of relations between the four (4) plotted lines.
Quite a bit of information is capture, as you'll see when looking at line order, crossings, and transparency transitions and their patterns.
The approach makes the relations ones which can be learned over time; you become the algorithm to sort out signals. Ha ha. I know that sounds like a cop out doesn't it. Did I mention it's a simple script?
One thing you might want to play with right away are fills having red and green, and lime and fuchsia. It would be cool to reduce it all down to two (2) colors, but all the boolean relations might have to be listed, and it also may not be possible to cumulatively combine transparency overlays of the same value. Visually, that approach may not result to awaken a useful feature anyway. Also, fill() has its limitations in that it cannot be in a local scope; this includes function wrapped calls to fill(), or calls made using branching logic statements if/elseif, iff(), and var = (cond) ? t_val/exp : f_val/exp. So, to my knowledge, a fill() can not be made to be logically on/off.
Please, enjoy getting some use out of it.