Extract sell_smoij logic into it's own function
This commit is contained in:
parent
f34bcc5fd3
commit
b2316cdd00
@ -154,19 +154,10 @@ class Telegram(RPC):
|
|||||||
microsecond=0) - msg['open_date'].replace(microsecond=0)
|
microsecond=0) - msg['open_date'].replace(microsecond=0)
|
||||||
msg['duration_min'] = msg['duration'].total_seconds() / 60
|
msg['duration_min'] = msg['duration'].total_seconds() / 60
|
||||||
|
|
||||||
if float(msg['profit_percent']) >= 5.0:
|
msg['emoij'] = self._get_sell_emoij(msg)
|
||||||
message = ("\N{ROCKET} *{exchange}:* Selling {pair}\n").format(**msg)
|
|
||||||
|
|
||||||
elif float(msg['profit_percent']) >= 0.0:
|
message = ("{emoij} *{exchange}:* Selling {pair}\n"
|
||||||
message = "\N{EIGHT SPOKED ASTERISK} *{exchange}:* Selling {pair}\n"
|
"*Amount:* `{amount:.8f}`\n"
|
||||||
|
|
||||||
elif msg['sell_reason'] == "stop_loss":
|
|
||||||
message = ("\N{WARNING SIGN} *{exchange}:* Selling {pair}\n").format(**msg)
|
|
||||||
|
|
||||||
else:
|
|
||||||
message = ("\N{CROSS MARK} *{exchange}:* Selling {pair}\n").format(**msg)
|
|
||||||
|
|
||||||
message += ("*Amount:* `{amount:.8f}`\n"
|
|
||||||
"*Open Rate:* `{open_rate:.8f}`\n"
|
"*Open Rate:* `{open_rate:.8f}`\n"
|
||||||
"*Current Rate:* `{current_rate:.8f}`\n"
|
"*Current Rate:* `{current_rate:.8f}`\n"
|
||||||
"*Close Rate:* `{limit:.8f}`\n"
|
"*Close Rate:* `{limit:.8f}`\n"
|
||||||
@ -201,6 +192,20 @@ class Telegram(RPC):
|
|||||||
|
|
||||||
self._send_msg(message)
|
self._send_msg(message)
|
||||||
|
|
||||||
|
def _get_sell_emoij(self, msg):
|
||||||
|
"""
|
||||||
|
Get emoji for sell-side
|
||||||
|
"""
|
||||||
|
|
||||||
|
if float(msg['profit_percent']) >= 5.0:
|
||||||
|
return "\N{ROCKET}"
|
||||||
|
elif float(msg['profit_percent']) >= 0.0:
|
||||||
|
return "\N{EIGHT SPOKED ASTERISK}"
|
||||||
|
elif msg['sell_reason'] == "stop_loss":
|
||||||
|
return"\N{WARNING SIGN}"
|
||||||
|
else:
|
||||||
|
return "\N{CROSS MARK}"
|
||||||
|
|
||||||
@authorized_only
|
@authorized_only
|
||||||
def _status(self, update: Update, context: CallbackContext) -> None:
|
def _status(self, update: Update, context: CallbackContext) -> None:
|
||||||
"""
|
"""
|
||||||
|
@ -1485,6 +1485,29 @@ def test_send_msg_sell_notification_no_fiat(default_conf, mocker) -> None:
|
|||||||
'*Profit:* `-57.41%`'
|
'*Profit:* `-57.41%`'
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize('msg,expected', [
|
||||||
|
({'profit_percent': 20.1, 'sell_reason': 'roi'}, "\N{ROCKET}"),
|
||||||
|
({'profit_percent': 5.1, 'sell_reason': 'roi'}, "\N{ROCKET}"),
|
||||||
|
({'profit_percent': 2.56, 'sell_reason': 'roi'}, "\N{EIGHT SPOKED ASTERISK}"),
|
||||||
|
({'profit_percent': 1.0, 'sell_reason': 'roi'}, "\N{EIGHT SPOKED ASTERISK}"),
|
||||||
|
({'profit_percent': 0.0, 'sell_reason': 'roi'}, "\N{EIGHT SPOKED ASTERISK}"),
|
||||||
|
({'profit_percent': -5.0, 'sell_reason': 'stop_loss'}, "\N{WARNING SIGN}"),
|
||||||
|
({'profit_percent': -2.0, 'sell_reason': 'sell_signal'}, "\N{CROSS MARK}"),
|
||||||
|
])
|
||||||
|
def test__sell_emoji(default_conf, mocker, msg, expected):
|
||||||
|
del default_conf['fiat_display_currency']
|
||||||
|
msg_mock = MagicMock()
|
||||||
|
mocker.patch.multiple(
|
||||||
|
'freqtrade.rpc.telegram.Telegram',
|
||||||
|
_init=MagicMock(),
|
||||||
|
_send_msg=msg_mock
|
||||||
|
)
|
||||||
|
freqtradebot = get_patched_freqtradebot(mocker, default_conf)
|
||||||
|
telegram = Telegram(freqtradebot)
|
||||||
|
|
||||||
|
assert telegram._get_sell_emoij(msg) == expected
|
||||||
|
|
||||||
|
|
||||||
def test__send_msg(default_conf, mocker) -> None:
|
def test__send_msg(default_conf, mocker) -> None:
|
||||||
mocker.patch('freqtrade.rpc.telegram.Telegram._init', MagicMock())
|
mocker.patch('freqtrade.rpc.telegram.Telegram._init', MagicMock())
|
||||||
bot = MagicMock()
|
bot = MagicMock()
|
||||||
|
Loading…
Reference in New Issue
Block a user