I would suggest adding a print as an action to the Entry condition to see if that is being called more than you expect. From the code it currently has no conditions to check if you are flat so that logic should be able to be run for every bar where the conditions is true. If you are already in a position that would just reset the variables price which would later be used for the stop. Another way to look at this would be to execute a trade in realtime and then observe it, is the stop moving prices or is it always stationary and the same price?
I look forward to being of further assistance.
Comment