Upgrade from Eikon -> Workspace. Learn about programming differences.

For a deeper look into our Eikon Data API, look into:

Overview |  Quickstart |  Documentation |  Downloads |  Tutorials |  Articles

question

Upvotes
Accepted
31 7 7 17

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"
pythonapiforextick-data
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvote
Accepted
78.1k 246 52 72

@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



1653285142556.png (32.3 KiB)
1653285511928.png (24.8 KiB)
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
31 7 7 17

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"

?

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

@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

Write an Answer

Hint: Notify or tag a user in this post by typing @username.

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.