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)
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
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
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
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
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
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
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
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