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)
Beispiel #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
Beispiel #3
0
def test_get_prices(ig, requests_mock):
    ig_request_market_info(requests_mock)
    ig_request_prices(requests_mock)
    p = ig.get_prices(ig.get_market_info("mock"), Interval.HOUR, 10)
    assert p is not None
    assert isinstance(p, MarketHistory)
    assert len(p.dataframe) > 0
def requests(requests_mock):
    ig_request_login(requests_mock)
    ig_request_set_account(requests_mock)
    ig_request_market_info(requests_mock)
    ig_request_search_market(requests_mock)
    ig_request_watchlist(requests_mock, data="mock_watchlist_list.json")
    ig_request_watchlist(requests_mock, args="12345678", data="mock_watchlist.json")
Beispiel #5
0
def test_get_market_info(ig, requests_mock):
    ig_request_market_info(requests_mock)
    info = ig.get_market_info("mock")

    assert info is not None
    assert "instrument" in info
    assert "snapshot" in info
    assert "dealingRules" in info
def broker(requests_mock, config):
    ig_request_login(requests_mock)
    ig_request_set_account(requests_mock)
    ig_request_market_info(requests_mock)
    ig_request_search_market(requests_mock)
    ig_request_watchlist(requests_mock, data="mock_watchlist_list.json")
    ig_request_watchlist(requests_mock, args="12345678", data="mock_watchlist.json")
    return Broker(BrokerFactory(config))
Beispiel #7
0
def test_search_market(ig, requests_mock):
    ig_request_market_info(requests_mock)
    ig_request_search_market(requests_mock)
    markets = ig.search_market("mock")

    assert markets is not None
    assert isinstance(markets, list)
    assert len(markets) == 8
    assert isinstance(markets[0], Market)
Beispiel #8
0
def create_mock_market(broker, requests_mock):
    ig_request_market_info(requests_mock)
    data = broker.get_market_info("mock")
    market = Market()
    market.epic = data["epic"]
    market.id = data["market_id"]
    market.name = data["name"]
    market.bid = data["bid"]
    market.offer = data["offer"]
    market.high = data["high"]
    market.low = data["low"]
    market.stop_distance_min = data["stop_distance_min"]
    return market
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
Beispiel #10
0
def test_get_watchlist_markets(ig, requests_mock):
    ig_request_market_info(requests_mock)
    ig_request_watchlist(requests_mock, data="mock_watchlist_list.json")
    ig_request_watchlist(requests_mock,
                         args="12345678",
                         data="mock_watchlist.json")

    data = ig.get_markets_from_watchlist("My Watchlist")
    assert isinstance(data, list)
    assert len(data) == 3
    assert isinstance(data[0], Market)

    data = ig.get_markets_from_watchlist("wrong_name")
    assert len(data) == 0

    ig_request_watchlist(requests_mock,
                         args="12345678",
                         data="mock_watchlist.json",
                         fail=True)
    data = ig.get_markets_from_watchlist("wrong_name")
    assert len(data) == 0
Beispiel #11
0
def test_get_prices_fail(ig, requests_mock):
    ig_request_market_info(requests_mock)
    ig_request_prices(requests_mock, fail=True)
    with pytest.raises(RuntimeError) as e:
        p = ig.get_prices(ig.get_market_info("mock"), Interval.HOUR, 10)
Beispiel #12
0
def test_get_market_info_fail(ig, requests_mock):
    ig_request_market_info(requests_mock, fail=True)
    with pytest.raises(RuntimeError) as e:
        info = ig.get_market_info("mock")
Beispiel #13
0
def test_get_market_info(ig, requests_mock):
    ig_request_market_info(requests_mock)
    info = ig.get_market_info("mock")

    assert info is not None
    assert isinstance(info, Market)
Beispiel #14
0
def test_get_market_info_fail(ig, requests_mock):
    ig_request_market_info(requests_mock, fail=True)
    info = ig.get_market_info("mock")
    assert info is None