total_open_trades_stake should support no-db mode
This commit is contained in:
parent
0faa6f84dc
commit
0754a7a78f
@ -671,9 +671,13 @@ class Trade(_DECL_BASE):
|
|||||||
Calculates total invested amount in open trades
|
Calculates total invested amount in open trades
|
||||||
in stake currency
|
in stake currency
|
||||||
"""
|
"""
|
||||||
total_open_stake_amount = Trade.session.query(func.sum(Trade.stake_amount))\
|
if Trade.use_db:
|
||||||
.filter(Trade.is_open.is_(True))\
|
total_open_stake_amount = Trade.session.query(func.sum(Trade.stake_amount))\
|
||||||
.scalar()
|
.filter(Trade.is_open.is_(True))\
|
||||||
|
.scalar()
|
||||||
|
else:
|
||||||
|
total_open_stake_amount = sum(
|
||||||
|
t.stake_amount for t in Trade.get_trades_proxy(is_open=True))
|
||||||
return total_open_stake_amount or 0
|
return total_open_stake_amount or 0
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
@ -183,28 +183,34 @@ def patch_get_signal(freqtrade: FreqtradeBot, value=(True, False)) -> None:
|
|||||||
freqtrade.exchange.refresh_latest_ohlcv = lambda p: None
|
freqtrade.exchange.refresh_latest_ohlcv = lambda p: None
|
||||||
|
|
||||||
|
|
||||||
def create_mock_trades(fee):
|
def create_mock_trades(fee, use_db: bool = True):
|
||||||
"""
|
"""
|
||||||
Create some fake trades ...
|
Create some fake trades ...
|
||||||
"""
|
"""
|
||||||
|
def add_trade(trade):
|
||||||
|
if use_db:
|
||||||
|
Trade.session.add(trade)
|
||||||
|
else:
|
||||||
|
Trade.trades.append(trade)
|
||||||
|
|
||||||
# Simulate dry_run entries
|
# Simulate dry_run entries
|
||||||
trade = mock_trade_1(fee)
|
trade = mock_trade_1(fee)
|
||||||
Trade.session.add(trade)
|
add_trade(trade)
|
||||||
|
|
||||||
trade = mock_trade_2(fee)
|
trade = mock_trade_2(fee)
|
||||||
Trade.session.add(trade)
|
add_trade(trade)
|
||||||
|
|
||||||
trade = mock_trade_3(fee)
|
trade = mock_trade_3(fee)
|
||||||
Trade.session.add(trade)
|
add_trade(trade)
|
||||||
|
|
||||||
trade = mock_trade_4(fee)
|
trade = mock_trade_4(fee)
|
||||||
Trade.session.add(trade)
|
add_trade(trade)
|
||||||
|
|
||||||
trade = mock_trade_5(fee)
|
trade = mock_trade_5(fee)
|
||||||
Trade.session.add(trade)
|
add_trade(trade)
|
||||||
|
|
||||||
trade = mock_trade_6(fee)
|
trade = mock_trade_6(fee)
|
||||||
Trade.session.add(trade)
|
add_trade(trade)
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(autouse=True)
|
@pytest.fixture(autouse=True)
|
||||||
|
@ -28,6 +28,7 @@ def mock_trade_1(fee):
|
|||||||
amount_requested=123.0,
|
amount_requested=123.0,
|
||||||
fee_open=fee.return_value,
|
fee_open=fee.return_value,
|
||||||
fee_close=fee.return_value,
|
fee_close=fee.return_value,
|
||||||
|
is_open=True,
|
||||||
open_rate=0.123,
|
open_rate=0.123,
|
||||||
exchange='bittrex',
|
exchange='bittrex',
|
||||||
open_order_id='dry_run_buy_12345',
|
open_order_id='dry_run_buy_12345',
|
||||||
@ -180,6 +181,7 @@ def mock_trade_4(fee):
|
|||||||
amount_requested=124.0,
|
amount_requested=124.0,
|
||||||
fee_open=fee.return_value,
|
fee_open=fee.return_value,
|
||||||
fee_close=fee.return_value,
|
fee_close=fee.return_value,
|
||||||
|
is_open=True,
|
||||||
open_rate=0.123,
|
open_rate=0.123,
|
||||||
exchange='bittrex',
|
exchange='bittrex',
|
||||||
open_order_id='prod_buy_12345',
|
open_order_id='prod_buy_12345',
|
||||||
@ -230,6 +232,7 @@ def mock_trade_5(fee):
|
|||||||
amount_requested=124.0,
|
amount_requested=124.0,
|
||||||
fee_open=fee.return_value,
|
fee_open=fee.return_value,
|
||||||
fee_close=fee.return_value,
|
fee_close=fee.return_value,
|
||||||
|
is_open=True,
|
||||||
open_rate=0.123,
|
open_rate=0.123,
|
||||||
exchange='bittrex',
|
exchange='bittrex',
|
||||||
strategy='SampleStrategy',
|
strategy='SampleStrategy',
|
||||||
@ -281,6 +284,7 @@ def mock_trade_6(fee):
|
|||||||
amount_requested=2.0,
|
amount_requested=2.0,
|
||||||
fee_open=fee.return_value,
|
fee_open=fee.return_value,
|
||||||
fee_close=fee.return_value,
|
fee_close=fee.return_value,
|
||||||
|
is_open=True,
|
||||||
open_rate=0.15,
|
open_rate=0.15,
|
||||||
exchange='bittrex',
|
exchange='bittrex',
|
||||||
strategy='SampleStrategy',
|
strategy='SampleStrategy',
|
||||||
|
@ -1039,14 +1039,18 @@ def test_fee_updated(fee):
|
|||||||
|
|
||||||
|
|
||||||
@pytest.mark.usefixtures("init_persistence")
|
@pytest.mark.usefixtures("init_persistence")
|
||||||
def test_total_open_trades_stakes(fee):
|
@pytest.mark.parametrize('use_db', [True, False])
|
||||||
|
def test_total_open_trades_stakes(fee, use_db):
|
||||||
|
|
||||||
|
Trade.use_db = use_db
|
||||||
res = Trade.total_open_trades_stakes()
|
res = Trade.total_open_trades_stakes()
|
||||||
assert res == 0
|
assert res == 0
|
||||||
create_mock_trades(fee)
|
create_mock_trades(fee, use_db)
|
||||||
res = Trade.total_open_trades_stakes()
|
res = Trade.total_open_trades_stakes()
|
||||||
assert res == 0.004
|
assert res == 0.004
|
||||||
|
|
||||||
|
Trade.use_db = True
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.usefixtures("init_persistence")
|
@pytest.mark.usefixtures("init_persistence")
|
||||||
def test_get_overall_performance(fee):
|
def test_get_overall_performance(fee):
|
||||||
|
Loading…
Reference in New Issue
Block a user