BSE Bhavcopy with Delivery Quantity
[This article was first published on My Paper Trades, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
One of my TI forum members IV had a requirement for BSE Quotes along with Delivery Quantity. This made me implement “merge” function of R coding (thanks to the great work done by people behind various packages and guidance available on R Mailing lists).
The task involves downloading files from two separate links and merging it on the basis of Symbol on any given date.
The output is a single file for one trading day. With a slight tweak in the code, single file can be generated for a week, a month, a year , or from beginning to end. If anyone is interested, let me know, and will offer the solution for the same
The task involves downloading files from two separate links and merging it on the basis of Symbol on any given date.
The output is a single file for one trading day. With a slight tweak in the code, single file can be generated for a week, a month, a year , or from beginning to end. If anyone is interested, let me know, and will offer the solution for the same
Without much write-up here is the code for the same.
For those, who want to take a shortcut, here are historical quotes
You can download R Code here
#This code merges BHAVCOPY and Total Deliverable Quantity from BSE
#The output file contains "DATE","SC_CODE","SC_NAME","OPEN","HIGH",
#"LOW","CLOSE","NO_OF_SHRS","DLV_QTY"
# Start ---------------- User Defined Variables
#Define Working Directory, where files would be saved
setwd('D:/BSE Equity')
#Define start and end dates, and convert them into date format
startDate = as.Date("2010-01-01", order="ymd")
endDate = as.Date("2011-07-31", order="ymd")
#Define Download folder, use \\ instead of windows standard \
filepath="D:\\BSE Equity\\New\\"
# End ---------------- User Defined Variables
junkBHAV <- dir(pattern="EQ")
junkDELV <- dir(pattern="SCBSEALL")
#work with date, month, year for which data has to be extracted
myDate = startDate
#Define temporary files
zippedBhav <- tempfile()
zippedDelv <- tempfile()
while (myDate <= endDate){
filenameDate = paste(as.character(myDate, "%Y%m%d"), sep = "")
fileBHAV=paste("eq", as.character(myDate, "%d%m%y"), "_csv.zip", sep = "")
fileDELV=paste("SCBSEALL", as.character(myDate, "%d%m"), ".zip", sep = "")
#Generate URL in following format
#http://www.bseindia.com/Hisbhav/eq161210_csv.zip
#http://www.bseindia.com/BSEDATA/gross/2010/SCBSEALL1612.TXT
URLBhav = paste("http://www.bseindia.com/Hisbhav/", fileBHAV, sep = "")
URLDelv = paste("http://www.bseindia.com/BSEDATA/gross/", as.character(myDate, "%Y"),"/",fileDELV, sep = "")
#retrieve Zipped file
tryCatch({
#Download Zipped File
download.file(URLBhav,zippedBhav, quiet=TRUE, mode="wb")
download.file(URLDelv,zippedDelv, quiet=TRUE, mode="wb")
bhav <- read.csv(unzip(zippedBhav), header=TRUE, sep=",")
#Add Date Column
bhav <- cbind(DATE=myDate,bhav)
#Select only SY_Type="Q", or Equity Quotes
bhav <- subset(bhav, SC_TYPE=="Q")
delv <- read.csv(unzip(zippedDelv), header=TRUE, sep="|")
colnames(delv)[2] <- "SC_CODE"
colnames(delv)[3] <- "DLV_QTY"
colnames(delv)[4] <- "DLV_VAL"
colnames(delv)[5] <- "VOLUME"
colnames(delv)[6] <- "TURNOVER"
colnames(delv)[7] <- "DLV_PCT"
temp<-merge(bhav,delv, by.x="SC_CODE", by.y="SC_CODE")
colnames(temp)[2] <- "DATE"
temp$DATE.y<-NULL
temp.IV<-subset(temp,select=c("DATE","SC_CODE","SC_NAME","OPEN","HIGH","LOW","CLOSE","NO_OF_SHRS","DLV_QTY"))
write.csv(temp.IV,file=paste(filepath,filenameDate, ".csv",sep=""),row.names = FALSE)
#Print Progress
print(paste (myDate, "-Done!", endDate-myDate, " days left"))
}, error=function(err){
print(paste(myDate, "-No Record", endDate-myDate, " days left"))
}
)
myDate <- myDate+1
}
#Delete temp file
file.remove(junkBHAV)
file.remove(junkDELV)To leave a comment for the author, please follow the link and comment on their blog: My Paper Trades.
R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.