def importSecurities(inputFilename, projectFilename, encoding): print("importSecurities(\"" + inputFilename + "\", \"" + projectFilename + "\")") project = None if os.path.isfile(projectFilename): project = QuoteLoader.readProject(projectFilename, encoding) else: project = QuoteLoader.Project() for line in codecs.open(inputFilename, "r", encoding).readlines(): line = line.strip() if line.find("S:") == 0 or line.find("I:") == 0: tokens = line[2:].split("=") symbol = tokens[0].strip().rstrip() if project.findSecurity(symbol): continue name = tokens[1].strip().rstrip().replace("\t", " ") type = None if line[0] == "S": type = QuoteLoader.Security.Stock else: type = QuoteLoader.Security.Index print("Adding new security for symbol " + symbol) project.addSecurity(QuoteLoader.Security(symbol, name, type)) QuoteLoader.writeProject(project, projectFilename, encoding)
def testProject(): if False: project = Project() project.securities.append(QuoteLoader.Security("ERIC-B.ST", "Ericsson B", QuoteLoader.Security.Stock)) project.securities.append(QuoteLoader.Security("ERTS", "Electronic Arts Inc.", QuoteLoader.Security.Stock)) writeProject(project, "project.qlp") project = QuoteLoader.readProject("project.qlp") QuoteLoader.writeProject(project, "project2.qlp")
def downloadQuotes(projectFilename, importScript, encoding, date): print("downloadQuotes(\"" + projectFilename + "\")") if not os.path.isfile(projectFilename): print("Failed to find " + projectFilename) return print("Parsing project " + projectFilename) project = QuoteLoader.readProject(projectFilename, encoding) today = datetime.date.today() if date: date = QuoteLoader.stringToDate(date) failures = [] for security in project.securities: lastDate = date if not lastDate: lastDate = security.lastDate if lastDate >= today: print("Skipping download, security " + security.symbol + " is already up to date") continue print("Dowloading " + security.symbol + " for " + str(lastDate) + " to " + str(today)) try: quotes = QuoteLoader.Yahoo.importQuotes(security.symbol, lastDate, today) security.addQuotes(quotes) except KeyboardInterrupt: print("Aborted") return except: print("Failed") failures.append(security.symbol) if len(failures) > 0: print("Failed to download quotes for " + str(len(failures)) + " securities") for f in failures: print(f) print("Writing import script") QuoteLoader.ProTA.createImportScript(project.securities, importScript, encoding) print("Writing project " + projectFilename) QuoteLoader.writeProject(project, projectFilename, encoding)