2

目前,我正在从 Python 切换到 R,并且正在尝试使用 Jeff Ryan 的 Ibrokers 包编写一些简单的代码来为投资组合定价。我想twsconn在我的一个对象中有一个类字段

setClass( "MktAsset",
  representation( IB.id = "character",
                          asset.type = "factor",
              ccy = "factor",
              IB.conn = "twsconn") )

但系统似乎对此并不满意

消息是

在 .completeClassSlots(ClassDef, where) : "MktAsset" 定义中未定义的插槽类:IB.connection(class "twsconn")

但是当我问 tws 的类(用 初始化时tws <- twsConnect(),它返回

[1] "twsconn"     "environment"

我试图通过代码检查一个类的存在,twsconn但我什么也没找到。

有人可以帮忙吗?

非常感谢

4

1 回答 1

3

问题是 S4 中的 S3。这应该有效:

setOldClass("twsconn")  # this is what you are missing
setClass( "MktAsset",
  representation( IB.id = "character",
                     asset.type = "factor",
         ccy = "factor",
         IB.conn = "twsconn") )

# [1] "MktAsset"

a <- new("MktAsset")

ibg <- ibgConnect() # connect to IB Gateway

a@IB.conn <- ibg
a

An object of class "MktAsset"
Slot "IB.id":
character(0)

Slot "asset.type":
factor(0)
Levels:

Slot "ccy":
factor(0)
Levels:

Slot "IB.conn":
<twsConnection,1 @ 20110325 13:15:22 CST, nextId=1>

如果您能在 4 月来到芝加哥的 R/Finance www.RinFinance.com,我将在周五早上(4 月 29 日)举办一个两小时的研讨会,内容是关于 IBrokers(以及与 R 的一般算法交易)我怀疑会感兴趣。

于 2011-03-25T18:31:15.817 回答