量化回测,能读数据,不能读出来收盘价

量化回测,能读数据,不能读出来收盘价


# -*- coding: utf-8 -*-
import backtrader as bt
import pandas as pd
from datetime import datetime


# Create a Stratey
class TestStrategy(bt.Strategy):

    def log(self, txt, dt=None):
        ''' 提供记录功能'''
        dt = dt or self.datas[0].datetime.date(0)
        print('%s, %s' % (dt.isoformat(), txt))

    def __init__(self):
        # 引用到输入数据的close价格
        self.dataclose = self.datas[0].close

    def next(self):
        # 目前的策略就是简单显示下收盘价。
        self.log('Close, %.2f' % self.dataclose[0])


if __name__ == '__main__':
    cerebro = bt.Cerebro()

    # 增加一个策略
    cerebro.addstrategy(TestStrategy)

    # 获取数据
    stock_hfq_df = pd.read_csv("C:/Users/18368/Desktop/新建文件夹 (2)/苹果.csv", index_col=0, parse_dates=True)

    start_date = datetime.strptime('2009/10/30', '%Y/%m/%d')  # 回测开始时间
    end_date = datetime.strptime('2016/10/30', '%Y/%m/%d')  # 回测结束时间
    data = bt.feeds.PandasData(dataname=stock_hfq_df, fromdate=start_date, todate=end_date)  # 加载数
    # print(stock_hfq_df)

    cerebro.adddata(data)  # 将数据传入回测系统
    cerebro.broker.setcash(100000.0)
    print('Starting Portfolio Value: %.2f' % cerebro.broker.getvalue())
    print('Final Portfolio Value: %.2f' % cerebro.broker.getvalue())


```实际结果是这样的C:\Users\18368\Anaconda3\python.exe C:/Users/18368/PycharmProjects/LHHC/3.py
Starting Portfolio Value: 100000.00
Final Portfolio Value: 100000.00

Process finished with exit code 0


```应该是这样的执行后结果:

Starting Portfolio Value: 100000.00
2020-09-30, Close, 125.97
...(省略n行)
2021-09-27, Close, 127.11
2021-09-28, Close, 127.26
2021-09-29, Close, 127.11
2021-09-30, Close, 126.83
Final Portfolio Value: 100000.00

检查一下你的代码和你的csv的数据是否一致。


| 表头 | 表头 |
|APL9 苹果指数 日线 不复权                            
      日期        开盘        最高        最低        收盘        成交量        持仓量        结算价
2017/12/25    7914    7932    7744    7745    402020    39960    0
2017/12/26    7773    7838    7744    7745    212976    33148    0
2017/12/27    7757    7790    7748    7750    84040    27898    0
2017/12/28    7762    7862    7761    7820    84978    23880    0
2017/12/29    7831    7836    7796    7799    32658    21360    0
2018/1/2    7804    7845    7804    7831    20890    18748    0
2018/1/3    7853    7855    7805    7805    22790    18496    0
2018/1/4    7811    7819    7799    7804    17852    17630    0
2018/1/5    7813    7844    7797    7822    11982    15898    0
2018/1/8    7824    7825    7781    7785    8846    15668    0
2018/1/9    7786    7794    7762    7762    73868    21970    0
2018/1/10    7757    7773    7739    7742    31506    21842    0
2018/1/11    7741    7763    7704    7706    45058    26154    0
2018/1/12    7680    7701    7665    7665    40790    29714    0
2018/1/15    7658    7678    7645    7656    27614    30834    0
2018/1/16    7659    7689    7605    7612    47184    34952    0
2018/1/17    7629    7630    7542    7547    94018    38946    0
2018/1/18    7557    7583    7543    7548    50958    40362    0
2018/1/19    7553    7580    7524    7538    60386    39484    0
2018/1/22    7550    7585    7548    7572    42872    38112    0
2018/1/23    7582    7609    7557    7571    55554    35746    0
2018/1/24    7577    7577    7545    7553    27950    36170    0
2018/1/25    7561    7574    7543    7544    28230    36718    0
2018/1/26    7549    7578    7548    7558    30770    34432    0
2018/1/29    7566    7566    7457    7458    58638    39614    0
2018/1/30    7453    7465    7422    7422    51896    43580    0
2018/1/31    7418    7452    7381    7399    89936    43898    0
2018/2/1    7413    7425    7356    7356    64172    45444    0
2018/2/2    7368    7386    7303    7306    103224    50498    0
2018/2/5    7299    7318    7265    7272    107520    56256    0
2018/2/6    7268    7310    7159    7162    126578    62632    0
2018/2/7    7172    7173    6846    6846    317480    87028    0
2018/2/8    6720    6734    6558    6641    468588    69546    0
2018/2/9    6675    6703    6592    6624    287276    74096    0
2018/2/12    6627    6754    6595    6605    309130    77172    0
2018/2/13    6620    6646    6558    6569    222968    76770    0
2018/2/14    6588    6603    6354    6396    276438    80350    0
2018/2/22    6376    6376    6315    6320    260624    101918    0
2018/2/23    6321    6670    6321    6665    578642    102746    0
2018/2/26    6758    6866    6692    6733    696938    84716    0
2018/2/27    6724    6965    6677    6862    1034592    92960    0
 ------ | ------ |
| 单元格 | 单元格 |
| 单元格 | 单元格 |

数据用了三种格式都试了,只能读表格

你的数据是不是前面有几行无用的,我觉得应该要指定从第几行开始才行。