我试图用基于Quantconnect的python制作一个交易机器人,但我得到的是一个无法管理的对象

2024-09-28 17:04:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我见过其他的线程,但基于此我想不出来

类DataConsolidationAlgorithm(QCAlgorithm):

def Initialize(self):
    '''Initialise the data and resolution required, as well as the cash and start-end dates for your algorithm. All algorithms must initialized.'''

    self.SetStartDate(2017, 1, 1)    #Set Start Date
    self.SetEndDate(2020, 1, 1)      #Set End Date
    self.SetCash(100000)             #Set Strategy Cash

    self.SetBrokerageModel(BrokerageName.FxcmBrokerage)


    symbols = [self.AddForex(ticker, Resolution.Minute).Symbol
        for ticker in ["EURUSD"]]

    self.SetBenchmark('SPY')
    
    self.slow = self.EMA("EURUSD", 200, Resolution.Daily)
    
    self.SetWarmUp(200)

def OnData(self, data):
    # Simple buy and hold template

    self.low = self.MIN("EURUSD", 7, Resolution.Daily, Field.Low)
    self.high = self.MAX("EURUSD", 7, Resolution.Daily, Field.High)
    
    #fxQuoteBars = data.QuoteBars
    #QuoteBar = fxQuoteBars['EURUSD'].Close
    #self.QuoteBar = self.History("EURUSD", TimeSpan.FromDays(1), Resolution.Daily)
    
    self.quoteBar = data['EURUSD']   ## EURUSD QuoteBar
    #self.Log(f"Mid-point open price: {quoteBar.Open}")

    self.closeBar = (self.quoteBar.Close)       ## EURUSD Bid Bar 

    self.history7days = self.History(["EURUSD"], 7, Resolution.Daily)
    
    if self.closeBar <= self.low and self.Forex["EURUSD"].Price > self.slow.Current.Value:
        self.SetHoldings("EURUSD", 1.0)
    
    if self.closeBar > self.high:
        self.SetHolding("EURUSD", 0.0)

运行时错误:TypeError:无法获取托管对象 在主干道的OnData。py:第50行 ::如果self.closeBar<;=自营低汇率和自营外汇[“欧元兑美元”]。价格>;self.slow.Current.Value: TypeError:无法获取托管对象


Tags: andtheselffordatadefasdaily
1条回答
网友
1楼 · 发布于 2024-09-28 17:04:18

我遇到了一个类似的错误,并通过确保在if语句中尝试与<;比较的数据类型解决了这个问题>;,=etc属于同一类型

将要比较的指标重新定义为OnData中的本地指标,如下所示,所有指标都将是相同的数据类型:

def Initialize(self):
'''Initialise the data and resolution required, as well as the cash and start-end dates for your algorithm. All algorithms must initialized.'''

self.SetStartDate(2017, 1, 1)    #Set Start Date
self.SetEndDate(2020, 1, 1)      #Set End Date
self.SetCash(100000)             #Set Strategy Cash

self.SetBrokerageModel(BrokerageName.FxcmBrokerage)


symbols = [self.AddForex(ticker, Resolution.Minute).Symbol
    for ticker in ["EURUSD"]]

self.SetBenchmark('SPY')

self.slow = self.EMA("EURUSD", 200, Resolution.Daily)

self.SetWarmUp(200)

# Simple buy and hold template

self.low = self.MIN("EURUSD", 7, Resolution.Daily, Field.Low)
self.high = self.MAX("EURUSD", 7, Resolution.Daily, Field.High)

#fxQuoteBars = data.QuoteBars
#QuoteBar = fxQuoteBars['EURUSD'].Close
#self.QuoteBar = self.History("EURUSD", TimeSpan.FromDays(1), Resolution.Daily)

self.quoteBar = data['EURUSD']   ## EURUSD QuoteBar
#self.Log(f"Mid-point open price: {quoteBar.Open}")

self.closeBar = (self.quoteBar.Close)       ## EURUSD Bid Bar 

self.history7days = self.History(["EURUSD"], 7, Resolution.Daily)

定义数据(自身、数据):

closebar = self.closeBar.Current.Value
low = self.low.Current.Value
price = self.Forex["EURUSD"].Price
slow = self.slow.Current.Value
high = self.high.Current.Value

if closeBar <= low and price > slow :
    self.SetHoldings("EURUSD", 1.0)

if closeBar > high:
    self.SetHolding("EURUSD", 0.0)

相关问题 更多 >