Is there an interval type 30 minutes for python api?

Best Answer

  • To create timeseries in 30 minute interval you'd need to retrieve 1 minute bars and summarize them into 30 minute bars.

Answers

  • Hi,

    If you wonder if get_timeseries function accepts other interval type than 'tick', 'daily', ... , the response is no.

  • thanks a lot!

  • Thanks ,after i get data via

    df1=ek.get_timeseries(s1,fields=["Open","High","Low","Close","Volume"], start_date = "2017-11-13T01:00:00",end_date = "2017-11-13T07:04:05",interval='minute')

    Do u have any high effect ways to handle this data into 5mins bar?

  • I hope there got 5mins, 30mins,hour.....

  • There's nothing from Thomson Reuters that would facilitate this operation, since Python has very rich capabilities for all kinds of data transformation, summarization and statistical analysis.

  • This a simple example to extract a 30 minute interval timeseries from a minute interval result:

    import eikon as ek
    from datetime import timedelta

    interval = 30

    def ohlcsum(df):
    return [df['OPEN'][0],df['HIGH'].max(),df['LOW'].min(),
    df['CLOSE'][-1],int(df['VOLUME'].sum())]

    data_1min = ek.get_timeseries('PEUP.PA', interval='minute')
    timestamps=[]
    result=[]
    start_slice = data_1min.index[0]
    while True:
    end_slice = start_slice + timedelta(minutes=interval-1)
    interval_slice = data_1min.loc[start_slice : end_slice]
    try:
    data = ohlcsum(interval_slice)
    except IndexError:
    break
    timestamps.append(interval_slice.index[-1])
    result.append(data)
    start_slice = start_slice + timedelta(minutes=interval)
    if start_slice > data_1min.index[-1]:
    break

    labels = ['OPEN','HIGH','LOW','CLOSE','VOLUME']
    data_new_interval = pd.DataFrame.from_records(result, index=timestamps, columns=labels)
  • I don't think u got the right data for 5 min

    for every 5 min data, it should be calculated by the following function

    def ohlcsum(df):
        df = df.sort()
        return {
           'Open': df['Open'][0],
           'High': df['High'].max(),
           'Low': df['Low'].min(),
           'Close': df['Close'][-1],
           'Volume': df['Volume'].sum()
          }

  • Alex, thanks for your answer. Of course You are right since Pyhon has very rich libs for calculation, but my requirement is to get 3000 RICs' 5mins bar in real-time, do you have any efficient way to handle this? thanks again :)

  • Well, your use case is borderline outside what a market data terminal can handle. If indeed you're looking to construct 5 min bars in real-time, i.e. form the continuation of the bars live from the real-time data stream, then you definitely cannot do this using hosted (aka Internet delivered) Eikon, as your concurrent real-time data subscriptions are limited to 2.5K RICs.

  • Eikon Python API currently does not provide streaming market data at all. But even if you used Eikon .NET API, which does provide 5 min bars and live continuation from real-time data stream, you'd still be subject to 2.5K RICs cap on the number of concurrent real-time data subscriptions.

  • Using Eikon your only option would be to poll the timeseries service every 5 minutes for a new 5 min bar if you use .NET API or for 5 new one minute bars if you use Python API. This won't give you the updated 5 min bar in real-time, there certainly will be some delay. How well this will work for 3K RICs if you do it continuously every 5 minutes? There's only one way to find out, but my guess is probably not fully reliably. You should be prepared that some requests will fail and you might need to resubmit, which would result in further delay in obtaining the new bar.