diff --git a/core/exchanges/common.py b/core/exchanges/common.py index e86dc40..4ad221f 100644 --- a/core/exchanges/common.py +++ b/core/exchanges/common.py @@ -61,22 +61,28 @@ def sl_price_to_percent(sl_price, side, current_price, current_units, unrealised change_percent = ((initial_price - D(sl_price)) / initial_price) * 100 # If the trade is long, the SL price will be higher than the initial price. - if side == "long": - change_percent *= -1 + # if side == "long": + # change_percent *= -1 if side == "long": - if current_price > initial_price: + if D(current_price) > initial_price: profit = True else: profit = False else: - if current_price < initial_price: + if D(current_price) < initial_price: profit = True else: profit = False - if profit: - change_percent *= -1 + # if we are in profit on the short side, we want to show a negative loss + if profit and side == "short": + # change_percent *= -1 + change_percent = 0 - abs(change_percent) + # if we are in loss on the long side, we want to show a positive loss + if not profit and side == "long": + # change_percent *= -1 + change_percent = abs(change_percent) return round(change_percent, 5) diff --git a/core/tests/trading/test_live.py b/core/tests/trading/test_live.py index 714b67d..b9ffabf 100644 --- a/core/tests/trading/test_live.py +++ b/core/tests/trading/test_live.py @@ -134,10 +134,14 @@ class LiveTradingTestCase(ElasticMock, LiveBase, TestCase): expected_sl_percent = D(2 - self.commission) actual_tp_percent = trades_converted[0]["take_profit_percent"] actual_sl_percent = trades_converted[0]["stop_loss_percent"] + print("actual_tp_percent", actual_tp_percent) + print("actual_sl_percent", actual_sl_percent) tp_percent_difference = abs(expected_tp_percent - actual_tp_percent) sl_percent_difference = abs(expected_sl_percent - actual_sl_percent) max_difference = D(0.08) # depends on market conditions + print("TP percent difference: {}".format(tp_percent_difference)) + print("SL percent difference: {}".format(sl_percent_difference)) self.assertLess(tp_percent_difference, max_difference) self.assertLess(sl_percent_difference, max_difference)