Beispiel #1
0
def test_sell_reason_performance_handle_2(mocker, default_conf, markets, fee):
    mocker.patch('freqtrade.rpc.telegram.Telegram', MagicMock())
    mocker.patch.multiple('freqtrade.exchange.Exchange',
                          markets=PropertyMock(return_value=markets))

    freqtradebot = get_patched_freqtradebot(mocker, default_conf)
    create_mock_trades(fee)
    rpc = RPC(freqtradebot)

    res = rpc._rpc_sell_reason_performance(None)

    assert len(res) == 2
    assert res[0]['sell_reason'] == 'sell_signal'
    assert res[0]['count'] == 1
    assert prec_satoshi(res[0]['profit_pct'], 0.5)
    assert res[1]['sell_reason'] == 'roi'
    assert res[1]['count'] == 1
    assert prec_satoshi(res[1]['profit_pct'], 1.0)

    # Test for a specific pair
    res = rpc._rpc_sell_reason_performance('ETC/BTC')
    assert len(res) == 1
    assert res[0]['count'] == 1
    assert res[0]['sell_reason'] == 'sell_signal'
    assert prec_satoshi(res[0]['profit_pct'], 0.5)
Beispiel #2
0
def test_sell_reason_performance_handle(default_conf, ticker, limit_buy_order,
                                        fee, limit_sell_order, mocker) -> None:
    mocker.patch('freqtrade.rpc.telegram.Telegram', MagicMock())
    mocker.patch.multiple(
        'freqtrade.exchange.Exchange',
        get_balances=MagicMock(return_value=ticker),
        fetch_ticker=ticker,
        get_fee=fee,
    )

    freqtradebot = get_patched_freqtradebot(mocker, default_conf)
    patch_get_signal(freqtradebot)
    rpc = RPC(freqtradebot)

    # Create some test data
    freqtradebot.enter_positions()
    trade = Trade.query.first()
    assert trade

    # Simulate fulfilled LIMIT_BUY order for trade
    oobj = Order.parse_from_ccxt_object(limit_buy_order,
                                        limit_buy_order['symbol'], 'buy')
    trade.update_trade(oobj)

    # Simulate fulfilled LIMIT_SELL order for trade
    oobj = Order.parse_from_ccxt_object(limit_sell_order,
                                        limit_sell_order['symbol'], 'sell')
    trade.update_trade(oobj)

    trade.close_date = datetime.utcnow()
    trade.is_open = False
    res = rpc._rpc_sell_reason_performance(None)

    assert len(res) == 1
    assert res[0]['sell_reason'] == 'Other'
    assert res[0]['count'] == 1
    assert prec_satoshi(res[0]['profit_pct'], 6.2)

    trade.sell_reason = "TEST1"
    res = rpc._rpc_sell_reason_performance(None)

    assert len(res) == 1
    assert res[0]['sell_reason'] == 'TEST1'
    assert res[0]['count'] == 1
    assert prec_satoshi(res[0]['profit_pct'], 6.2)