In case of Buy trade, SL is initially below OP and cannot be placed above it, but if there is a big enough profit SL can be placed above OP, because SL depends on the current market price, OP does not matter.
When we have just placed Buy trade with SL of 100 pips, we know that SL level is 100 pips below it's OP, which is the current market price as well. And even when the price goes above/below a little bit, we still think that SL is 100 pips, because we accept that it SL is calculated as the difference between OP and SL level.
But what if we are in profit with 100 pips and we put SL 10 pips below? Then, how big is our SL if we measure it in pips? Can we now tell that SL is the difference between OP and SL level?
So, now I realize that this option (% of SL) is not very correct, because it is fine only when SL is below OP. Well, if we say that SL (in pips) is the difference between the last market price when we opened/modified our trade and SL level, then everything will be a little bit better. And in MQL4 we know Open Price of any trade, but unfortunately we don't know the last Modify Price, there is no such attribute in MQL4...
Then I decided that I can save that attribute in memory, but everything will be gone when the EA is turned off by accident, and the strategy will be bronek. So I decided that I can also backup that data in external file, but actually almost the same problem goes here - if you modify a trade manually or with another EA that does not operate with this external file, there will be wrong data again.