Exemple #1
0
def test_ig_service():

    delay_for_ig = 30

    def wait(delay):
        print(
            "Wait %s s to avoid 'error.public-api.exceeded-account-allowance'"
            % delay)
        time.sleep(delay)

    session_cached = requests_cache.CachedSession(
        cache_name=CACHE_NAME,
        backend="sqlite",
        expire_after=timedelta(hours=1))
    session_not_cached = requests.Session()

    for i, session in enumerate(
        [session_cached, session_cached, session_not_cached]):

        # pp = pprint.PrettyPrinter(indent=4)

        assert isinstance(trading_ig.__version__, six.string_types)

        # ig_service = IGService(config.username, config.password,
        #                        config.api_key, config.acc_type)
        ig_service = IGService(config.username, config.password,
                               config.api_key, config.acc_type, session)

        ig_service.create_session()

        print("%d - fetch_accounts" % i)
        response = ig_service.fetch_accounts()
        print(response)
        # assert(response['balance'][0]['available']>0)
        assert response["balance"][0] > 0

        print("")

        print("fetch_account_activity_by_period")
        response = ig_service.fetch_account_activity_by_period(10000)
        print(response)
        assert isinstance(response, pd.DataFrame)

        print("")

        print("fetch_account_activity_by_period")
        response = ig_service.fetch_account_activity_by_period(10000)
        print(response)
        assert isinstance(response, pd.DataFrame)

        print("")

        print("fetch_transaction_history_by_type_and_period")
        response = ig_service.fetch_transaction_history_by_type_and_period(
            10000, "ALL")
        print(response)
        assert isinstance(response, pd.DataFrame)

        wait(delay_for_ig)
        print("")

        print("fetch_open_positions")
        response = ig_service.fetch_open_positions()
        print(response)
        assert isinstance(response, pd.DataFrame)

        print("")

        print("fetch_working_orders")
        response = ig_service.fetch_working_orders()
        print(response)
        assert isinstance(response, pd.DataFrame)

        print("")

        print("fetch_top_level_navigation_nodes")
        response = ig_service.fetch_top_level_navigation_nodes()
        print(response)  # dict with nodes and markets
        assert isinstance(response, dict)
        market_id = response["nodes"]["id"].iloc[0]

        print("")

        print("fetch_client_sentiment_by_instrument")
        response = ig_service.fetch_client_sentiment_by_instrument(market_id)
        print(response)
        assert isinstance(response, dict)

        print("")

        print("fetch_related_client_sentiment_by_instrument")
        response = ig_service.fetch_related_client_sentiment_by_instrument(
            market_id)
        print(response)
        assert isinstance(response, pd.DataFrame)

        print("")

        print("fetch_sub_nodes_by_node")
        node = market_id
        response = ig_service.fetch_sub_nodes_by_node(node)
        print(response)
        assert isinstance(response["markets"], pd.DataFrame)
        assert isinstance(response["nodes"], pd.DataFrame)

        print("")
        wait(delay_for_ig)

        print("fetch_all_watchlists")
        response = ig_service.fetch_all_watchlists()
        print(response)
        assert isinstance(response, pd.DataFrame)
        watchlist_id = response["id"].iloc[0]  # u'Popular Markets'

        print("")

        print("fetch_watchlist_markets")
        response = ig_service.fetch_watchlist_markets(watchlist_id)
        print(response)
        assert isinstance(response, pd.DataFrame)
        # epic = 'CS.D.EURUSD.MINI.IP'
        # epic = u'IX.D.CAC.IDF.IP'
        epic = response["epic"].iloc[0]

        print("")

        print("fetch_market_by_epic")
        response = ig_service.fetch_market_by_epic(epic)
        print(response)
        # pp.pprint(response)
        assert isinstance(response, dict)

        print("")

        print("search_markets")
        search_term = "EURUSD"
        # search_term = 'SPY'
        response = ig_service.search_markets(search_term)
        print(response)
        assert isinstance(response, pd.DataFrame)

        print("")
        wait(delay_for_ig)
        wait(delay_for_ig)

        print("fetch_historical_prices_by_epic_and_num_points")

        # epic = 'CS.D.EURUSD.MINI.IP'
        # epic = 'IX.D.ASX.IFM.IP' # US 500 (SPY)
        # epic = 'IX.D.ASX.IFM.IP' # US (SPY) - mini
        # MINUTE, MINUTE_2, MINUTE_3, MINUTE_5, MINUTE_10, MINUTE_15,
        # MINUTE_30, HOUR, HOUR_2, HOUR_3, HOUR_4, DAY, WEEK, MONTH
        # resolution = 'HOUR'
        # http://pandas.pydata.org/pandas-docs/stable/timeseries.html#dateoffset-objects
        resolution = "H"
        num_points = 10
        response = ig_service.fetch_historical_prices_by_epic_and_num_points(
            epic, resolution, num_points)
        print(response)
        # print(response['prices']['price'])
        # print(response['prices']['price']['ask'])
        # print(response['prices']['volume'])
        assert isinstance(response["allowance"], dict)
        # assert(isinstance(response['prices']['volume'], pd.Series))
        # assert(isinstance(response['prices']['price'], pd.Panel))
        assert isinstance(response["prices"], pd.DataFrame)

        print("")
        wait(delay_for_ig)

        print("fetch_historical_prices_by_epic_and_date_range")
        end_date = datetime.utcnow().replace(hour=0,
                                             minute=0,
                                             second=0,
                                             microsecond=0)
        start_date = end_date - timedelta(days=3)
        response = ig_service.fetch_historical_prices_by_epic_and_date_range(
            epic, resolution, start_date, end_date)
        print(response)
        assert isinstance(response["allowance"], dict)
        # assert(isinstance(response['prices']['volume'], pd.Series))
        # assert(isinstance(response['prices']['price'], pd.Panel))
        assert isinstance(response["prices"], pd.DataFrame)

        print("")
        wait(delay_for_ig)
def test_ig_service():

    DELAY = 30

    def wait(delay):
        print("Wait %s s to avoid error.public-api.exceeded-account-allowance" % delay)
        time.sleep(delay)

    session_cached = requests_cache.CachedSession(cache_name="cache", backend="sqlite", expire_after=timedelta(hours=1))
    session_not_cached = requests.Session()

    for session in [session_cached, session_cached, session_not_cached]:

        pp = pprint.PrettyPrinter(indent=4)

        assert isinstance(trading_ig.__version__, six.string_types)

        config = ConfigEnvVar("IG_SERVICE")
        # ig_service = IGService(config.username, config.password, config.api_key, config.acc_type)
        ig_service = IGService(config.username, config.password, config.api_key, config.acc_type, session)
        ig_service.create_session()

        print("fetch_accounts")
        response = ig_service.fetch_accounts()
        print(response)
        # assert(response['balance'][0]['available']>0)
        assert response["balance"][0] > 0

        print("")

        print("fetch_account_activity_by_period")
        response = ig_service.fetch_account_activity_by_period(10000)
        print(response)
        assert isinstance(response, pd.DataFrame)

        print("")

        print("fetch_account_activity_by_period")
        response = ig_service.fetch_account_activity_by_period(10000)
        print(response)
        assert isinstance(response, pd.DataFrame)

        print("")

        print("fetch_transaction_history_by_type_and_period")
        response = ig_service.fetch_transaction_history_by_type_and_period(10000, "ALL")
        print(response)
        assert isinstance(response, pd.DataFrame)

        wait(DELAY)
        print("")

        print("fetch_open_positions")
        response = ig_service.fetch_open_positions()
        print(response)
        assert isinstance(response, pd.DataFrame)

        print("")

        print("fetch_working_orders")
        response = ig_service.fetch_working_orders()
        print(response)
        assert isinstance(response, pd.DataFrame)

        print("")

        print("fetch_top_level_navigation_nodes")
        response = ig_service.fetch_top_level_navigation_nodes()
        print(response)  # dict with nodes and markets
        assert isinstance(response, dict)
        market_id = response["nodes"]["id"].iloc[0]

        print("")

        print("fetch_client_sentiment_by_instrument")
        response = ig_service.fetch_client_sentiment_by_instrument(market_id)
        print(response)
        assert isinstance(response, dict)

        print("")

        print("fetch_related_client_sentiment_by_instrument")
        response = ig_service.fetch_related_client_sentiment_by_instrument(market_id)
        print(response)
        assert isinstance(response, pd.DataFrame)

        print("")

        print("fetch_sub_nodes_by_node")
        node = market_id  # ?
        response = ig_service.fetch_sub_nodes_by_node(node)
        print(response)
        assert isinstance(response["markets"], pd.DataFrame)
        assert isinstance(response["nodes"], pd.DataFrame)

        print("")
        wait(DELAY)

        print("fetch_all_watchlists")
        response = ig_service.fetch_all_watchlists()
        print(response)
        assert isinstance(response, pd.DataFrame)
        watchlist_id = response["id"].iloc[0]  # u'Popular Markets'
        # epic =

        print("")

        print("fetch_watchlist_markets")
        response = ig_service.fetch_watchlist_markets(watchlist_id)
        print(response)
        assert isinstance(response, pd.DataFrame)
        epic = response["epic"].iloc[0]  # epic = 'CS.D.EURUSD.MINI.IP' # epic = u'IX.D.CAC.IDF.IP'

        print("")

        print("fetch_market_by_epic")
        response = ig_service.fetch_market_by_epic(epic)
        print(response)
        # pp.pprint(response)
        assert isinstance(response, dict)

        print("")

        print("search_markets")
        search_term = "EURUSD"
        # search_term = 'SPY'
        response = ig_service.search_markets(search_term)
        print(response)
        assert isinstance(response, pd.DataFrame)

        print("")

        print("fetch_historical_prices_by_epic_and_num_points")

        # epic = 'CS.D.EURUSD.MINI.IP'
        # epic = 'IX.D.ASX.IFM.IP' # US 500 (SPY)
        # epic = 'IX.D.ASX.IFM.IP' # US (SPY) - mini
        # resolution = 'HOUR' # MINUTE, MINUTE_2, MINUTE_3, MINUTE_5, MINUTE_10, MINUTE_15, MINUTE_30, HOUR, HOUR_2, HOUR_3, HOUR_4, DAY, WEEK, MONTH
        resolution = "H"  # http://pandas.pydata.org/pandas-docs/stable/timeseries.html#dateoffset-objects
        num_points = 10
        response = ig_service.fetch_historical_prices_by_epic_and_num_points(epic, resolution, num_points)
        print(response)
        # print(response['prices']['price'])
        # print(response['prices']['price']['ask'])
        # print(response['prices']['volume'])
        assert isinstance(response["allowance"], dict)
        # assert(isinstance(response['prices']['volume'], pd.Series))
        # assert(isinstance(response['prices']['price'], pd.Panel))
        assert isinstance(response["prices"], pd.DataFrame)

        print("")

        print("fetch_historical_prices_by_epic_and_date_range")
        start_date = datetime(2014, 12, 15)
        end_date = datetime(2014, 12, 20)
        response = ig_service.fetch_historical_prices_by_epic_and_date_range(epic, resolution, start_date, end_date)
        print(response)
        assert isinstance(response["allowance"], dict)
        # assert(isinstance(response['prices']['volume'], pd.Series))
        # assert(isinstance(response['prices']['price'], pd.Panel))
        assert isinstance(response["prices"], pd.DataFrame)

        wait(DELAY)
        print("")
Exemple #3
0
def test_ig_service():

    DELAY = 30

    def wait(delay):
        print(
            "Wait %s s to avoid error.public-api.exceeded-account-allowance" %
            delay)
        time.sleep(delay)

    session_cached = requests_cache.CachedSession(
        cache_name='cache', backend='sqlite', expire_after=timedelta(hours=1))
    session_not_cached = requests.Session()

    for session in [session_cached, session_cached, session_not_cached]:

        pp = pprint.PrettyPrinter(indent=4)

        assert (isinstance(trading_ig.__version__, six.string_types))

        config = ConfigEnvVar("IG_SERVICE")
        #ig_service = IGService(config.username, config.password, config.api_key, config.acc_type)
        ig_service = IGService(config.username, config.password,
                               config.api_key, config.acc_type, session)
        ig_service.create_session()

        print("fetch_accounts")
        response = ig_service.fetch_accounts()
        print(response)
        #assert(response['balance'][0]['available']>0)
        assert (response['balance'][0] > 0)

        print("")

        print("fetch_account_activity_by_period")
        response = ig_service.fetch_account_activity_by_period(10000)
        print(response)
        assert (isinstance(response, pd.DataFrame))

        print("")

        print("fetch_account_activity_by_period")
        response = ig_service.fetch_account_activity_by_period(10000)
        print(response)
        assert (isinstance(response, pd.DataFrame))

        print("")

        print("fetch_transaction_history_by_type_and_period")
        response = ig_service.fetch_transaction_history_by_type_and_period(
            10000, "ALL")
        print(response)
        assert (isinstance(response, pd.DataFrame))

        wait(DELAY)
        print("")

        print("fetch_open_positions")
        response = ig_service.fetch_open_positions()
        print(response)
        assert (isinstance(response, pd.DataFrame))

        print("")

        print("fetch_working_orders")
        response = ig_service.fetch_working_orders()
        print(response)
        assert (isinstance(response, pd.DataFrame))

        print("")

        print("fetch_top_level_navigation_nodes")
        response = ig_service.fetch_top_level_navigation_nodes()
        print(response)  # dict with nodes and markets
        assert (isinstance(response, dict))
        market_id = response['nodes']['id'].iloc[0]

        print("")

        print("fetch_client_sentiment_by_instrument")
        response = ig_service.fetch_client_sentiment_by_instrument(market_id)
        print(response)
        assert (isinstance(response, dict))

        print("")

        print("fetch_related_client_sentiment_by_instrument")
        response = ig_service.fetch_related_client_sentiment_by_instrument(
            market_id)
        print(response)
        assert (isinstance(response, pd.DataFrame))

        print("")

        print("fetch_sub_nodes_by_node")
        node = market_id  #?
        response = ig_service.fetch_sub_nodes_by_node(node)
        print(response)
        assert (isinstance(response['markets'], pd.DataFrame))
        assert (isinstance(response['nodes'], pd.DataFrame))

        print("")
        wait(DELAY)

        print("fetch_all_watchlists")
        response = ig_service.fetch_all_watchlists()
        print(response)
        assert (isinstance(response, pd.DataFrame))
        watchlist_id = response['id'].iloc[0]  # u'Popular Markets'
        #epic =

        print("")

        print("fetch_watchlist_markets")
        response = ig_service.fetch_watchlist_markets(watchlist_id)
        print(response)
        assert (isinstance(response, pd.DataFrame))
        epic = response['epic'].iloc[
            0]  # epic = 'CS.D.EURUSD.MINI.IP' # epic = u'IX.D.CAC.IDF.IP'

        print("")

        print("fetch_market_by_epic")
        response = ig_service.fetch_market_by_epic(epic)
        print(response)
        #pp.pprint(response)
        assert (isinstance(response, dict))

        print("")

        print("search_markets")
        search_term = 'EURUSD'
        #search_term = 'SPY'
        response = ig_service.search_markets(search_term)
        print(response)
        assert (isinstance(response, pd.DataFrame))

        print("")

        print("fetch_historical_prices_by_epic_and_num_points")

        #epic = 'CS.D.EURUSD.MINI.IP'
        #epic = 'IX.D.ASX.IFM.IP' # US 500 (SPY)
        #epic = 'IX.D.ASX.IFM.IP' # US (SPY) - mini
        #resolution = 'HOUR' # MINUTE, MINUTE_2, MINUTE_3, MINUTE_5, MINUTE_10, MINUTE_15, MINUTE_30, HOUR, HOUR_2, HOUR_3, HOUR_4, DAY, WEEK, MONTH
        resolution = 'H'  # http://pandas.pydata.org/pandas-docs/stable/timeseries.html#dateoffset-objects
        num_points = 10
        response = ig_service.fetch_historical_prices_by_epic_and_num_points(
            epic, resolution, num_points)
        print(response)
        #print(response['prices']['price'])
        #print(response['prices']['price']['ask'])
        #print(response['prices']['volume'])
        assert (isinstance(response['allowance'], dict))
        #assert(isinstance(response['prices']['volume'], pd.Series))
        #assert(isinstance(response['prices']['price'], pd.Panel))
        assert (isinstance(response['prices'], pd.DataFrame))

        print("")

        print("fetch_historical_prices_by_epic_and_date_range")
        start_date = datetime(2014, 12, 15)
        end_date = datetime(2014, 12, 20)
        response = ig_service.fetch_historical_prices_by_epic_and_date_range(
            epic, resolution, start_date, end_date)
        print(response)
        assert (isinstance(response['allowance'], dict))
        #assert(isinstance(response['prices']['volume'], pd.Series))
        #assert(isinstance(response['prices']['price'], pd.Panel))
        assert (isinstance(response['prices'], pd.DataFrame))

        wait(DELAY)
        print("")