首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么我会得到这个错误?(QuantConnect算法)

为什么我会得到这个错误?(QuantConnect算法)
EN

Stack Overflow用户
提问于 2018-07-17 01:20:27
回答 1查看 1.9K关注 0票数 1

我刚刚开始使用QuantConnect,但我对Python语言理解得相当好,至少我是这么认为的。这是我的代码的重要部分:

代码语言:javascript
复制
def Initialize(self):
    # Set the cash we'd like to use for our backtest
    # This is ignored in live trading 
    self.SetCash(5000)

    # Start and end dates for the backtest.
    # These are ignored in live trading.
    self.SetStartDate(2015,1,1)
    self.SetEndDate(2018,1,1)

    # Set Brokerage model to load OANDA fee structure.
    self.SetBrokerageModel(BrokerageName.OandaBrokerage)

    # Add assets you'd like to see
    # self.eurusd = self.AddForex("EURUSD", Resolution.Minute).Symbol
    self.usdjpy = self.AddForex("USDJPY", Resolution.Minute).Symbol
    # self.eurjpy = self.AddForex("EURJPY", Resolution.Minute).Symbol



def OnData(self, slice):

    rsi = self.RSI("USDJPY", 14, MovingAverageType.Simple)

    if rsi > 72:
        self.SetHoldings("USDJPY", 1)

    if rsi < 28:
        self.SetHoldings("USDJPY", 1)

这是我得到的错误:

代码语言:javascript
复制
Runtime Error: TypeError : Cannot get managed object
  at OnData in main.py:line 36
 TypeError : Cannot get managed object

堆栈跟踪:

代码语言:javascript
复制
    System.Exception: TypeError : Cannot get managed object
     at OnData in main.py:line 73
     ---> Python.Runtime.PythonException: TypeError : Cannot get managed object
     at Python.Runtime.PyObject.Invoke (Python.Runtime.PyTuple args, 
     Python.Runtime.PyDict kw) [0x00033] in <0f995c28c5b446ad8835419f76b319a3>:0 
     at Python.Runtime.PyObject.InvokeMethod (System.String name, 
     Python.Runtime.PyTuple args, Python.Runtime.PyDict kw) [0x00007] in 
     <0f995c28c5b446ad8835419f76b319a3>:0 
      at Python.Runtime.PyObject.TryInvokeMember 
       (System.Dynamic.InvokeMemberBinder binder, System.Object[] args, 
      System.Object& result) [0x0003e] in <0f995c28c5b446ad8835419f76b319a3>:0 
      at (wrapper dynamic-method) 
 System.Object.CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,object,QuantConnect.Data.Slice)

我试图修改我创建变量'rsi‘的方式,但似乎什么都不起作用。谁能告诉我我哪里做错了?

EN

回答 1

Stack Overflow用户

发布于 2018-07-17 01:30:07

与处理其他属性一样,您需要使用self将其设置为实例变量。

代码语言:javascript
复制
self.rsi = self.RSI(...)

..。

代码语言:javascript
复制
if self.rsi > 72:

或者,只需将定义移动到OnData方法中。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51367073

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档