IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 学习python量化分析 -> 正文阅读

[人工智能]学习python量化分析

python量化分析数据导入01

这是个人第一次在CSDN上发BLOG,主要想记录自己学习量化的过程,并督促自己能坚持下来。

本节是使用backtrader回测的数据如何导入,主要内容为:

  • 本地数据csv导入
  • tushare数据导入
  • pd.DataFrame数据导入注意事项

知识点补短板:
1、from future import print_function。是什么意思?
python2.X - python3.X新旧版本的兼容性方面存在差异,处理方法是按照最新的特性来处理。将future可以看成Python的一个专门存放新特性的模块。
from future import print_function。其实这句函数之后,即使在低版本的python2.X,当使用print函数时,须python3.X那样加括号使用。tips:python2.X中print不需要括号,而在python3.X中则需要。
对于所有的from future import _,则意味着在新旧版本的兼容性方面存在差异,处理方法是按照最新的特性来处理。可以将future看成Python的一个专门存放新特性的模块。除了print_function,还有absolute_import,division,unicode_literals。
主要目的还是实现代码引用时,在低版本上能够使用新版上的功能
2、os.path.realpath(file) 获取当前目录及文件名称
os.path.dirname() 获取上级目录(即当前文件所在文件夹名)
os.path.join (当前目录, 加入目录)添加目录
print(os.path.realpath(file)) #获取当前文件路径
print(os.path.dirname(os.path.realpath(file))) # 获取当前文件上级目录
os.path.dirname(os.path.dirname(os.path.realpath(file))) # 获取当前文件上上级目录


# 目录打印的结果是  C:/study/project
project_path = os.path.dirname(os.path.dirname(__file__))
# 拼接后的路径是:C:/study/project\datas
data_path = os.path.join(project_path,'datas')
#--------------------------------------
# 如果想让项目目录变为\形式,使用adspath (注:在python下是没有必要这样处理的,现在仅提供了一种改为\形式的方法而已)
project_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# 这个时候的路径是:C:\study\project\datas
data_path = os.path.join(project_path,'datas')
 

CSV数据导入路径为:
方法1

# 先找到脚本文件的位置
modepath = os.path.dirname(__file__)
# 然后根据脚本与数据的相对关系找到数据位置,这样脚本从任意地方被调用,都可以正确地访问到数据
datapath = modepath+'/data/000998.SZ.csv'

注:python 脚本文件在C:/Users/PycharmProjects/pythonProject 文件夹中

C:/Users/PycharmProjects/pythonProject
C:/Users/PycharmProjects/pythonProject/data/000998.SZ.csv

方法2

# 先找到脚本文件的位置
modepath = os.path.dirname(__file__)
# 然后根据脚本与数据的相对关系找到数据位置,这样脚本从任意地方被调用,都可以正确地访问到数据
# datapath = modepath+'/data/000998.SZ.csv'
datapath = os.path.join(modepath, './data/000998.SZ.csv')   # ./ 代表当前所在的目录

C:/Users/PycharmProjects/pythonProject
C:/Users/PycharmProjects/pythonProject./data/000998.SZ.csv

方法3

# 先找到脚本文件的位置
modepath = os.path.dirname(__file__)
# 然后根据脚本与数据的相对关系找到数据位置,这样脚本从任意地方被调用,都可以正确地访问到数据
# datapath = modepath+'/data/000998.SZ.csv'
# datapath = os.path.join(modepath, './data/000998.SZ.csv')  
datapath = os.path.join(modepath, 'data/000998.SZ.csv')   

C:/Users/PycharmProjects/pythonProject
C:/Users/PycharmProjects/pythonProject\data/000998.SZ.csv

以上3种方案的数据 GenericCSVData均可以导入

import backtrader as bt    # 引入backtrader 框架
import datetime
import pandas as pd
import numpy as np
import os                 # 用于路径管理 数据导入时使用

# 创建策略
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):
        self.dataclose = self.datas[0].close

    def next(self):
        self.log('Close,%.2f' % self.dataclose[0])


# 创建cerebro实例
cerebro = bt.Cerebro()
# 添加策略
cerebro.addstrategy(TestStrategy)
# 先找到脚本文件的位置
modepath = os.path.dirname(__file__)
# 然后根据脚本与数据的相对关系找到数据位置,这样脚本从任意地方被调用,都可以正确地访问到数据
# datapath = modepath+'/data/000998.SZ.csv'
# datapath = os.path.join(modepath, './data/000998.SZ.csv')
datapath = os.path.join(modepath, 'data/000998.SZ.csv')

# data feeds 创建
data = bt.feeds.GenericCSVData(
        dataname=datapath,
        fromdate=datetime.datetime(2020, 8, 13),
        todate=datetime.datetime(2021, 8, 13),
        nullvalue=0.0,
        dtformat='%Y-%m-%d',       # 自动把index数据中的符合日期的格式变成datetime类型
        datetime=0,
        open=2,
        high=3,
        low=4,
        close=5,
        volume=9,
        openinterest=-1
)

# dataframe = pd.read_csv('dfqc.csv', index_col=0, parse_dates=True)
# dataframe['openinterest'] = 0
# data = bt.feeds.PandasData(dataname=dataframe,
#                            fromdate=datetime.datetime(2015, 1, 1),
#                            todate=datetime.datetime(2016, 12, 31)
#                            )
# 在cerebro中添加价格数据
cerebro.adddata(data)
# 设置启动资金
cerebro.broker.setcash(100000.0)
# 打印开始资金
print('Starting Portfolio Value:%.2f' % cerebro.broker.getvalue())
# 遍历所有数据
cerebro.run()
# 打印最后结果
print('Final Portfolio Value:%.2f' % cerebro.broker.getvalue())

2021-08-06, Close,23.35
2021-08-09, Close,23.14
2021-08-10, Close,23.35
2021-08-11, Close,22.93
2021-08-12, Close,22.97
Final Portfolio Value:100000.00

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-11-29 16:19:21  更:2021-11-29 16:21:20 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 3:56:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码