chore: update attribute wording to bt_trades
This commit is contained in:
@@ -1491,7 +1491,7 @@ class Backtesting:
|
|||||||
self.handle_left_open(LocalTrade.bt_trades_open_pp, data=data)
|
self.handle_left_open(LocalTrade.bt_trades_open_pp, data=data)
|
||||||
self.wallets.update()
|
self.wallets.update()
|
||||||
|
|
||||||
results = trade_list_to_dataframe(LocalTrade.trades)
|
results = trade_list_to_dataframe(LocalTrade.bt_trades)
|
||||||
return {
|
return {
|
||||||
"results": results,
|
"results": results,
|
||||||
"config": self.strategy.config,
|
"config": self.strategy.config,
|
||||||
|
|||||||
@@ -373,7 +373,7 @@ class LocalTrade:
|
|||||||
|
|
||||||
use_db: bool = False
|
use_db: bool = False
|
||||||
# Trades container for backtesting
|
# Trades container for backtesting
|
||||||
trades: List["LocalTrade"] = []
|
bt_trades: List["LocalTrade"] = []
|
||||||
bt_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)
|
||||||
@@ -740,7 +740,7 @@ class LocalTrade:
|
|||||||
"""
|
"""
|
||||||
Resets all trades. Only active for backtesting mode.
|
Resets all trades. Only active for backtesting mode.
|
||||||
"""
|
"""
|
||||||
LocalTrade.trades = []
|
LocalTrade.bt_trades = []
|
||||||
LocalTrade.bt_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
|
||||||
@@ -1405,7 +1405,7 @@ class LocalTrade:
|
|||||||
Helper function to query Trades.
|
Helper function to query Trades.
|
||||||
Returns a List of trades, filtered on the parameters given.
|
Returns a List of trades, filtered on the parameters given.
|
||||||
In live mode, converts the filter to a database query and returns all rows
|
In live mode, converts the filter to a database query and returns all rows
|
||||||
In Backtest mode, uses filters on Trade.trades to get the result.
|
In Backtest mode, uses filters on Trade.bt_trades to get the result.
|
||||||
|
|
||||||
:param pair: Filter by pair
|
:param pair: Filter by pair
|
||||||
:param is_open: Filter by open/closed status
|
:param is_open: Filter by open/closed status
|
||||||
@@ -1420,11 +1420,11 @@ class LocalTrade:
|
|||||||
if is_open:
|
if is_open:
|
||||||
sel_trades = LocalTrade.bt_trades_open
|
sel_trades = LocalTrade.bt_trades_open
|
||||||
else:
|
else:
|
||||||
sel_trades = LocalTrade.trades
|
sel_trades = LocalTrade.bt_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.bt_trades_open)
|
sel_trades = list(LocalTrade.bt_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]
|
||||||
@@ -1442,7 +1442,7 @@ class LocalTrade:
|
|||||||
LocalTrade.bt_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.bt_trades.append(trade)
|
||||||
LocalTrade.total_profit += trade.close_profit_abs
|
LocalTrade.total_profit += trade.close_profit_abs
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
@@ -1452,7 +1452,7 @@ class LocalTrade:
|
|||||||
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:
|
||||||
LocalTrade.trades.append(trade)
|
LocalTrade.bt_trades.append(trade)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def remove_bt_trade(trade):
|
def remove_bt_trade(trade):
|
||||||
@@ -1761,7 +1761,7 @@ class Trade(ModelBase, LocalTrade):
|
|||||||
Helper function to query Trades.j
|
Helper function to query Trades.j
|
||||||
Returns a List of trades, filtered on the parameters given.
|
Returns a List of trades, filtered on the parameters given.
|
||||||
In live mode, converts the filter to a database query and returns all rows
|
In live mode, converts the filter to a database query and returns all rows
|
||||||
In Backtest mode, uses filters on Trade.trades to get the result.
|
In Backtest mode, uses filters on Trade.bt_trades to get the result.
|
||||||
|
|
||||||
:return: unsorted List[Trade]
|
:return: unsorted List[Trade]
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -182,7 +182,7 @@ def api_get_backtest():
|
|||||||
ApiBG.bt["bt"].progress.action if ApiBG.bt["bt"] else str(BacktestState.STARTUP)
|
ApiBG.bt["bt"].progress.action if ApiBG.bt["bt"] else str(BacktestState.STARTUP)
|
||||||
),
|
),
|
||||||
"progress": ApiBG.bt["bt"].progress.progress if ApiBG.bt["bt"] else 0,
|
"progress": ApiBG.bt["bt"].progress.progress if ApiBG.bt["bt"] else 0,
|
||||||
"trade_count": len(LocalTrade.trades),
|
"trade_count": len(LocalTrade.bt_trades),
|
||||||
"status_msg": "Backtest running",
|
"status_msg": "Backtest running",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1249,7 +1249,7 @@ def test_backtest_results(default_conf, mocker, caplog, data: BTContainer) -> No
|
|||||||
assert res.open_date == _get_frame_time_from_offset(trade.open_tick)
|
assert res.open_date == _get_frame_time_from_offset(trade.open_tick)
|
||||||
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.bt_trades) == len(data.trades)
|
||||||
assert len(LocalTrade.bt_trades_open) == 0
|
assert len(LocalTrade.bt_trades_open) == 0
|
||||||
backtesting.cleanup()
|
backtesting.cleanup()
|
||||||
del backtesting
|
del backtesting
|
||||||
|
|||||||
@@ -1041,7 +1041,7 @@ def test_backtest_one_detail_futures(
|
|||||||
<= round(t["close_rate"], 6)
|
<= round(t["close_rate"], 6)
|
||||||
<= round(ln2.iloc[0]["high"], 6)
|
<= round(ln2.iloc[0]["high"], 6)
|
||||||
)
|
)
|
||||||
assert pytest.approx(Trade.trades[1].funding_fees) == exp_funding_fee
|
assert pytest.approx(Trade.bt_trades[1].funding_fees) == exp_funding_fee
|
||||||
assert ff_spy.call_count == exp_ff_updates
|
assert ff_spy.call_count == exp_ff_updates
|
||||||
# assert late_entry > 0
|
# assert late_entry > 0
|
||||||
|
|
||||||
@@ -1136,7 +1136,7 @@ def test_backtest_one_detail_futures_funding_fees(
|
|||||||
# Additional counts will happen due each successful entry, which needs to call this, too.
|
# Additional counts will happen due each successful entry, which needs to call this, too.
|
||||||
assert ff_spy.call_count == ff_updates
|
assert ff_spy.call_count == ff_updates
|
||||||
|
|
||||||
for t in Trade.trades:
|
for t in Trade.bt_trades:
|
||||||
# At least 6 adjustment orders
|
# At least 6 adjustment orders
|
||||||
assert t.nr_of_successful_entries == entries
|
assert t.nr_of_successful_entries == entries
|
||||||
# Funding fees will vary depending on the number of adjustment orders
|
# Funding fees will vary depending on the number of adjustment orders
|
||||||
|
|||||||
@@ -2136,7 +2136,7 @@ def test_Trade_object_idem():
|
|||||||
"custom_data",
|
"custom_data",
|
||||||
)
|
)
|
||||||
EXCLUDES2 = (
|
EXCLUDES2 = (
|
||||||
"trades",
|
"bt_trades",
|
||||||
"bt_trades_open",
|
"bt_trades_open",
|
||||||
"bt_trades_open_pp",
|
"bt_trades_open_pp",
|
||||||
"bt_open_open_trade_count",
|
"bt_open_open_trade_count",
|
||||||
|
|||||||
Reference in New Issue
Block a user