在使用backtrader的cerebro.run函数时报错,请问是怎么回事?

在运行下面代码时出现'Lines_LineSeries_LineIterator_DataAccessor_Strateg' object has no attribute 'dataclose'
import pandas as pd
from WindPy import w
import backtrader as bt
import datetime as dt
import matplotlib.pyplot as plt
import numpy as np
w.start()
w.isconnected

HS300 = pd.read_excel('C:/Users/baiyi/Desktop/Temp.xlsx')
class SMAStrategy(bt.Strategy):
    def __int__(self):
        self.dataclose = self.data0.close
        self.order = None
        self.buyprice = None
        self.buycomm = None
        
        self.sma = bt.indicators.SimpleMovingAverage(self.data0, period=15)
    def next(self):
        if not self.position:
            if self.dataclose[0] > self.sma[0]:
                self.buy()
        else:
            if self.dataclose[0] < self.sma[0]:
                self.close()
    def notify_order(self, order):
        if order.status in [order.Submitted, order.Accepted]:
            return
        
        if order.status in [order.Completed]:
            if order.isbuy():
                self.log(
                    'BUY EXECUTED, Price: %.2f, Cost: %.2f, Comm %.2f' %
                    (order.executed.price,
                     order.executed.value,
                     order.executed.comm))
                self.buyprice = order.executed.price
                self.buycomm = order.executed.comm
            else:
                self.log('SELL EXECUTED, Price: %.2f, Cost: %.2f, Comm %.2f' %
                        (order.executed.price,
                         order.executed.value,
                         order.executed.comm))
            self.bar_executed = len(self)
        elif order.status in [order.Canceled, order.Margin, order.Rejected]:
            self.log('Order Canceled/Margin/Rejected')
        self.order = None
            
    def notify_trade(self, trade):
        if not trade.isclosed:
            return
        self.log('OPERATION PROFIT, GROSS %.2f, NET %.2f' %
                 (trade.pnl, trade.pnlcomm))
        
    def log(self, txt, dt=None, doprint=True):
        if doprint:
            dt = dt or self.dates[0].datetime.date(0)
            print('%s, %s' % (dt.isoformat(), txt))
if __name__ =='__main__':
    cerebro = bt.Cerebro()
    HS300['Datetime'] = pd.to_datetime(HS300['Date'])
    HS300.set_index('Datetime', inplace=True)
    HS300 = bt.feeds.PandasData(dataname = HS300, fromdate = dt.datetime(2010,1,1), todate = dt.datetime(2021,12,31))
    cerebro.adddata(HS300)
    
    cerebro.addstrategy(SMAStrategy)
    cerebro.addanalyzer(bt.analyzers.SharpeRatio, _name= 'SharepRatio')
    cerebro.addanalyzer(bt.analyzers.DrawDown, _name= 'DrowDown')
    
    cerebro.broker.setcash(10000.0)
    cerebro.broker.setcommission(commission=0.0006)
    
    cerebro.addsizer(bt.sizers.PercentSizer, percents=90)
    result = cerebro.run()


'Lines_LineSeries_LineIterator_DataAccessor_Strateg' object has no attribute 'dataclose'
我的解答思路和尝试过的方法
我想要达到的结果


对象没有dataclose属性
看看是不是dataclose属性名写错了
或者对象用错了

self.dataclose = self.data0.close 改成
self.dataclose = self.data[0].close