Site icon R-bloggers

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.
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

Without much write-up here is the code for the same.

For those, who want to take a shortcut, here are historical quotes
  1. BSE_EOD_2007
  2. BSE_EOD_2008
  3. BSE_EOD_2009
  4. BSE_EOD_2010
  5. BSE_EOD_2011-Upto June

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.