OHCL for customer interval through EIKON API in R
Is it possible to get OHCL data for customer intervals such as 45 days or 72 days instead of the standard daily, monthly, quarter, yearly etc.
rics <- list("BB.TO","AC.TO")
query_fields <- list("OPEN", "CLOSE", "HIGH", "LOW")
Want something like following in the interval parameters
mydata <- eikonapir::get_timeseries( rics, fields = query_fields, start_date = "2020-01-01T00:00:00", end_date = "2020-11-01T00:00:00", interval = "42days"
Best Answer
-
As requested, please find below the example
df = ek.get_timeseries('EUR=',['OPEN','HIGH','LOW','CLOSE'])
custom_int = '10D'
resampled_df = pd.DataFrame()
resampled_df['OPEN'] = df['OPEN'].resample(custom_int).ohlc()['open']
resampled_df['HIGH'] = df['HIGH'].resample(custom_int).max()
resampled_df['LOW'] = df['LOW'].resample(custom_int).min()
resampled_df['CLOSE'] = df['CLOSE'].resample(custom_int).ohlc()['close']
resampled_df0
Answers
-
Refer to the Eikon Data APIs for Python - Reference Guide, the possible values for the interval are tick, minute, hour, daily, weekly, monthly, quarterly, yearly.
This also applies to Eikon Data API R.
0 -
To add to the response by @jirapongse.phuriphanvichai, to create OHLC timeseries with a custom frequency such as 45 days, you could resample daily timeseries. In Python pandas offers pandas.Series.resample method, which makes this task very easy. I'm not sure if R offers similar capability. If not, I'm sure it can be developed fairly easily. Or you could use reticulate to utilize pandas methods.
1 -
Would be great if you can share reproducible example in Python for OHCL data with a custom interval.0
-
Thank you @Alex Putkov. for sharing the code. I have tried to find the same function in R. The closest one is the to.period in XTS. However from my checking the date output looks strange.
Therefore, I have tried to implement the same function used to change the daily interval.
The function looks like:
ChangeDayIntervalMulRICs <- function(df, freq) {
TIMESTAMP = integer(0)
class(TIMESTAMP) <- "Date"
OPEN = c()
HIGH = c()
LOW = c()
CLOSE = c()
RIC = c()
for (p in unique(df$RIC)) {
oneRIC = df[df$RIC == p,]
firstDate = oneRIC[1,"TIMESTAMP"]
lastDate = oneRIC[nrow(oneRIC),"TIMESTAMP"]
intervalDate = firstDate + freq
while(firstDate <= lastDate){
temp = oneRIC[oneRIC$TIMESTAMP >= firstDate & oneRIC$TIMESTAMP < intervalDate,]
TIMESTAMP = c(TIMESTAMP, firstDate)
OPEN = c(OPEN, temp[1,"OPEN"])
HIGH = c(HIGH, max(temp$HIGH))
LOW = c(LOW, min(temp$LOW))
CLOSE = c(CLOSE, temp[nrow(temp),"CLOSE"])
RIC = c(RIC, p)
firstDate = intervalDate
intervalDate = intervalDate + freq
}
}
return(data.frame(TIMESTAMP,
OPEN,
HIGH,
LOW,
CLOSE,
RIC))
}The code to use the function is:
rics <- list("BB.TO","AC.TO")
query_fields <- list("TIMESTAMP","OPEN","HIGH","LOW","CLOSE")
mydata <- eikonapir::get_timeseries( rics, fields = query_fields,
start_date = "2020-01-01T00:00:00",
end_date = "2020-11-01T00:00:00",
interval = "daily")
mydata$TIMESTAMP <- as.Date(mydata$TIMESTAMP,"%Y-%m-%d")
mydata$HIGH <- as.numeric(mydata$HIGH)
mydata$LOW <- as.numeric(mydata$LOW)
mydata$OPEN <- as.numeric(mydata$OPEN)
mydata$CLOSE <- as.numeric(mydata$CLOSE)
colnames(mydata)[[6]] <- "RIC"
mydata$RIC <- as.character(mydata$RIC)
ChangeDayIntervalMulRICs(mydata, 42)This is the sample function so it is not fully tested. You need to verify the data before using it in the production.
0
Categories
- All Categories
- 6 AHS
- 39 Alpha
- 161 App Studio
- 4 Block Chain
- 4 Bot Platform
- 16 Connected Risk APIs
- 47 Data Fusion
- 30 Data Model Discovery
- 608 Datastream
- 1.3K DSS
- 577 Eikon COM
- 4.9K Eikon Data APIs
- 7 Electronic Trading
- Generic FIX
- 7 Local Bank Node API
- Trading API
- 2.7K Elektron
- 1.3K EMA
- 236 ETA
- 519 WebSocket API
- 33 FX Venues
- 10 FX Market Data
- 1 FX Post Trade
- 1 FX Trading - Matching
- 12 FX Trading – RFQ Maker
- 5 Intelligent Tagging
- 2 Legal One
- 20 Messenger Bot
- 2 Messenger Side by Side
- 9 ONESOURCE
- 7 Indirect Tax
- 59 Open Calais
- 264 Open PermID
- 39 Entity Search
- 2 Org ID
- PAM
- PAM - Logging
- 8.4K Private Comments
- 6 Product Insight
- Project Tracking
- ProView
- ProView Internal
- 20 RDMS
- 1.4K Refinitiv Data Platform
- 367 Refinitiv Data Platform Libraries
- 3 Refinitiv Due Diligence
- LSEG Due Diligence Portal API
- 3 Refinitiv Due Dilligence Centre
- Rose's Space
- 1.1K Screening
- 18 Qual-ID API
- 13 Screening Deployed
- 23 Screening Online
- 10 World-Check Customer Risk Screener
- 990 World-Check One
- 44 World-Check One Zero Footprint
- 45 Side by Side Integration API
- Test Space
- 3 Thomson One Smart
- 1.2K TR Internal
- Global Hackathon 2015
- 2 Specialists Who Code
- 10 TR Knowledge Graph
- 150 Transactions
- 142 REDI API
- 1.7K TREP APIs
- 4 CAT
- 21 DACS Station
- 117 Open DACS
- 1.1K RFA
- 103 UPA
- 172 TREP Infrastructure
- 224 TRKD
- 886 TRTH
- 5 Velocity Analytics
- 5 Wealth Management Web Services
- 60 Workspace SDK
- 9 Element Framework
- 5 Grid
- 13 World-Check Data File
- Yield Book Analytics
- 46 中文论坛