如何“获取特定日期所有货币和股票的报价”(GNU Cash)

如何“获取特定日期所有货币和股票的报价”(GNU Cash)

我如何告诉 GNU Cash更新价格数据库所有已知货币、股票、债券、共同基金等为一个具体的

我正在尝试准备一份过去日期的报告。我已经Options将报告设置为nearest in time这样它就会从价格数据库中抓取尽可能最接近报告日期的商品价格。

嗯,我查看了价格数据库,发现部分股票的价格存在差距。对于许多股票,我没有为报告当天定义任何价格。因此,我的报告可能不准确。

我知道我可以转到Tools->Price Database并单击Get Quotes按钮。这将获取当前报价(价格)并将其添加到所有定义货币、股票、债券、共同基金等的价格数据库中。但这将获取并添加以下价格:今天的日期仅有的。

我怎样才能做到相当于Get Quotes但对于特定的一天过去的

答案1

我遇到了同样的问题。我使用 gnucash python 绑定和以下脚本,从包含日期 (YYYY-MM-DD) 和价格的文本文件导入价格,每行都有一个新日期。

希望它能有所帮助。祝一切顺利。

import datetime
from gnucash import Session, Account, Split, GncCommodity, GncPrice

url = "personal.gnucash"

# Initialize Gnucash session
session = Session(url, True, False, False)
book = session.book
pdb = book.get_price_db()
comm_table = book.get_table()

# Define commodities
sec_gbp = GncCommodity(book,"Pound Sterling", "CURRENCY", "GBP", "826", 100)
sec_chf = GncCommodity(book,"Swiss Franc", "CURRENCY", "CHF", "756", 100)

def extractFXrateFromFile(filename,book,pdb,sec_base,sec_curr):
  with open(filename) as myFile :
    for line in myFile.readlines() :
      splitLine = line.split(' ')
      y,m,d = (int(x) for x in splitLine[0].split("-"))

      price = GncPrice(book)
      price.set_time64( datetime.datetime(y,m,d) )
      value = price.get_value()
      value.denom = int( 1e10 )
      rate = float(splitLine[1])
      value.num = int( rate * 1e10 )
      price.set_value(value)
      price.set_currency( sec_curr )
      price.set_commodity( sec_base )
      pdb.add_price(price)

extractFXrateFromFile("chf_per_gbp.txt", book, pdb, sec_chf, sec_gbp)

session.save()
session.end()
session.destroy()

相关内容