@jesen616 said in TypeError: must be real number, not str:
Re: Error: When strings show up where they aren't wanted...
Thanks to all. I'm trying to optimize my strategy params. When I run my cerebro, I get a "TypeError: must be real number, not str".
Traceback (most recent call last): File "<stdin>", line 17, in <module> File "C:\Users\cl\AppData\Local\Programs\Python\Python38\lib\site-packages\backtrader\cerebro.py", line 1140, in run data.preload() File "C:\Users\cl\AppData\Local\Programs\Python\Python38\lib\site-packages\backtrader\feed.py", line 438, in preload while self.load(): File "C:\Users\cl\AppData\Local\Programs\Python\Python38\lib\site-packages\backtrader\feed.py", line 479, in load _loadret = self._load() File "C:\Users\cl\AppData\Local\Programs\Python\Python38\lib\site-packages\backtrader\feeds\pandafeed.py", line 255, in _load line[0] = self.p.dataname.iloc[float(self._idx), float(colindex)] File "C:\Users\cl\AppData\Local\Programs\Python\Python38\lib\site-packages\backtrader\linebuffer.py", line 222, in __setitem__ self.array[self.idx + ago] = float(value) TypeError: must be real number, not str
cerebro=bt.Cerebro() cerebro.optstrategy(MyStrategy1,var1=range(10,15),var2=range(25,30),>up1=range(25,30),g=(1,)) data = bt.feeds.PandasData(dataname=data3) cerebro.adddata(data) cerebro.broker.setcash(5000) dcash0 = cerebro.broker.startingcash cerebro.addsizer(bt.sizers.FixedSize,stake=1) cerebro.broker.setcommission(commission=0.001) print('初始资金:%.2f'% cerebro.broker.getvalue()) cerebro.addanalyzer(bt.analyzers.SharpeRatio,_name='SharpeRatio',legacyannual=True) cerebro.addanalyzer(bt.analyzers.AnnualReturn,_name='AnnualReturn') cerebro.addanalyzer(bt.analyzers.TradeAnalyzer,_name='TradeAnalyzer') cerebro.addanalyzer(bt.analyzers.DrawDown,_name='DW') cerebro.addanalyzer(bt.analyzers.Returns, _name = "returns") cerebro.addsizer(bt.sizers.PercentSizer, percents = 10) result = cerebro.run()
My datafeed seems to be fine.
data3 open high low close volume openinterest datetime 2020-12-22 14:45:00 2059 2059 2046 2046 72912 0 2020-12-22 15:00:00 2047 2047 2021 2022 149478 0 2020-12-22 21:15:00 2052 2056 2042 2052 166632 0 2020-12-22 21:30:00 2052 2060 2051 2057 87273 0 2020-12-22 21:45:00 2058 2067 2056 2063 96679 0
Can anyone answer it?Thanks a lot.