保存和加载记事簿组合
saving and loading blotter portfolio
我正在使用 blotter 来保存和计算一些交易,但我需要每天保存和加载它们。
我无法保存我的交易,我相信这是因为它们处于由 blotter (.blotter) 创建的不同环境中 - 根据我通过谷歌搜索我的问题能够获得的信息.
我已经设置了一个交易示例:
require(quantstrat)
currency("USD")
stock(primary_id = "SB1", currency = "USD", multiplier=1120, tick_size = 0.01)
initPortf(name="testport", symbols="SB1", initDate = "2017-11-01")
initAcct(name="testacct", portfolio="testport", initDate = "2017-11-01", initEq = 100000)
ls_instruments()
addTxn(Portfolio="testport", Symbol="SB1", TxnDate="2017-11-22", TxnPrice=15.00, TxnQty = 2 , verbose=TRUE)
getPos(Portfolio="testport", Symbol="SB1", "2017-11-22", Columns=c("Pos.Qty"))
然后我尝试保存它(这没有用)并考虑像下面的代码一样加载它:
save("testport", file="C:/Users/augus/Dropbox/Trading/R/Trading/Dados/test.RData", envir=.blotter)
load(file="C:/Users/augus/Dropbox/Trading/R/Trading/Dados/test.RData", verbose=TRUE)
我对 R 和 Whosebug 非常了解,所以如果我的问题中遗漏了任何信息,请告诉我,非常感谢您的帮助。
祝一切顺利,
奥古斯托
你想要的对象实际上是"portfolio.testport",而不是"testport"(blotter中是这样设计的)。您可以通过查看 .blotter
环境中的内容来检查:
ls(.blotter)
#[1] "account.testacct" "portfolio.testport"
您可以这样做:
save("portfolio.testport", file="test.RData", envir=.blotter)
save("testport", file="C:/Users/augus/Dropbox/Trading/R/Trading/Dados/test.RData", envir=.blotter)
load(file="test.RData", verbose=TRUE)
虽然您可能不希望将所有内容都存储在该投资组合中,但它有助于了解该投资组合的组成部分。
p <- getPortfolio("testport")
class(p)
#[1] "blotter_portfolio" "portfolio"
它基本上是一个列表,包含一个摘要 (xts) 和一个符号对象(另一个列表):
ls(p)
#[1] "summary" "symbols"
符号列表的内容是:
ls(p$symbols)
#[1] "SB1"
而每个符号对象也是一个列表,包含3个xts对象:
ls(p$symbols$SB1)
#[1] "posPL" "posPL.USD" "txn"
txn
是对象之一(xts 对象本身):
head(p$symbols$SB1$txn)
# Txn.Qty Txn.Price Txn.Value Txn.Avg.Cost Pos.Qty Pos.Avg.Cost Gross.Txn.Realized.PL Txn.Fees Net.Txn.Realized.PL Con.Mult
# 2017-11-01 0 0 0 0 0 0 0 0 0 0
# 2017-11-22 2 15 33600 15 2 15 0 0 0 1120
您可能希望仅保存上述投资组合对象的子部分。
这是您可能会发现对节省有用的另一种方法:
p <- getPortfolio("testport")
saveRDS(p, "test2.rds")
p <- readRDS("test2.rds")
我正在使用 blotter 来保存和计算一些交易,但我需要每天保存和加载它们。
我无法保存我的交易,我相信这是因为它们处于由 blotter (.blotter) 创建的不同环境中 - 根据我通过谷歌搜索我的问题能够获得的信息.
我已经设置了一个交易示例:
require(quantstrat)
currency("USD")
stock(primary_id = "SB1", currency = "USD", multiplier=1120, tick_size = 0.01)
initPortf(name="testport", symbols="SB1", initDate = "2017-11-01")
initAcct(name="testacct", portfolio="testport", initDate = "2017-11-01", initEq = 100000)
ls_instruments()
addTxn(Portfolio="testport", Symbol="SB1", TxnDate="2017-11-22", TxnPrice=15.00, TxnQty = 2 , verbose=TRUE)
getPos(Portfolio="testport", Symbol="SB1", "2017-11-22", Columns=c("Pos.Qty"))
然后我尝试保存它(这没有用)并考虑像下面的代码一样加载它:
save("testport", file="C:/Users/augus/Dropbox/Trading/R/Trading/Dados/test.RData", envir=.blotter)
load(file="C:/Users/augus/Dropbox/Trading/R/Trading/Dados/test.RData", verbose=TRUE)
我对 R 和 Whosebug 非常了解,所以如果我的问题中遗漏了任何信息,请告诉我,非常感谢您的帮助。
祝一切顺利,
奥古斯托
你想要的对象实际上是"portfolio.testport",而不是"testport"(blotter中是这样设计的)。您可以通过查看 .blotter
环境中的内容来检查:
ls(.blotter)
#[1] "account.testacct" "portfolio.testport"
您可以这样做:
save("portfolio.testport", file="test.RData", envir=.blotter)
save("testport", file="C:/Users/augus/Dropbox/Trading/R/Trading/Dados/test.RData", envir=.blotter)
load(file="test.RData", verbose=TRUE)
虽然您可能不希望将所有内容都存储在该投资组合中,但它有助于了解该投资组合的组成部分。
p <- getPortfolio("testport")
class(p)
#[1] "blotter_portfolio" "portfolio"
它基本上是一个列表,包含一个摘要 (xts) 和一个符号对象(另一个列表):
ls(p)
#[1] "summary" "symbols"
符号列表的内容是:
ls(p$symbols)
#[1] "SB1"
而每个符号对象也是一个列表,包含3个xts对象:
ls(p$symbols$SB1)
#[1] "posPL" "posPL.USD" "txn"
txn
是对象之一(xts 对象本身):
head(p$symbols$SB1$txn)
# Txn.Qty Txn.Price Txn.Value Txn.Avg.Cost Pos.Qty Pos.Avg.Cost Gross.Txn.Realized.PL Txn.Fees Net.Txn.Realized.PL Con.Mult
# 2017-11-01 0 0 0 0 0 0 0 0 0 0
# 2017-11-22 2 15 33600 15 2 15 0 0 0 1120
您可能希望仅保存上述投资组合对象的子部分。
这是您可能会发现对节省有用的另一种方法:
p <- getPortfolio("testport")
saveRDS(p, "test2.rds")
p <- readRDS("test2.rds")