返回顶部
首页 > 资讯 > 精选 >如何利用Jupyter Notekook做初步分析
  • 448
分享到

如何利用Jupyter Notekook做初步分析

2023-06-02 03:06:48 448人浏览 薄情痞子
摘要

这篇文章主要介绍如何利用Jupyter Notekook做初步分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!最近一段时间都是Jupyter Notebook做策略的最初版本设计,就是行情导入画图一类。之前做个da

这篇文章主要介绍如何利用Jupyter Notekook做初步分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

最近一段时间都是Jupyter Notebook做策略的最初版本设计,就是行情导入画图一类。

之前做个dataframe做分析容易,这个算是简化版本。

  1. 新建一个DataAnalyzer 类,这个简单很多,支持从csv和mongodb导入行情数据,和从1分钟k线整合不同分钟k线

    下面是导入1分钟螺纹钢数据,整合为5分钟K线

from pymonGo import MongoClient, ASCENDINGimport pandas as pdimport numpy as npfrom datetime import datetimeimport talibimport matplotlib.pyplot as pltimport scipy.stats as st%matplotlib inline%config InlineBackend.figure_fORMat = 'retina'class DataAnalyzer(object):    """    """    def __init__(self, exportpath="C:\Project\\", datformat=['datetime', 'high', 'low', 'open', 'close','volume']):        self.mongohost = None        self.mongoport = None        self.db = None        self.collection = None        self.df = pd.DataFrame()        self.exportpath = exportpath        self.datformat = datformat        self.startBar = 2        self.endBar = 12        self.step = 2        self.pValue = 0.015    def db2df(self, db, collection, start, end, mongohost="localhost", mongoport=27017, export2csv=False):        """读取mongoDB数据库行情记录,输出到Dataframe中"""        self.mongohost = mongohost        self.mongoport = mongoport        self.db = db        self.collection = collection        dbClient = MongoClient(self.mongohost, self.mongoport, connectTimeoutMS=500)        db = dbClient[self.db]        cursor = db[self.collection].find({'datetime':{'$gte':start, '$lt':end}}).sort("datetime",ASCENDING)        self.df = pd.DataFrame(list(cursor))        self.df = self.df[self.datformat]        self.df = self.df.reset_index(drop=True)        path = self.exportpath + self.collection + ".csv"        if export2csv == True:            self.df.to_csv(path, index=True, header=True)        return self.df    def csv2df(self, csvpath, dataname="csv_data", export2csv=False):        """读取csv行情数据,输入到Dataframe中"""        csv_df = pd.read_csv(csvpath)        self.df = csv_df[self.datformat]        self.df["datetime"] = pd.to_datetime(self.df['datetime'])        # self.df["high"] = self.df['high'].astype(float)        # self.df["low"] = self.df['low'].astype(float)        # self.df["open"] = self.df['open'].astype(float)        # self.df["close"] = self.df['close'].astype(float)        # self.df["volume"] = self.df['volume'].astype(int)        self.df = self.df.reset_index(drop=True)        path = self.exportpath + dataname + ".csv"        if export2csv == True:            self.df.to_csv(path, index=True, header=True)        return self.df    def df2Barmin(self, inputdf, barmins, croSSMin=1, export2csv=False):        """输入分钟k线dataframe数据,合并多多种数据,例如三分钟/5分钟等,如果开始时间是9点1分,crossmin = 0;如果是9点0分,crossmin为1"""        dfbarmin = pd.DataFrame()        highBarMin = 0        lowBarMin = 0        openBarMin = 0        volumeBarmin = 0        datetime = 0        for i in range(0, len(inputdf) - 1):            bar = inputdf.iloc[i, :].to_dict()            if openBarMin == 0:                openBarmin = bar["open"]            if highBarMin == 0:                highBarMin = bar["high"]            else:                highBarMin = max(bar["high"], highBarMin)            if lowBarMin == 0:                lowBarMin = bar["low"]            else:                lowBarMin = min(bar["low"], lowBarMin)            closeBarMin = bar["close"]            datetime = bar["datetime"]            volumeBarmin += int(bar["volume"])            # X分钟已经走完            if not (bar["datetime"].minute + crossmin) % barmins:  # 可以用X整除                # 生成上一X分钟K线的时间戳                barMin = {'datetime': datetime, 'high': highBarMin, 'low': lowBarMin, 'open': openBarmin,                          'close': closeBarMin, 'volume' : volumeBarmin}                dfbarmin = dfbarmin.append(barMin, ignore_index=True)                highBarMin = 0                lowBarMin = 0                openBarMin = 0                volumeBarmin = 0        if export2csv == True:            dfbarmin.to_csv(self.exportpath + "bar" + str(barmins)+ str(self.collection) + ".csv", index=True, header=True)        return dfbarminexportpath = "C:\\Project\\"DA = DataAnalyzer(exportpath)#数据库导入start = datetime.strptime("20190920", '%Y%m%d')end = datetime.now()dfrb8888 = DA.db2df(db="VnTrader_1Min_Db", collection="rb8888", start = start, end = end,export2csv=True)dfrb5min = DA.df2Barmin(dfrb8888,5,crossmin=1, export2csv=True)dfrb5min.tail()

如何利用Jupyter Notekook做初步分析

计算5分钟K线的参照,包括标准差,rsi,5分钟均线,和40分钟均线

logdata = pd.DataFrame()logdata['close'] =(dfrb5min['close'])# logdata['tr'] = talib.ATR(np.array(dfrb8888['high']), np.array(dfrb8888['low']), np.array(dfrb8888['close']) ,1)# logdata['atr'] = talib.ATR(np.array(dfrb8888['high']), np.array(dfrb8888['low']), np.array(dfrb8888['close']) ,20)logdata['std20'] = talib.STDDEV( np.array(dfrb5min['close']) ,20)logdata['rsi30'] = talib.RSI(np.array(dfrb5min['close']) ,30)logdata['sma5'] = talib.SMA(np.array(dfrb5min['close']) ,5)logdata['sma40'] = talib.SMA(np.array(dfrb5min['close']) ,40)logdata.plot(subplots=True,figsize=(18,16))

如何利用Jupyter Notekook做初步分析

使用快慢均线策略,显示买入卖出点

closeArray = np.array(logdata['close'])listup,listdown = [],[]for i in range(1,len(logdata['close'])):    if logdata.loc[i,'sma5'] > logdata.loc[i,'sma40'] and logdata.loc[i-1,'sma5'] < logdata.loc[i-1,'sma40']:        listup.append(i)    elif logdata.loc[i,'sma5'] < logdata.loc[i,'sma40'] and logdata.loc[i-1,'sma5'] > logdata.loc[i-1,'sma40']:        listdown.append(i)fig=plt.figure(figsize=(18,6))plt.plot(closeArray, color='y', lw=2.)plt.plot(closeArray, '^', markersize=5, color='r', label='UP signal', markevery=listup)plt.plot(closeArray, 'v', markersize=5, color='g', label='DOWN signal', markevery=listdown)plt.legend()plt.show()

如何利用Jupyter Notekook做初步分析

以上是“如何利用Jupyter Notekook做初步分析”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网精选频道!

--结束END--

本文标题: 如何利用Jupyter Notekook做初步分析

本文链接: https://lsjlt.com/news/228572.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何利用Jupyter Notekook做初步分析
    这篇文章主要介绍如何利用Jupyter Notekook做初步分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!最近一段时间都是Jupyter Notebook做策略的最初版本设计,就是行情导入画图一类。之前做个da...
    99+
    2023-06-02
  • 如何用python做数据分析
    使用Python进行数据分析可以通过以下步骤进行:1. 安装Python和相应的数据分析库:首先,你需要安装Python解释器。可以...
    99+
    2023-10-08
    python
  • 如何利用nginx做代理缓存浅析
    用到缓存就是为了减少后端的压力,提高网站并发。在网站设计中,为了更好的去中心化,我们会尽量将请求集中到前端,在前端就能处理掉。 常用的缓存类型有客户端缓存、代理缓存、服务端缓存等。 ...
    99+
    2024-04-02
  • python如何做数据分析
    python可以使用以下工具做数据分析。Matplotlib可以用来绘制数据图表,能够绘制各类图形,Numpy主要针对数组数据的一些相关处理,Pandas则比较高级,可以处理Series、DataFrame等高级数据结构和工具,一般常用的有...
    99+
    2024-04-02
  • 如何用Python做疫情数据分析
    本篇文章为大家展示了如何用Python做疫情数据分析,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。最近在这个全民抗疫情的非常时期,每天在家除了远程办公之外,也不由得随时刷新下疫情信息,关心一下有什么...
    99+
    2023-06-16
  • 如何利用spark进行数据分析
    使用Spark进行数据分析可以遵循以下步骤: 准备数据:将数据加载到Spark中,可以使用Spark的DataFrame API...
    99+
    2024-04-02
  • python如何做代码性能分析
    上一篇文章我们介绍了基准测试,通过基准测试可以发现程序变慢了,那么是因为什么原因导致性能变慢的,需要进一步做代码性能分析。python同样提供了性能分析工具。 cProfile cProfile是python默认的...
    99+
    2022-06-02
    python 性能分析 python 代码分析
  • matlab如何做多元回归分析
    在MATLAB中进行多元回归分析可以使用fitlm函数。该函数可以拟合线性模型,并计算模型的系数、残差等信息。以下是一个示例代码: ...
    99+
    2024-04-02
  • JavaScript如何利用performance.timing进行性能分析
    小编给大家分享一下JavaScript如何利用performance.timing进行性能分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!performance.timing:利用performance.timing进行...
    99+
    2023-06-03
  • 如何利用 ASP 函数分析 numy 数据?
    ASP 函数是一种非常有用的工具,可以帮助我们在网页开发过程中快速处理数据和实现各种功能。在数据分析领域,我们经常需要对数据进行计算、筛选、排序等操作,而 numpy 是一个非常强大的 Python 库,可以帮助我们完成这些任务。本文将介绍...
    99+
    2023-07-25
    函数 大数据 numy
  • 如何利用Google Analytics进行数据分析
    利用Google Analytics进行数据分析涉及以下几个关键步骤:1、设置跟踪代码,2、定义目标和转化,3、监测流量来源,4、分析用户行为,5、创建自定义报告,6、设置事件跟踪。在开始使用Google Analytics之前,你需要在网...
    99+
    2023-10-29
    数据 Google Analytics
  • 如何用python做逐步回归
    目录算法介绍数据情况案例数据代码结果算法介绍 逐步回归是一种线性回归模型自变量选择方法; 逐步回归的基本思想是将变量逐个引入模型,每引入一个解释变量后都要进行F检验,并对已经选入的...
    99+
    2024-04-02
  • 如何利用redis做消息队列
    利用redis做消息队列的示例:生产者模拟程序,代码:package scheduleTest; import java.util.Random; import java.util.UUID; import redis.clients.je...
    99+
    2024-04-02
  • 如何利用python做数据拟合
    这篇文章将为大家详细讲解有关如何利用python做数据拟合,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1、例子:拟合一种函数Func,此处为一个指数函数。出处:SciPy v1.1.0 Referenc...
    99+
    2023-06-25
  • word如何做图表数据分析图
    Word是一款文字处理软件,通常用于创建文档、设计报告和编辑文章。虽然Word并不是专门用于数据分析和制作图表的软件,但它仍然提供了...
    99+
    2023-09-09
    word
  • 详解如何利用Python进行客户分群分析
    目录导入数据和python库分离新老客户按客户ID排序,然后是日期定义一些函数创建群组转换为群组百分比可视化每个电子商务数据分析师必须掌握的一项数据聚类技能 如果你是一名在电子商务公...
    99+
    2023-02-24
    Python实现客户分群分析 Python客户分群分析 Python客户分析
  • MySQL如何利用profiling分析SQL查询语句
    查看profiling是否开启: mysql> select @@profiling; +-------------+ | @@profiling | +-------------+ | &...
    99+
    2024-04-02
  • 教你如何利用python进行数值分析
    目录一、准备二、三次样条插值三、最小二乘拟合四、拉格朗日乘子法一、准备 噪声是在拟合过程中常用的干扰手段,常用的噪声: 1.统一分布 U(a,b) f ( x ) = { 1 i f...
    99+
    2024-04-02
  • 如何利用S_MEMORY_INSPECTOR分析内存泄漏问题
    如何利用S_MEMORY_INSPECTOR分析内存泄漏问题,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。我在批量生成service order时,report运行几个小时后,...
    99+
    2023-06-04
  • C++之智能指针初步及弃用auto_ptr的原因分析
    目录RAIIRAII的四个步骤裸指针存在的问题智能指针智能指针的引入四种智能指针总结RAII 使用局部对象来管理资源的技术 RAII的原理 RAII的四个步骤 裸指针存在的问题...
    99+
    2023-03-23
    C++智能指针 C++ auto_ptr 智能指针
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作