Started some pytests for short and leverage
This commit is contained in:
parent
c6a818eb17
commit
e00a93a92b
@ -24,7 +24,7 @@ from freqtrade.persistence import LocalTrade, Trade, init_db
|
|||||||
from freqtrade.resolvers import ExchangeResolver
|
from freqtrade.resolvers import ExchangeResolver
|
||||||
from freqtrade.worker import Worker
|
from freqtrade.worker import Worker
|
||||||
from tests.conftest_trades import (mock_trade_1, mock_trade_2, mock_trade_3, mock_trade_4,
|
from tests.conftest_trades import (mock_trade_1, mock_trade_2, mock_trade_3, mock_trade_4,
|
||||||
mock_trade_5, mock_trade_6)
|
mock_trade_5, mock_trade_6, short_trade, leverage_trade)
|
||||||
|
|
||||||
|
|
||||||
logging.getLogger('').setLevel(logging.INFO)
|
logging.getLogger('').setLevel(logging.INFO)
|
||||||
@ -221,7 +221,12 @@ def create_mock_trades(fee, use_db: bool = True):
|
|||||||
trade = mock_trade_6(fee)
|
trade = mock_trade_6(fee)
|
||||||
add_trade(trade)
|
add_trade(trade)
|
||||||
|
|
||||||
# TODO-mg: Add margin trades
|
# TODO: margin trades
|
||||||
|
# trade = short_trade(fee)
|
||||||
|
# add_trade(trade)
|
||||||
|
|
||||||
|
# trade = leverage_trade(fee)
|
||||||
|
# add_trade(trade)
|
||||||
|
|
||||||
if use_db:
|
if use_db:
|
||||||
Trade.query.session.flush()
|
Trade.query.session.flush()
|
||||||
@ -252,7 +257,7 @@ def patch_coingekko(mocker) -> None:
|
|||||||
@pytest.fixture(scope='function')
|
@pytest.fixture(scope='function')
|
||||||
def init_persistence(default_conf):
|
def init_persistence(default_conf):
|
||||||
init_db(default_conf['db_url'], default_conf['dry_run'])
|
init_db(default_conf['db_url'], default_conf['dry_run'])
|
||||||
# TODO-mg: margin with leverage and/or borrowed?
|
# TODO-mg: trade with leverage and/or borrowed?
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(scope="function")
|
@pytest.fixture(scope="function")
|
||||||
|
@ -304,4 +304,133 @@ def mock_trade_6(fee):
|
|||||||
trade.orders.append(o)
|
trade.orders.append(o)
|
||||||
return trade
|
return trade
|
||||||
|
|
||||||
# TODO-mg: Mock orders for leveraged and short trades
|
|
||||||
|
#! TODO Currently the following short_trade test and leverage_trade test will fail
|
||||||
|
|
||||||
|
|
||||||
|
def short_order():
|
||||||
|
return {
|
||||||
|
'id': '1235',
|
||||||
|
'symbol': 'ETC/BTC',
|
||||||
|
'status': 'closed',
|
||||||
|
'side': 'sell',
|
||||||
|
'type': 'limit',
|
||||||
|
'price': 0.123,
|
||||||
|
'amount': 123.0,
|
||||||
|
'filled': 123.0,
|
||||||
|
'remaining': 0.0,
|
||||||
|
'leverage': 5.0,
|
||||||
|
'isShort': True
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def exit_short_order():
|
||||||
|
return {
|
||||||
|
'id': '12366',
|
||||||
|
'symbol': 'ETC/BTC',
|
||||||
|
'status': 'closed',
|
||||||
|
'side': 'buy',
|
||||||
|
'type': 'limit',
|
||||||
|
'price': 0.128,
|
||||||
|
'amount': 123.0,
|
||||||
|
'filled': 123.0,
|
||||||
|
'remaining': 0.0,
|
||||||
|
'leverage': 5.0,
|
||||||
|
'isShort': True
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def short_trade(fee):
|
||||||
|
"""
|
||||||
|
Closed trade...
|
||||||
|
"""
|
||||||
|
trade = Trade(
|
||||||
|
pair='ETC/BTC',
|
||||||
|
stake_amount=0.001,
|
||||||
|
amount=123.0, # TODO-mg: In BTC?
|
||||||
|
amount_requested=123.0,
|
||||||
|
fee_open=fee.return_value,
|
||||||
|
fee_close=fee.return_value,
|
||||||
|
open_rate=0.123,
|
||||||
|
close_rate=0.128,
|
||||||
|
close_profit=0.005, # TODO-mg: Would this be -0.005 or -0.025
|
||||||
|
close_profit_abs=0.000584127,
|
||||||
|
exchange='binance',
|
||||||
|
is_open=False,
|
||||||
|
open_order_id='dry_run_exit_short_12345',
|
||||||
|
strategy='DefaultStrategy',
|
||||||
|
timeframe=5,
|
||||||
|
sell_reason='sell_signal', # TODO-mg: Update to exit/close reason
|
||||||
|
open_date=datetime.now(tz=timezone.utc) - timedelta(minutes=20),
|
||||||
|
close_date=datetime.now(tz=timezone.utc) - timedelta(minutes=2),
|
||||||
|
# borrowed=
|
||||||
|
isShort=True
|
||||||
|
)
|
||||||
|
o = Order.parse_from_ccxt_object(short_order(), 'ETC/BTC', 'sell')
|
||||||
|
trade.orders.append(o)
|
||||||
|
o = Order.parse_from_ccxt_object(exit_short_order(), 'ETC/BTC', 'sell')
|
||||||
|
trade.orders.append(o)
|
||||||
|
return trade
|
||||||
|
|
||||||
|
|
||||||
|
def leverage_order():
|
||||||
|
return {
|
||||||
|
'id': '1235',
|
||||||
|
'symbol': 'ETC/BTC',
|
||||||
|
'status': 'closed',
|
||||||
|
'side': 'buy',
|
||||||
|
'type': 'limit',
|
||||||
|
'price': 0.123,
|
||||||
|
'amount': 123.0,
|
||||||
|
'filled': 123.0,
|
||||||
|
'remaining': 0.0,
|
||||||
|
'leverage': 5.0
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def leverage_order_sell():
|
||||||
|
return {
|
||||||
|
'id': '12366',
|
||||||
|
'symbol': 'ETC/BTC',
|
||||||
|
'status': 'closed',
|
||||||
|
'side': 'sell',
|
||||||
|
'type': 'limit',
|
||||||
|
'price': 0.128,
|
||||||
|
'amount': 123.0,
|
||||||
|
'filled': 123.0,
|
||||||
|
'remaining': 0.0,
|
||||||
|
'leverage': 5.0,
|
||||||
|
'isShort': True
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def leverage_trade(fee):
|
||||||
|
"""
|
||||||
|
Closed trade...
|
||||||
|
"""
|
||||||
|
trade = Trade(
|
||||||
|
pair='ETC/BTC',
|
||||||
|
stake_amount=0.001,
|
||||||
|
amount=615.0,
|
||||||
|
amount_requested=615.0,
|
||||||
|
fee_open=fee.return_value,
|
||||||
|
fee_close=fee.return_value,
|
||||||
|
open_rate=0.123,
|
||||||
|
close_rate=0.128,
|
||||||
|
close_profit=0.005, # TODO-mg: Would this be -0.005 or -0.025
|
||||||
|
close_profit_abs=0.000584127,
|
||||||
|
exchange='binance',
|
||||||
|
is_open=False,
|
||||||
|
open_order_id='dry_run_leverage_sell_12345',
|
||||||
|
strategy='DefaultStrategy',
|
||||||
|
timeframe=5,
|
||||||
|
sell_reason='sell_signal', # TODO-mg: Update to exit/close reason
|
||||||
|
open_date=datetime.now(tz=timezone.utc) - timedelta(minutes=20),
|
||||||
|
close_date=datetime.now(tz=timezone.utc) - timedelta(minutes=2),
|
||||||
|
# borrowed=
|
||||||
|
)
|
||||||
|
o = Order.parse_from_ccxt_object(leverage_order(), 'ETC/BTC', 'sell')
|
||||||
|
trade.orders.append(o)
|
||||||
|
o = Order.parse_from_ccxt_object(leverage_order_sell(), 'ETC/BTC', 'sell')
|
||||||
|
trade.orders.append(o)
|
||||||
|
return trade
|
||||||
|
Loading…
Reference in New Issue
Block a user