def mock_http_calls(requests_mock):
    ig_request_login(requests_mock)
    ig_request_set_account(requests_mock)
    ig_request_account_details(requests_mock)
    ig_request_open_positions(requests_mock)
    ig_request_market_info(requests_mock)
    ig_request_search_market(requests_mock)
    ig_request_prices(requests_mock)
    ig_request_trade(requests_mock)
    ig_request_confirm_trade(requests_mock)
    ig_request_navigate_market(requests_mock)
    ig_request_navigate_market(requests_mock,
                               args="668394",
                               data="mock_navigate_markets_markets.json")
    ig_request_navigate_market(requests_mock,
                               args="77976799",
                               data="mock_navigate_markets_markets.json")
    ig_request_navigate_market(requests_mock,
                               args="89291253",
                               data="mock_navigate_markets_markets.json")
    ig_request_watchlist(requests_mock)
    ig_request_watchlist(requests_mock,
                         args="12345678",
                         data="mock_watchlist.json")
    av_request_prices(requests_mock)
    av_request_macd_ext(requests_mock)
Exemple #2
0
def test_find_trade_signal(config, credentials, requests_mock):
    ig_request_login(requests_mock)
    ig_request_set_account(requests_mock)
    ig_request_market_info(requests_mock)
    ig_request_prices(requests_mock)
    ig_request_trade(requests_mock)
    ig_request_confirm_trade(requests_mock)

    services = {
        "ig_index": IGInterface(config, credentials),
        "alpha_vantage": AVInterface(credentials["av_api_key"], config),
    }
    broker = Broker(config, services)
    broker.use_av_api = False

    strategy = WeightedAvgPeak(config, broker)

    # Need to use a mock enum as the requests_mock expect "mock" as interval
    prices = broker.get_prices("mock", "mock", Mock_Interval.MOCK, "mock")
    market = create_mock_market(broker)
    tradeDir, limit, stop = strategy.find_trade_signal(market, prices)

    assert tradeDir is not None
    assert limit is None
    assert stop is None

    assert tradeDir == TradeDirection.NONE
Exemple #3
0
def test_close_position_fail(ig, requests_mock):
    ig_request_trade(requests_mock, fail=True)
    ig_request_confirm_trade(requests_mock, fail=True)
    pos = {
        "market": {
            "instrumentName": "mock"
        },
        "position": {
            "direction": "BUY",
            "dealId": "123456789"
        },
    }
    result = ig.close_position(pos)
    assert result == False
Exemple #4
0
def test_confirm_order_fail(ig, requests_mock):
    ig_request_confirm_trade(
        requests_mock,
        data={
            "dealId": "123456789",
            "dealStatus": "REJECTED",
            "reason": "FAIL"
        },
    )
    result = ig.confirm_order("123456789")
    assert result == False

    ig_request_confirm_trade(requests_mock, fail=True)
    with pytest.raises(RuntimeError) as e:
        result = ig.confirm_order("123456789")
Exemple #5
0
def test_close_position_fail(ig, requests_mock):
    ig_request_trade(requests_mock, fail=True)
    ig_request_confirm_trade(requests_mock, fail=True)
    pos = Position(
        deal_id="123456789",
        size=1,
        create_date="mock",
        direction=TradeDirection.BUY,
        level=100,
        limit=110,
        stop=90,
        currency="GBP",
        epic="mock",
        market_id=None,
    )
    result = ig.close_position(pos)
    assert result == False
def test_find_trade_signal(config, broker, requests_mock):
    ig_request_login(requests_mock)
    ig_request_set_account(requests_mock)
    ig_request_prices(requests_mock)
    ig_request_trade(requests_mock)
    ig_request_confirm_trade(requests_mock)
    ig_request_market_info(requests_mock)

    strategy = WeightedAvgPeak(config, broker)

    # Need to use a mock enum as the requests_mock expect "mock" as interval
    market = broker.get_market_info("mock")
    prices = strategy.fetch_datapoints(market)
    tradeDir, limit, stop = strategy.find_trade_signal(market, prices)

    assert tradeDir is not None
    assert limit is None
    assert stop is None

    assert tradeDir == TradeDirection.NONE
Exemple #7
0
def test_close_all_positions_fail(ig, requests_mock):
    ig_request_open_positions(requests_mock)
    ig_request_trade(requests_mock, fail=True)
    ig_request_confirm_trade(requests_mock)

    result = ig.close_all_positions()
    assert result == False

    ig_request_open_positions(requests_mock)
    ig_request_trade(requests_mock)
    ig_request_confirm_trade(
        requests_mock,
        data={
            "dealId": "123456789",
            "dealStatus": "FAIL",
            "reason": "FAIL"
        },
    )

    result = ig.close_all_positions()
    assert result == False
Exemple #8
0
def test_close_all_positions(ig, requests_mock):
    ig_request_open_positions(requests_mock)
    ig_request_trade(requests_mock)
    ig_request_confirm_trade(requests_mock)
    result = ig.close_all_positions()
    assert result
Exemple #9
0
def test_confirm_order(ig, requests_mock):
    ig_request_confirm_trade(requests_mock)
    result = ig.confirm_order("123456789")
    assert result
Exemple #10
0
def test_trade_fail(ig, requests_mock):
    ig_request_trade(requests_mock, fail=True)
    ig_request_confirm_trade(requests_mock, fail=True)
    result = ig.trade("mock", TradeDirection.BUY, 0, 0)
    assert result == False
Exemple #11
0
def test_trade(ig, requests_mock):
    ig_request_trade(requests_mock)
    ig_request_confirm_trade(requests_mock)
    result = ig.trade("mock", TradeDirection.BUY, 0, 0)
    assert result
Exemple #12
0
def test_trade(ig, requests_mock):
    ig_request_trade(requests_mock)
    ig_request_confirm_trade(requests_mock)
    result = ig.trade("mock", "BUY", 0, 0)
    assert result