Сохранение и загрузка блоттера

Я использую блоттер для хранения и учета некоторых транзакций, но мне нужно было бы сохранять и загружать их ежедневно.

Я не смог сохранить свои транзакции, я полагаю, что это происходит потому, что они находятся в другой среде, созданной с помощью 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 и stackru, поэтому, пожалуйста, дайте мне знать, если мне не хватает какой-либо информации в моем вопросе, и большое спасибо за помощь.

Всего наилучшего,

Аугусто

1 ответ

Решение

Объект, который вы хотели, был на самом деле "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")
Другие вопросы по тегам