Это ясно, но почему минус?
Тогда бы далее было stop = pos.EntryPrice * (1 + (pos.IsLong ? -shift : shift));
Зачем инвертировать StopLoss?