Added more update_funding_fee tests, set exchange of default conf
This commit is contained in:
parent
a4a5c1aad0
commit
e367f84b06
@ -29,6 +29,7 @@ class Binance(Exchange):
|
||||
"l2_limit_range": [5, 10, 20, 50, 100, 500, 1000],
|
||||
}
|
||||
funding_fee_times: List[int] = [0, 8, 16] # hours of the day
|
||||
# but the schedule won't check within this timeframe
|
||||
|
||||
_supported_trading_mode_collateral_pairs: List[Tuple[TradingMode, Collateral]] = [
|
||||
# TradingMode.SPOT always supported and not required in this list
|
||||
|
@ -1,7 +1,8 @@
|
||||
""" Bybit exchange subclass """
|
||||
import logging
|
||||
from typing import Dict, List
|
||||
from typing import Dict, List, Tuple
|
||||
|
||||
from freqtrade.enums import Collateral, TradingMode
|
||||
from freqtrade.exchange import Exchange
|
||||
|
||||
|
||||
@ -23,3 +24,9 @@ class Bybit(Exchange):
|
||||
}
|
||||
|
||||
funding_fee_times: List[int] = [0, 8, 16] # hours of the day
|
||||
|
||||
_supported_trading_mode_collateral_pairs: List[Tuple[TradingMode, Collateral]] = [
|
||||
# TradingMode.SPOT always supported and not required in this list
|
||||
# (TradingMode.FUTURES, Collateral.CROSS), # TODO-lev: Uncomment once supported
|
||||
# (TradingMode.FUTURES, Collateral.ISOLATED) # TODO-lev: Uncomment once supported
|
||||
]
|
||||
|
@ -21,7 +21,7 @@ class Ftx(Exchange):
|
||||
"stoploss_on_exchange": True,
|
||||
"ohlcv_candle_limit": 1500,
|
||||
}
|
||||
funding_fee_times: List[int] = list(range(0, 23))
|
||||
funding_fee_times: List[int] = list(range(0, 24))
|
||||
|
||||
_supported_trading_mode_collateral_pairs: List[Tuple[TradingMode, Collateral]] = [
|
||||
# TradingMode.SPOT always supported and not required in this list
|
||||
|
@ -111,10 +111,15 @@ class FreqtradeBot(LoggingMixin):
|
||||
self.trading_mode = TradingMode.SPOT
|
||||
|
||||
if self.trading_mode == TradingMode.FUTURES:
|
||||
for time_slot in self.exchange.funding_fee_times:
|
||||
schedule.every().day.at(str(time(time_slot))).do(self.update_funding_fees)
|
||||
|
||||
def update():
|
||||
self.update_funding_fees()
|
||||
self.wallets.update()
|
||||
|
||||
for time_slot in self.exchange.funding_fee_times:
|
||||
t = str(time(time_slot))
|
||||
schedule.every().day.at(t).do(update)
|
||||
|
||||
def notify_status(self, msg: str) -> None:
|
||||
"""
|
||||
Public method for users of this class (worker, etc.) to send notifications
|
||||
|
@ -6,10 +6,10 @@ import time
|
||||
from copy import deepcopy
|
||||
from math import isclose
|
||||
from unittest.mock import ANY, MagicMock, PropertyMock
|
||||
import schedule
|
||||
|
||||
import arrow
|
||||
import pytest
|
||||
import schedule
|
||||
|
||||
from freqtrade.constants import CANCEL_REASON, MATH_CLOSE_PREC, UNLIMITED_STAKE_AMOUNT
|
||||
from freqtrade.enums import RPCMessageType, RunMode, SellType, State, TradingMode
|
||||
@ -4281,40 +4281,29 @@ def test_get_valid_price(mocker, default_conf_usdt) -> None:
|
||||
assert valid_price_at_min_alwd < proposed_price
|
||||
|
||||
|
||||
@pytest.mark.parametrize('exchange,trading_mode,calls', [
|
||||
("ftx", TradingMode.SPOT, 0),
|
||||
("ftx", TradingMode.MARGIN, 0),
|
||||
("binance", TradingMode.FUTURES, 2),
|
||||
("kraken", TradingMode.FUTURES, 3),
|
||||
("ftx", TradingMode.FUTURES, 9),
|
||||
@pytest.mark.parametrize('exchange,trading_mode,calls,t1,t2', [
|
||||
("ftx", TradingMode.SPOT, 0, "2021-09-01 00:00:00", "2021-09-01 08:00:00"),
|
||||
("ftx", TradingMode.MARGIN, 0, "2021-09-01 00:00:00", "2021-09-01 08:00:00"),
|
||||
("binance", TradingMode.FUTURES, 1, "2021-09-01 00:00:01", "2021-09-01 08:00:00"),
|
||||
("kraken", TradingMode.FUTURES, 2, "2021-09-01 00:00:01", "2021-09-01 08:00:00"),
|
||||
("ftx", TradingMode.FUTURES, 8, "2021-09-01 00:00:01", "2021-09-01 08:00:00"),
|
||||
("binance", TradingMode.FUTURES, 2, "2021-08-31 23:59:59", "2021-09-01 08:00:01"),
|
||||
("kraken", TradingMode.FUTURES, 3, "2021-08-31 23:59:59", "2021-09-01 08:00:01"),
|
||||
("ftx", TradingMode.FUTURES, 9, "2021-08-31 23:59:59", "2021-09-01 08:00:01"),
|
||||
])
|
||||
def test_update_funding_fees(mocker, default_conf, exchange, trading_mode, calls, time_machine):
|
||||
time_machine.move_to("2021-09-01 00:00:00 +00:00")
|
||||
def test_update_funding_fees(mocker, default_conf, exchange, trading_mode, calls, time_machine,
|
||||
t1, t2):
|
||||
time_machine.move_to(f"{t1} +00:00")
|
||||
|
||||
patch_RPCManager(mocker)
|
||||
patch_exchange(mocker, id=exchange)
|
||||
mocker.patch('freqtrade.freqtradebot.FreqtradeBot.update_funding_fees', return_value=True)
|
||||
default_conf['trading_mode'] = trading_mode
|
||||
default_conf['collateral'] = 'isolated'
|
||||
default_conf['exchange']['name'] = exchange
|
||||
freqtrade = get_patched_freqtradebot(mocker, default_conf)
|
||||
|
||||
# trade = Trade(
|
||||
# id=2,
|
||||
# pair='ADA/USDT',
|
||||
# stake_amount=60.0,
|
||||
# open_rate=2.0,
|
||||
# amount=30.0,
|
||||
# is_open=True,
|
||||
# open_date=arrow.utcnow().datetime,
|
||||
# fee_open=fee.return_value,
|
||||
# fee_close=fee.return_value,
|
||||
# exchange='binance',
|
||||
# is_short=False,
|
||||
# leverage=3.0,
|
||||
# trading_mode=trading_mode
|
||||
# )
|
||||
|
||||
time_machine.move_to("2021-09-01 08:00:00 +00:00")
|
||||
time_machine.move_to(f"{t2} +00:00")
|
||||
schedule.run_pending()
|
||||
|
||||
assert freqtrade.update_funding_fees.call_count == calls
|
||||
|
Loading…
Reference in New Issue
Block a user