Merge branch 'develop' into api-server-list-custom-data

This commit is contained in:
Axel-CH
2025-03-12 10:39:43 -04:00
24 changed files with 320 additions and 202 deletions

View File

@@ -408,20 +408,20 @@ def test_get_analyzed_dataframe(mocker, default_conf, ohlcv_history):
# Test backtest mode
default_conf["runmode"] = RunMode.BACKTEST
dp._set_dataframe_max_index(1)
dp._set_dataframe_max_index("XRP/BTC", 1)
dataframe, time = dp.get_analyzed_dataframe("XRP/BTC", timeframe)
assert len(dataframe) == 1
dp._set_dataframe_max_index(2)
dp._set_dataframe_max_index("XRP/BTC", 2)
dataframe, time = dp.get_analyzed_dataframe("XRP/BTC", timeframe)
assert len(dataframe) == 2
dp._set_dataframe_max_index(3)
dp._set_dataframe_max_index("XRP/BTC", 3)
dataframe, time = dp.get_analyzed_dataframe("XRP/BTC", timeframe)
assert len(dataframe) == 3
dp._set_dataframe_max_index(500)
dp._set_dataframe_max_index("XRP/BTC", 500)
dataframe, time = dp.get_analyzed_dataframe("XRP/BTC", timeframe)
assert len(dataframe) == len(ohlcv_history)

View File

@@ -6077,44 +6077,47 @@ def test_get_liquidation_price1(mocker, default_conf):
@pytest.mark.parametrize("liquidation_buffer", [0.0])
@pytest.mark.parametrize(
"is_short,trading_mode,exchange_name,margin_mode,leverage,open_rate,amount,expected_liq",
"is_short,trading_mode,exchange_name,margin_mode,leverage,open_rate,amount,mramt,expected_liq",
[
(False, "spot", "binance", "", 5.0, 10.0, 1.0, None),
(True, "spot", "binance", "", 5.0, 10.0, 1.0, None),
(False, "spot", "gate", "", 5.0, 10.0, 1.0, None),
(True, "spot", "gate", "", 5.0, 10.0, 1.0, None),
(False, "spot", "okx", "", 5.0, 10.0, 1.0, None),
(True, "spot", "okx", "", 5.0, 10.0, 1.0, None),
(False, "spot", "binance", "", 5.0, 10.0, 1.0, (0.01, 0.01), None),
(True, "spot", "binance", "", 5.0, 10.0, 1.0, (0.01, 0.01), None),
(False, "spot", "gate", "", 5.0, 10.0, 1.0, (0.01, 0.01), None),
(True, "spot", "gate", "", 5.0, 10.0, 1.0, (0.01, 0.01), None),
(False, "spot", "okx", "", 5.0, 10.0, 1.0, (0.01, 0.01), None),
(True, "spot", "okx", "", 5.0, 10.0, 1.0, (0.01, 0.01), None),
# Binance, short
(True, "futures", "binance", "isolated", 5.0, 10.0, 1.0, 11.89108910891089),
(True, "futures", "binance", "isolated", 3.0, 10.0, 1.0, 13.211221122079207),
(True, "futures", "binance", "isolated", 5.0, 8.0, 1.0, 9.514851485148514),
(True, "futures", "binance", "isolated", 5.0, 10.0, 0.6, 11.897689768976898),
(True, "futures", "binance", "isolated", 5.0, 10.0, 1.0, (0.01, 0.01), 11.89108910891089),
(True, "futures", "binance", "isolated", 3.0, 10.0, 1.0, (0.01, 0.01), 13.211221122079207),
(True, "futures", "binance", "isolated", 5.0, 8.0, 1.0, (0.01, 0.01), 9.514851485148514),
(True, "futures", "binance", "isolated", 5.0, 10.0, 0.6, (0.01, 0.01), 11.897689768976898),
# Binance, long
(False, "futures", "binance", "isolated", 5, 10, 1.0, 8.070707070707071),
(False, "futures", "binance", "isolated", 5, 8, 1.0, 6.454545454545454),
(False, "futures", "binance", "isolated", 3, 10, 1.0, 6.723905723905723),
(False, "futures", "binance", "isolated", 5, 10, 0.6, 8.063973063973064),
(False, "futures", "binance", "isolated", 5, 10, 1.0, (0.01, 0.01), 8.070707070707071),
(False, "futures", "binance", "isolated", 5, 8, 1.0, (0.01, 0.01), 6.454545454545454),
(False, "futures", "binance", "isolated", 3, 10, 1.0, (0.01, 0.01), 6.723905723905723),
(False, "futures", "binance", "isolated", 5, 10, 0.6, (0.01, 0.01), 8.063973063973064),
# Gate/okx, short
(True, "futures", "gate", "isolated", 5, 10, 1.0, 11.87413417771621),
(True, "futures", "gate", "isolated", 5, 10, 2.0, 11.87413417771621),
(True, "futures", "gate", "isolated", 3, 10, 1.0, 13.193482419684678),
(True, "futures", "gate", "isolated", 5, 8, 1.0, 9.499307342172967),
(True, "futures", "okx", "isolated", 3, 10, 1.0, 13.193482419684678),
(True, "futures", "gate", "isolated", 5, 10, 1.0, (0.01, 0.01), 11.87413417771621),
(True, "futures", "gate", "isolated", 5, 10, 2.0, (0.01, 0.01), 11.87413417771621),
(True, "futures", "gate", "isolated", 3, 10, 1.0, (0.01, 0.01), 13.193482419684678),
(True, "futures", "gate", "isolated", 5, 8, 1.0, (0.01, 0.01), 9.499307342172967),
(True, "futures", "okx", "isolated", 3, 10, 1.0, (0.01, 0.01), 13.193482419684678),
# Gate/okx, long
(False, "futures", "gate", "isolated", 5.0, 10.0, 1.0, 8.085708510208207),
(False, "futures", "gate", "isolated", 3.0, 10.0, 1.0, 6.738090425173506),
(False, "futures", "okx", "isolated", 3.0, 10.0, 1.0, 6.738090425173506),
(False, "futures", "gate", "isolated", 5.0, 10.0, 1.0, (0.01, 0.01), 8.085708510208207),
(False, "futures", "gate", "isolated", 3.0, 10.0, 1.0, (0.01, 0.01), 6.738090425173506),
(False, "futures", "okx", "isolated", 3.0, 10.0, 1.0, (0.01, 0.01), 6.738090425173506),
# bybit, long
(False, "futures", "bybit", "isolated", 1.0, 10.0, 1.0, 0.1),
(False, "futures", "bybit", "isolated", 3.0, 10.0, 1.0, 6.7666666),
(False, "futures", "bybit", "isolated", 5.0, 10.0, 1.0, 8.1),
(False, "futures", "bybit", "isolated", 10.0, 10.0, 1.0, 9.1),
(False, "futures", "bybit", "isolated", 1.0, 10.0, 1.0, (0.01, 0.01), 0.1),
(False, "futures", "bybit", "isolated", 3.0, 10.0, 1.0, (0.01, 0.01), 6.7666666),
(False, "futures", "bybit", "isolated", 5.0, 10.0, 1.0, (0.01, 0.01), 8.1),
(False, "futures", "bybit", "isolated", 10.0, 10.0, 1.0, (0.01, 0.01), 9.1),
# From the bybit example - without additional margin
(False, "futures", "bybit", "isolated", 50.0, 40000.0, 1.0, (0.005, None), 39400),
(False, "futures", "bybit", "isolated", 50.0, 20000.0, 1.0, (0.005, None), 19700),
# bybit, short
(True, "futures", "bybit", "isolated", 1.0, 10.0, 1.0, 19.9),
(True, "futures", "bybit", "isolated", 3.0, 10.0, 1.0, 13.233333),
(True, "futures", "bybit", "isolated", 5.0, 10.0, 1.0, 11.9),
(True, "futures", "bybit", "isolated", 10.0, 10.0, 1.0, 10.9),
(True, "futures", "bybit", "isolated", 1.0, 10.0, 1.0, (0.01, 0.01), 19.9),
(True, "futures", "bybit", "isolated", 3.0, 10.0, 1.0, (0.01, 0.01), 13.233333),
(True, "futures", "bybit", "isolated", 5.0, 10.0, 1.0, (0.01, 0.01), 11.9),
(True, "futures", "bybit", "isolated", 10.0, 10.0, 1.0, (0.01, 0.01), 10.9),
],
)
def test_get_liquidation_price(
@@ -6127,6 +6130,7 @@ def test_get_liquidation_price(
leverage,
open_rate,
amount,
mramt,
expected_liq,
liquidation_buffer,
):
@@ -6190,7 +6194,7 @@ def test_get_liquidation_price(
mocker.patch(f"{EXMS}.price_to_precision", lambda s, x, y, **kwargs: y)
exchange = get_patched_exchange(mocker, default_conf_usdt, exchange=exchange_name)
exchange.get_maintenance_ratio_and_amt = MagicMock(return_value=(0.01, 0.01))
exchange.get_maintenance_ratio_and_amt = MagicMock(return_value=mramt)
exchange.name = exchange_name
# default_conf_usdt.update({
# "dry_run": False,

View File

@@ -1543,8 +1543,7 @@ def test_backtest_multi_pair(default_conf, fee, mocker, tres, pair, testdatadir)
assert len(evaluate_result_multi(results["results"], "5m", 3)) == 0
# Cached data correctly removed amounts
offset = 1 if tres == 0 else 0
removed_candles = len(data[pair]) - offset
removed_candles = len(data[pair]) - 1
assert len(backtesting.dataprovider.get_analyzed_dataframe(pair, "5m")[0]) == removed_candles
assert (
len(backtesting.dataprovider.get_analyzed_dataframe("NXT/BTC", "5m")[0])
@@ -1663,8 +1662,7 @@ def test_backtest_multi_pair_detail(
assert len(evaluate_result_multi(results["results"], "5m", 3)) == 0
# Cached data correctly removed amounts
offset = 1 if tres == 0 else 0
removed_candles = len(data[pair]) - offset
removed_candles = len(data[pair]) - 1
assert len(backtesting.dataprovider.get_analyzed_dataframe(pair, "5m")[0]) == removed_candles
assert (
len(backtesting.dataprovider.get_analyzed_dataframe("NXT/USDT", "5m")[0])
@@ -1793,7 +1791,7 @@ def test_backtest_multi_pair_detail_simplified(
assert len(evaluate_result_multi(results["results"], "1m", 3)) == 0
# # Cached data correctly removed amounts
offset = 1 if tres == 0 else 0
offset = 1
removed_candles = len(data[pair]) - offset
assert len(backtesting.dataprovider.get_analyzed_dataframe(pair, "1h")[0]) == removed_candles
assert (