Historical FX tick data in python?

Is there a way to get historical FX (forex) tick data using Refinitiv APIs using Python?

I tried the below and only got NAs:


df2 = ek.get_timeseries(rics = "GBP=",
                        fields = ['BID', 'ASK'],
                        interval="tick",
                        # count=2000,
                        start_date="2022-05-19",
                        end_date="2022-05-20") # start_date="2022-05-19T10:00:00", end_date="2022-05-19T10:00:00"

Best Answer

  • Jirapongse
    Answer ✓

    @danieluphromes

    The get_timeseries method support the 'TIMESTAMP', 'VALUE', 'VOLUME', 'HIGH', 'LOW', 'OPEN', 'CLOSE', 'COUNT' fields. Therefore, the code looks like this.

    df2 = ek.get_timeseries(rics = "GBP=",                       
                            interval="tick",
                            # count=2000,
                            start_date="2022-05-19",
                            end_date="2022-05-20")
    df2

    The output is limited to 50,000 data points for intraday intervals.

    1653285142556.png

    Another option is using Refinitiv Data Library for Python. The code looks like:

    response = historical_pricing.events.Definition("GBP=", fields=['BID','ASK']).get_data()
    response.data.df

    The output is:

    1653285511928.png


Answers

  • hi @Jirapongse

    Is there a way to get historical values at specific times (hours or min.)? Eg

    start_date="2022-05-19 13:01", end_date="2022-05-19 13:04"

    ?

  • @danieluphromes

    You need to use this format (%Y-%m-%dT%H:%M:%S).

    start_date: string or datetime.datetime or datetime.timedelta
    Starting date and time of the historical range.
    string format is: '%Y-%m-%dT%H:%M:%S'. e.g. '2016-01-20T15:04:05'.
    datetime.timedelta is negative number of day relative to datetime.now().
    Default: datetime.now() + timedelta(-100)
    You can use the helper function get_date_from_today, please see the usage in the examples section

    end_date: string or datetime.datetime or datetime.timedelta
    End date and time of the historical range.

    string format could be
    - '%Y-%m-%d' (e.g. '2017-01-20')
    - '%Y-%m-%dT%H:%M:%S' (e.g. '2017-01-20T15:04:05')
    datetime.timedelta is negative number of day relative to datetime.now().

    Default: datetime.now()

    You can use the helper function get_date_from_today, please see the usage in the examples section