chore: update attribute wording to bt_trades_open
This commit is contained in:
@@ -374,7 +374,7 @@ class LocalTrade:
|
|||||||
use_db: bool = False
|
use_db: bool = False
|
||||||
# Trades container for backtesting
|
# Trades container for backtesting
|
||||||
trades: List["LocalTrade"] = []
|
trades: List["LocalTrade"] = []
|
||||||
trades_open: List["LocalTrade"] = []
|
bt_trades_open: List["LocalTrade"] = []
|
||||||
# Copy of trades_open - but indexed by pair
|
# Copy of trades_open - but indexed by pair
|
||||||
bt_trades_open_pp: Dict[str, List["LocalTrade"]] = defaultdict(list)
|
bt_trades_open_pp: Dict[str, List["LocalTrade"]] = defaultdict(list)
|
||||||
bt_open_open_trade_count: int = 0
|
bt_open_open_trade_count: int = 0
|
||||||
@@ -741,7 +741,7 @@ class LocalTrade:
|
|||||||
Resets all trades. Only active for backtesting mode.
|
Resets all trades. Only active for backtesting mode.
|
||||||
"""
|
"""
|
||||||
LocalTrade.trades = []
|
LocalTrade.trades = []
|
||||||
LocalTrade.trades_open = []
|
LocalTrade.bt_trades_open = []
|
||||||
LocalTrade.bt_trades_open_pp = defaultdict(list)
|
LocalTrade.bt_trades_open_pp = defaultdict(list)
|
||||||
LocalTrade.bt_open_open_trade_count = 0
|
LocalTrade.bt_open_open_trade_count = 0
|
||||||
LocalTrade.total_profit = 0
|
LocalTrade.total_profit = 0
|
||||||
@@ -1418,13 +1418,13 @@ class LocalTrade:
|
|||||||
# Offline mode - without database
|
# Offline mode - without database
|
||||||
if is_open is not None:
|
if is_open is not None:
|
||||||
if is_open:
|
if is_open:
|
||||||
sel_trades = LocalTrade.trades_open
|
sel_trades = LocalTrade.bt_trades_open
|
||||||
else:
|
else:
|
||||||
sel_trades = LocalTrade.trades
|
sel_trades = LocalTrade.trades
|
||||||
|
|
||||||
else:
|
else:
|
||||||
# Not used during backtesting, but might be used by a strategy
|
# Not used during backtesting, but might be used by a strategy
|
||||||
sel_trades = list(LocalTrade.trades + LocalTrade.trades_open)
|
sel_trades = list(LocalTrade.trades + LocalTrade.bt_trades_open)
|
||||||
|
|
||||||
if pair:
|
if pair:
|
||||||
sel_trades = [trade for trade in sel_trades if trade.pair == pair]
|
sel_trades = [trade for trade in sel_trades if trade.pair == pair]
|
||||||
@@ -1439,7 +1439,7 @@ class LocalTrade:
|
|||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def close_bt_trade(trade):
|
def close_bt_trade(trade):
|
||||||
LocalTrade.trades_open.remove(trade)
|
LocalTrade.bt_trades_open.remove(trade)
|
||||||
LocalTrade.bt_trades_open_pp[trade.pair].remove(trade)
|
LocalTrade.bt_trades_open_pp[trade.pair].remove(trade)
|
||||||
LocalTrade.bt_open_open_trade_count -= 1
|
LocalTrade.bt_open_open_trade_count -= 1
|
||||||
LocalTrade.trades.append(trade)
|
LocalTrade.trades.append(trade)
|
||||||
@@ -1448,7 +1448,7 @@ class LocalTrade:
|
|||||||
@staticmethod
|
@staticmethod
|
||||||
def add_bt_trade(trade):
|
def add_bt_trade(trade):
|
||||||
if trade.is_open:
|
if trade.is_open:
|
||||||
LocalTrade.trades_open.append(trade)
|
LocalTrade.bt_trades_open.append(trade)
|
||||||
LocalTrade.bt_trades_open_pp[trade.pair].append(trade)
|
LocalTrade.bt_trades_open_pp[trade.pair].append(trade)
|
||||||
LocalTrade.bt_open_open_trade_count += 1
|
LocalTrade.bt_open_open_trade_count += 1
|
||||||
else:
|
else:
|
||||||
@@ -1456,7 +1456,7 @@ class LocalTrade:
|
|||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def remove_bt_trade(trade):
|
def remove_bt_trade(trade):
|
||||||
LocalTrade.trades_open.remove(trade)
|
LocalTrade.bt_trades_open.remove(trade)
|
||||||
LocalTrade.bt_trades_open_pp[trade.pair].remove(trade)
|
LocalTrade.bt_trades_open_pp[trade.pair].remove(trade)
|
||||||
LocalTrade.bt_open_open_trade_count -= 1
|
LocalTrade.bt_open_open_trade_count -= 1
|
||||||
|
|
||||||
|
|||||||
@@ -1250,6 +1250,6 @@ def test_backtest_results(default_conf, mocker, caplog, data: BTContainer) -> No
|
|||||||
assert res.close_date == _get_frame_time_from_offset(trade.close_tick)
|
assert res.close_date == _get_frame_time_from_offset(trade.close_tick)
|
||||||
assert res.is_short == trade.is_short
|
assert res.is_short == trade.is_short
|
||||||
assert len(LocalTrade.trades) == len(data.trades)
|
assert len(LocalTrade.trades) == len(data.trades)
|
||||||
assert len(LocalTrade.trades_open) == 0
|
assert len(LocalTrade.bt_trades_open) == 0
|
||||||
backtesting.cleanup()
|
backtesting.cleanup()
|
||||||
del backtesting
|
del backtesting
|
||||||
|
|||||||
@@ -529,39 +529,39 @@ def test_backtest__enter_trade(default_conf, fee, mocker) -> None:
|
|||||||
assert trade.stake_amount == 495
|
assert trade.stake_amount == 495
|
||||||
|
|
||||||
# Fake 2 trades, so there's not enough amount for the next trade left.
|
# Fake 2 trades, so there's not enough amount for the next trade left.
|
||||||
LocalTrade.trades_open.append(trade)
|
LocalTrade.bt_trades_open.append(trade)
|
||||||
backtesting.wallets.update()
|
backtesting.wallets.update()
|
||||||
trade = backtesting._enter_trade(pair, row=row, direction="long")
|
trade = backtesting._enter_trade(pair, row=row, direction="long")
|
||||||
assert trade is None
|
assert trade is None
|
||||||
LocalTrade.trades_open.pop()
|
LocalTrade.bt_trades_open.pop()
|
||||||
trade = backtesting._enter_trade(pair, row=row, direction="long")
|
trade = backtesting._enter_trade(pair, row=row, direction="long")
|
||||||
assert trade is not None
|
assert trade is not None
|
||||||
LocalTrade.trades_open.pop()
|
LocalTrade.bt_trades_open.pop()
|
||||||
|
|
||||||
backtesting.strategy.custom_stake_amount = lambda **kwargs: 123.5
|
backtesting.strategy.custom_stake_amount = lambda **kwargs: 123.5
|
||||||
backtesting.wallets.update()
|
backtesting.wallets.update()
|
||||||
trade = backtesting._enter_trade(pair, row=row, direction="long")
|
trade = backtesting._enter_trade(pair, row=row, direction="long")
|
||||||
LocalTrade.trades_open.pop()
|
LocalTrade.bt_trades_open.pop()
|
||||||
assert trade
|
assert trade
|
||||||
assert trade.stake_amount == 123.5
|
assert trade.stake_amount == 123.5
|
||||||
|
|
||||||
# In case of error - use proposed stake
|
# In case of error - use proposed stake
|
||||||
backtesting.strategy.custom_stake_amount = lambda **kwargs: 20 / 0
|
backtesting.strategy.custom_stake_amount = lambda **kwargs: 20 / 0
|
||||||
trade = backtesting._enter_trade(pair, row=row, direction="long")
|
trade = backtesting._enter_trade(pair, row=row, direction="long")
|
||||||
LocalTrade.trades_open.pop()
|
LocalTrade.bt_trades_open.pop()
|
||||||
assert trade
|
assert trade
|
||||||
assert trade.stake_amount == 495
|
assert trade.stake_amount == 495
|
||||||
assert trade.is_short is False
|
assert trade.is_short is False
|
||||||
|
|
||||||
trade = backtesting._enter_trade(pair, row=row, direction="short")
|
trade = backtesting._enter_trade(pair, row=row, direction="short")
|
||||||
LocalTrade.trades_open.pop()
|
LocalTrade.bt_trades_open.pop()
|
||||||
assert trade
|
assert trade
|
||||||
assert trade.stake_amount == 495
|
assert trade.stake_amount == 495
|
||||||
assert trade.is_short is True
|
assert trade.is_short is True
|
||||||
|
|
||||||
mocker.patch(f"{EXMS}.get_max_pair_stake_amount", return_value=300.0)
|
mocker.patch(f"{EXMS}.get_max_pair_stake_amount", return_value=300.0)
|
||||||
trade = backtesting._enter_trade(pair, row=row, direction="long")
|
trade = backtesting._enter_trade(pair, row=row, direction="long")
|
||||||
LocalTrade.trades_open.pop()
|
LocalTrade.bt_trades_open.pop()
|
||||||
assert trade
|
assert trade
|
||||||
assert trade.stake_amount == 300.0
|
assert trade.stake_amount == 300.0
|
||||||
|
|
||||||
|
|||||||
@@ -2137,7 +2137,7 @@ def test_Trade_object_idem():
|
|||||||
)
|
)
|
||||||
EXCLUDES2 = (
|
EXCLUDES2 = (
|
||||||
"trades",
|
"trades",
|
||||||
"trades_open",
|
"bt_trades_open",
|
||||||
"bt_trades_open_pp",
|
"bt_trades_open_pp",
|
||||||
"bt_open_open_trade_count",
|
"bt_open_open_trade_count",
|
||||||
"total_profit",
|
"total_profit",
|
||||||
|
|||||||
Reference in New Issue
Block a user