As others have pointed out it could be your batteries, but yes, the rules need to have a recover value to prevent the oscillation. I made a version that had that with the rules, then rewrote that to be less generic. I don’t have rules, so much as I have max/min and recover settings for cells and the pack and temperature. Then you designate your relays to be either load or charge, and the logic of the code does the rest. You can also set the relays to respond to state of charge, but that’s only possible if you are monitoring current, which I am doing.
I don’t think I have the rules style code anymore, but I committed the one I am using to https://github.com/johntaves/diyBMSv4Code