首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >'numpy.int64‘对象在backtrader提要中没有属性'to_pydatetime’

'numpy.int64‘对象在backtrader提要中没有属性'to_pydatetime’
EN

Stack Overflow用户
提问于 2022-02-02 11:54:20
回答 1查看 518关注 0票数 0

我无法修复错误- 'numpy.int64‘对象没有属性' to _pydatetime',我将非常感激,如果有人能在这方面帮助我吗?我已经尝试过卸载pyfolio并将其从git中延迟。请参阅下面的完整代码

代码语言:javascript
复制
import os
import glob
import requests
import pandas as pd
from nsepy import *
from datetime import datetime
import backtrader as bt
import backtrader.feeds as btfeeds
from __future__ import (absolute_import, division, print_function,
                        unicode_literals)

class TestStrategy(bt.Strategy):

    def log(self, txt, dt=None):
        ''' Logging function for this strategy'''
        dt = dt or self.datas[0].datetime.date(0)
        print('%s, %s' % (dt.isoformat(), txt))

    def __init__(self):
        # Keep a reference to the "close" line in the data[0] dataseries
        self.dataclose = self.datas[0].close

    def next(self):
        # Simply log the closing price of the series from the reference
        self.log('Close, %.2f' % self.dataclose[0])

if __name__ == '__main__':
    cerebro = bt.Cerebro()
    cerebro.addstrategy(TestStrategy)
    
    #Data feed block
    data_path = "/Users/kumarun/Documents/data/files"
    joined_files = os.path.join(data_path, "Oct-MONTHLY-Expirydata_2020.csv")
    joined_list = glob.glob(joined_files)
    df = pd.concat(map(pd.read_csv, joined_list), ignore_index=True)
    df.columns=['Ticker','date', 'open', 'high', 'low', 'close', 'volume','Open Interest']
    filtered = df[(df['Ticker'] == 'BANKNIFTY')]
#Cerebro block
    filtered.date = pd.to_datetime(filtered.date, format='%d-%m-%Y %H:%M:%S')
    feed = bt.feeds.PandasData(dataname=filtered)
    cerebro.adddata(feed)
    cerebro.broker.setcash(100000.0)

    print('Starting Portfolio Value: %.2f' % cerebro.broker.getvalue())

    cerebro.run()

    print('Final Portfolio Value: %.2f' % cerebro.broker.getvalue())

EN

回答 1

Stack Overflow用户

发布于 2022-02-03 12:10:47

我觉得你可能会遇到列名的问题。尝试使用以下方法指定您的列名:

代码语言:javascript
复制
 data = bt.feeds.PandasData(
        dataname=filtered,
        datetime="date",
        open='open',
        high='high',
        low='low',
        close='close',
        volume='volume',
        openinterest="Open Interest"
    )

另外,可以删除Ticker name列,并使用以下方法添加名称:

代码语言:javascript
复制
ticker = 'BANKNIFTY'
cerebro.adddata(feed, name=ticker)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70955158

复制
相关文章

相似问题

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