我目前正在使用quantstrat/blotter构建一个策略。我使用的价格数据使用数字作为安全标识符,因此,这些数字是列名,也是用于函数(如stock() )中的synbol名称,以便导入金融工具。但是,如下面的可重复代码所示,只要在这些数字标识符上使用stock(),只要使用数据集的一小部分,FinancialInstrument包就会以奇怪的方式修改它们,方法是添加一个"X“并删除前导数字。基于此,是否对用于FinancialInstrument包的符号名有任何限制?
structure(c(9.17000007629395, 9.17000007629395, 9.17000007629395,
9.17000007629395, 9.17000007629395, 9.17000007629395, 41.0999984741211,
40.7599983215332, 40.4599990844727, 40.1500015258789, 40.5299987792969,
40.5299987792969, 41.9900016784668, 41.7449989318848, 42.0299987792969,
41.7200012207031, 42.25, 41.7000007629395, 29.3199996948242,
29.3199996948242, 29.3199996948242, 29.3199996948242, 29.3199996948242,
29.3199996948242), class = c("xts", "zoo"), .indexCLASS = "Date", tclass = "Date", .indexTZ = "UTC", tzone = "UTC", index = structure(c(1403481600,
1403568000, 1403654400, 1403740800, 1403827200, 1404086400), tzone = "UTC", tclass = "Date"), .Dim = c(6L,
4L), .Dimnames = list(NULL, c("10078", "10104", "10107", "10108"
)))
colnames(x)
# "10078" "10104" "10107" "10108"
for(i in colnames(x)){
stock(i,currency="USD",multiplier=1)
}
ls_stocks()
# "X0078" "X0104" "X0107" "X0108"发布于 2015-01-30 19:42:49
仪器名称需要以字母或点开始。instrument函数使用make.names来确保这一点。如果能够通过一个数字找到你的乐器是很重要的,那么你可以把它作为一个标识符。
stock("X1234", currency("USD"), identifiers=list(num=1234))
getInstrument("1234")
#primary_id :"X1234"
#currency :"USD"
#multiplier :1
#tick_size :0.01
#identifiers:List of 1
# ..$ num:1234
#type :"stock"另一种添加标识符的方法
add.identifier("X1234", id2=42)https://stackoverflow.com/questions/28242656
复制相似问题