Revert having price_rounding_mode as configuration
This commit is contained in:
parent
1132fa6093
commit
01dfb1cba8
@ -5,8 +5,6 @@ bot constants
|
||||
"""
|
||||
from typing import Any, Dict, List, Literal, Tuple
|
||||
|
||||
from ccxt import ROUND, ROUND_DOWN, ROUND_UP, TRUNCATE
|
||||
|
||||
from freqtrade.enums import CandleType, PriceType, RPCMessageType
|
||||
|
||||
|
||||
@ -52,8 +50,6 @@ DEFAULT_DATAFRAME_COLUMNS = ['date', 'open', 'high', 'low', 'close', 'volume']
|
||||
# it has wide consequences for stored trades files
|
||||
DEFAULT_TRADES_COLUMNS = ['timestamp', 'id', 'type', 'side', 'price', 'amount', 'cost']
|
||||
TRADING_MODES = ['spot', 'margin', 'futures']
|
||||
PRICE_ROUND_MODES = [TRUNCATE, ROUND, ROUND_UP, ROUND_DOWN]
|
||||
DEFAULT_PRICE_ROUND_MODE = ROUND_UP
|
||||
MARGIN_MODES = ['cross', 'isolated', '']
|
||||
|
||||
LAST_BT_RESULT_FN = '.last_result.json'
|
||||
@ -480,9 +476,7 @@ CONF_SCHEMA = {
|
||||
'outdated_offset': {'type': 'integer', 'minimum': 1},
|
||||
'markets_refresh_interval': {'type': 'integer'},
|
||||
'ccxt_config': {'type': 'object'},
|
||||
'ccxt_async_config': {'type': 'object'},
|
||||
'price_rounding_mode': {'type': 'integer', 'enum': PRICE_ROUND_MODES,
|
||||
'default': DEFAULT_PRICE_ROUND_MODE}
|
||||
'ccxt_async_config': {'type': 'object'}
|
||||
},
|
||||
'required': ['name']
|
||||
},
|
||||
|
@ -143,9 +143,7 @@ class Exchange:
|
||||
if config.get('margin_mode')
|
||||
else MarginMode.NONE
|
||||
)
|
||||
self.liquidation_buffer = config.get("liquidation_buffer", 0.05)
|
||||
self._price_rounding_mode = exchange_config.get("price_rounding_mode",
|
||||
DEFAULT_PRICE_ROUND_MODE)
|
||||
self.liquidation_buffer = config.get('liquidation_buffer', 0.05)
|
||||
|
||||
# Deep merge ft_has with default ft_has options
|
||||
self._ft_has = deep_merge_dicts(self._ft_has, deepcopy(self._ft_has_default))
|
||||
@ -732,13 +730,14 @@ class Exchange:
|
||||
"""
|
||||
return amount_to_precision(amount, self.get_precision_amount(pair), self.precisionMode)
|
||||
|
||||
def price_to_precision(self, pair: str, price: float) -> float:
|
||||
def price_to_precision(self, pair: str, price: float, rounding_mode: int) -> float:
|
||||
"""
|
||||
Returns the price rounded to the precision the Exchange accepts.
|
||||
The default price_rounding_mode in conf is ROUND_UP
|
||||
The default price_rounding_mode in conf is ROUND.
|
||||
Must use ROUND_UP / ROUND_DOWN for stoploss calculations.
|
||||
"""
|
||||
return price_to_precision(price, self.get_precision_price(pair),
|
||||
self.precisionMode, self._price_rounding_mode)
|
||||
self.precisionMode, rounding_mode)
|
||||
|
||||
def price_get_one_pip(self, pair: str, price: float) -> float:
|
||||
"""
|
||||
|
@ -5328,21 +5328,3 @@ def test_price_to_precision_with_default_conf(default_conf, mocker):
|
||||
prec_price = patched_ex.price_to_precision("XRP/USDT", 1.0000000101)
|
||||
assert prec_price == 1.00000002
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"rounding_mode, price, expected_price",
|
||||
[
|
||||
(TRUNCATE, 1.0000000199, 1.00000001),
|
||||
(ROUND, 1.0000000149, 1.00000001),
|
||||
(ROUND, 1.0000000151, 1.00000002),
|
||||
(ROUND_UP, 1.0000000101, 1.00000002),
|
||||
],
|
||||
)
|
||||
def test_price_to_precision_rounding_mode_from_conf(
|
||||
default_conf, mocker, rounding_mode, price, expected_price
|
||||
):
|
||||
conf = copy.deepcopy(default_conf)
|
||||
conf["exchange"]["price_rounding_mode"] = rounding_mode
|
||||
patched_ex = get_patched_exchange(mocker, conf)
|
||||
prec_price = patched_ex.price_to_precision("XRP/USDT", price)
|
||||
assert prec_price == expected_price
|
||||
|
Loading…
Reference in New Issue
Block a user