예제 #1
0
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)
예제 #2
0
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")
예제 #3
0
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)