聚寬量化——股票時間序列函數

import matplotlib.pyplot as plt
import pandas as pd
from mpl_finance import candlestick2_ochl
import mplfinance as mpf
from unittest import TestCaseclass TestPandasKline(TestCase):#讀取股票數據,畫出K線圖def testKLineChart(self):file_name = "./demo.csv"df = pd.read_csv(file_name)df.columns = ["stock_id","date","close","open","high","low","volume"]fig = plt.figure()axes = fig.add_subplot(111)candlestick2_ochl(ax=axes,opens=df["open"].values,closes=df["close"].values,highs=df["high"].values,lows=df["low"].values,width=0.75,colorup='red',colordown='green')plt.xticks(range(len(df.index.values)),df.index.values,rotation=30)axes.grid(True)plt.title("K-Line")plt.show()#K線圖帶交易量def testKLineByVolume(self):file_name = "./demo.csv"df = pd.read_csv(file_name)df.columns = ["stock_id","date","close","open","high","low","volume"]df = df[["date","close","open","high","low","volume"]]df["date"] = pd.to_datetime(df["date"])df = df.set_index('date')my_color = mpf.make_marketcolors(up = 'red',down = 'green',wick = 'i',volume = {'up':'red','down':'green'},ohlc = 'i')my_style  = mpf.make_mpf_style(marketcolors = my_color,gridaxis = 'both',gridstyle = '-.',rc = {'font.family':'STSong'})mpf.plot(df,type = 'candle',title = 'K-LineByVolume',ylabel = 'price',style = my_style,show_nontrading = False,volume = True,ylabel_lower = 'volume',datetime_format = '%Y-%m-%d',xrotation = 45,linecolor = '#00ff00',tight_layout = False)# K線圖帶交易量及均線def testKLineByMA(self):file_name = "./demo.csv"df = pd.read_csv(file_name)df.columns = ["stock_id","date","close","open","high","low","volume"]df = df[["date","close","open","high","low","volume"]]df["date"] = pd.to_datetime(df["date"])df = df.set_index('date')my_color = mpf.make_marketcolors(up = 'red',down = 'green',wick = 'i',volume = {'up':'red','down':'green'},ohlc = 'i')my_style  = mpf.make_mpf_style(marketcolors = my_color,gridaxis = 'both',gridstyle = '-.',rc = {'font.family':'STSong'})mpf.plot(df,type = 'candle',mav = [5,10],title='K-LineByVolume',ylabel='price',style=my_style,show_nontrading=False,volume=True,ylabel_lower='volume',datetime_format='%Y-%m-%d',xrotation=45,linecolor='#00ff00',tight_layout=False)

  • 該視頻主要講述了股票時間序列的實戰應用及pandas庫中相關函數的使用。首先介紹了時間序列在金融領域的重要性,包括趨勢分析和相關性分析。接著,詳細闡述了pandas中處理時間序列的常用函數,如datetime、loc等,以及如何使用它們進行數據篩選和分組。最后,通過實戰案例,展示了如何使用pandas讀取股票數據,并對數據進行基本的描述性統計分析,包括非空值、數據類型以及每列的基本統計量等。

  • 分段總結

    折疊

    00:01股票時間序列分析介紹

    1.股票時間序列是金融領域最重要的數據類型,包括股價、匯率等。 2.時間序列數據按年月季度周日甚至小時分鐘tick(毫秒級)進行記錄。 3.時間序列分析主要包括趨勢分析和相關性分析。

    02:19pandas在時間序列分析中的常見函數

    1.datetime是pandas中表示時間的數據結構,方便進行各種時間運算。 2.loc函數用于篩選時間或列數據。 3.groupby函數用于按時間或股票ID對數據進行分組。

    03:48股票時間序列實戰環節

    1.讀取數據函數df.read_csv()等,與單派使用方式相似。 2.describe函數用于描述dataframe的基本信息,如count、mean、std、min、max等。 3.處理時間列,將其轉換為datetime類型,并進行年、月、日的提取。 4.計算最低收盤價、最小值索引等。

    11:27每月平均收盤價與開盤價計算

    1.先計算月份,然后按月分組計算平均開盤價和收盤價。 2.使用groupby和mean函數進行計算。

    14:34漲跌幅計算

    1.漲跌幅為今日收盤價減去昨日收盤價。 2.使用diff函數計算漲跌幅。

    17:46本章小結

    1.股票時間序列是金融數據最重要的數據結構。 2.時間序列分析包括趨勢分析和相關性分析。 3.pandas在時間序列分析中的常見函數包括datetime、loc和groupby。

  • k線圖的正常實現

  • 代碼

  • import matplotlib.pyplot as plt
    import pandas as pd
    from mpl_finance import candlestick2_ochl
    import mplfinance as mpf
    from unittest import TestCase
    #pip install mplfinance -i https://pypi.tuna.tsinghua.edu.cn/simpleclass TestPandasKline(TestCase):#讀取股票數據,畫出K線圖def testKLineChart(self):file_name = "./demo.csv"df = pd.read_csv(file_name)df.columns = ["stock_id","date","close","open","high","low","volume"]fig = plt.figure()axes = fig.add_subplot(111)candlestick2_ochl(ax=axes,opens=df["open"].values,closes=df["close"].values,highs=df["high"].values,lows=df["low"].values,width=0.75,colorup='red',colordown='green')plt.xticks(range(len(df.index.values)),df.index.values,rotation=30)axes.grid(True)plt.title("K-Line")plt.show()#K線圖帶交易量def testKLineByVolume(self):file_name = "./demo.csv"df = pd.read_csv(file_name)df.columns = ["stock_id","date","close","open","high","low","volume"]df = df[["date","close","open","high","low","volume"]]df["date"] = pd.to_datetime(df["date"])df = df.set_index('date')my_color = mpf.make_marketcolors(up = 'red',down = 'green',wick = 'i',volume = {'up':'red','down':'green'},ohlc = 'i')my_style  = mpf.make_mpf_style(marketcolors = my_color,gridaxis = 'both',gridstyle = '-.',rc = {'font.family':'STSong'})mpf.plot(df,type = 'candle',title = 'K-LineByVolume',ylabel = 'price',style = my_style,show_nontrading = False,volume = True,ylabel_lower = 'volume',datetime_format = '%Y-%m-%d',xrotation = 45,linecolor = '#00ff00',tight_layout = False)# K線圖帶交易量及均線def testKLineByMA(self):file_name = "./demo.csv"df = pd.read_csv(file_name)df.columns = ["stock_id","date","close","open","high","low","volume"]df = df[["date","close","open","high","low","volume"]]df["date"] = pd.to_datetime(df["date"])df = df.set_index('date')my_color = mpf.make_marketcolors(up = 'red',down = 'green',wick = 'i',volume = {'up':'red','down':'green'},ohlc = 'i')my_style  = mpf.make_mpf_style(marketcolors = my_color,gridaxis = 'both',gridstyle = '-.',rc = {'font.family':'STSong'})mpf.plot(df,type = 'candle',mav = [5,10],title='K-LineByVolume',ylabel='price',style=my_style,show_nontrading=False,volume=True,ylabel_lower='volume',datetime_format='%Y-%m-%d',xrotation=45,linecolor='#00ff00',tight_layout=False)
    

    這段代碼是一個用于?繪制股票K線圖(蠟燭圖)?的Python單元測試類,使用了?matplotlibpandas?和?mplfinance?庫。它包含三個測試方法,分別演示了不同的K線圖繪制方式:

  • import matplotlib.pyplot as plt  # 基礎繪圖庫
    import pandas as pd  # 數據處理
    from mpl_finance import candlestick2_ochl  # 舊版K線圖繪制(已棄用,推薦用mplfinance)
    import mplfinance as mpf  # 新版專業金融圖表庫
    from unittest import TestCase  # 單元測試
  • mplfinance?是專門用于金融數據可視化的庫,比?mpl_finance?更強大且維護更好。

  • pandas?用于讀取和處理股票數據(CSV格式)。

  • unittest?用于組織測試用例。

2. 三個測試方法

(1)?testKLineChart:基礎K線圖

python

復制

下載

def testKLineChart(self):df = pd.read_csv("./demo.csv")  # 讀取數據df.columns = ["stock_id", "date", "close", "open", "high", "low", "volume"]  # 設置列名# 使用 matplotlib + mpl_finance 繪制K線fig = plt.figure()axes = fig.add_subplot(111)candlestick2_ochl(ax=axes,opens=df["open"].values,  # 開盤價closes=df["close"].values,  # 收盤價highs=df["high"].values,  # 最高價lows=df["low"].values,  # 最低價width=0.75,  # 蠟燭寬度colorup='red',  # 上漲顏色(紅)colordown='green'  # 下跌顏色(綠))plt.xticks(range(len(df.index.values)), df.index.values, rotation=30)  # X軸標簽旋轉30度axes.grid(True)  # 顯示網格plt.title("K-Line")  # 標題plt.show()  # 顯示圖表

功能

  • 使用?matplotlib?+?mpl_finance(舊版)繪制?基本K線圖

  • 紅色表示上漲(收盤價 > 開盤價),綠色表示下跌(收盤價 < 開盤價)。

  • 顯示網格、調整X軸標簽角度。

(2)?testKLineByVolume:K線圖 + 成交量

python

復制

下載

def testKLineByVolume(self):df = pd.read_csv("./demo.csv")df.columns = ["stock_id", "date", "close", "open", "high", "low", "volume"]df = df[["date", "close", "open", "high", "low", "volume"]]  # 選擇需要的列df["date"] = pd.to_datetime(df["date"])  # 轉為日期格式df = df.set_index('date')  # 設置日期為索引(mplfinance要求)# 自定義顏色風格my_color = mpf.make_marketcolors(up='red',  # 上漲顏色down='green',  # 下跌顏色wick='i',  # 影線顏色(i表示繼承up/down顏色)volume={'up': 'red', 'down': 'green'},  # 成交量顏色ohlc='i'  # K線主體顏色繼承)my_style = mpf.make_mpf_style(marketcolors=my_color,  # 應用顏色gridaxis='both',  # 顯示網格gridstyle='-.',  # 網格線樣式(虛線)rc={'font.family': 'STSong'}  # 字體(宋體))# 使用 mplfinance 繪制K線 + 成交量mpf.plot(df,type='candle',  # 蠟燭圖類型title='K-LineByVolume',  # 標題ylabel='price',  # Y軸標簽style=my_style,  # 應用自定義樣式show_nontrading=False,  # 不顯示非交易日volume=True,  # 顯示成交量ylabel_lower='volume',  # 成交量Y軸標簽datetime_format='%Y-%m-%d',  # 日期格式xrotation=45,  # X軸標簽旋轉45度linecolor='#00ff00',  # 輔助線顏色tight_layout=False  # 不自動調整布局)

功能

  • 使用?mplfinance?繪制?K線圖 + 成交量

  • 自定義顏色(紅漲綠跌)。

  • 成交量柱狀圖也用紅/綠區分漲跌。

  • 支持中文顯示(STSong?宋體)。

(3)?testKLineByMA:K線圖 + 成交量 + 均線

python

復制

下載

def testKLineByMA(self):# 數據預處理(同上)df = pd.read_csv("./demo.csv")df.columns = ["stock_id", "date", "close", "open", "high", "low", "volume"]df = df[["date", "close", "open", "high", "low", "volume"]]df["date"] = pd.to_datetime(df["date"])df = df.set_index('date')# 顏色和樣式設置(同上)my_color = mpf.make_marketcolors(up='red', down='green', wick='i', volume={'up':'red','down':'green'}, ohlc='i')my_style = mpf.make_mpf_style(marketcolors=my_color, gridaxis='both', gridstyle='-.', rc={'font.family':'STSong'})# 使用 mplfinance 繪制K線 + 成交量 + 均線mpf.plot(df,type='candle',mav=[5, 10],  # 5日均線和10日均線title='K-LineByVolume',ylabel='price',style=my_style,show_nontrading=False,volume=True,ylabel_lower='volume',datetime_format='%Y-%m-%d',xrotation=45,linecolor='#00ff00',tight_layout=False)

功能

  • 在?testKLineByVolume?基礎上,增加?移動平均線(MA)

  • mav=[5, 10]?表示計算?5日均線?和?10日均線,并疊加在K線圖上

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/88271.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/88271.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/88271.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

(一)代碼隨想錄 - 數組

代碼隨想錄 一. 數組的理論基礎 概念&#xff1a;數組是存放在連續內存空間上的相同類型數據的集合 特點&#xff1a;&#xff08;1&#xff09;數組可以通過下標進行訪問對應的數據并且下標是從0開始的 -> 隨機訪問&#xff1b;&#xff08;2&#xff09;數組內存空間的地…

Netty內存池核心PoolArena源碼解析

PoolArena 是 Netty 內存池化機制的核心組件之一&#xff0c;它負責管理一整塊或多塊內存&#xff08;PoolChunk&#xff09;&#xff0c;并將這些內存分配給應用程序。每個 PoolArena 實例都與一個特定的線程相關聯&#xff08;通過 PoolThreadCache&#xff09;&#xff0c;或…

echarts-for-react 日歷熱力圖渲染導致白屏 踩坑記錄

先說結果&#xff0c;補上了一行tooltip.trigger后能正常渲染了。 報錯情況&#xff1a; 在頁面中添加了一個日歷熱力圖后&#xff0c;一渲染它就白屏&#xff0c;控制臺報錯如下&#xff1a; echarts-for-react版本是當前最新的3.0.2&#xff0c;嘗試debug但沒看懂源碼這里是…

SpringBoot項目啟動時自動加載數據到Redis的完整實現方案,用于存儲字典,定時任務,登錄用戶等

一、基礎配置 ?在pom.xml中添加必要依賴&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency><groupId>com.baomi…

python:使用 OpenAI CLIP 模型進行圖像與文本的語義匹配,并用彩虹色帶可視化 CLIP 模型的相似度矩陣

作者&#xff1a;CSDN _養樂多_ 本文將介紹如何使用 OpenAI 的 CLIP 模型來實現圖像與文本之間的語義匹配。代碼使用 Python 語言&#xff0c;加載多個圖像與類別文本&#xff0c;并通過計算余弦相似度判斷每張圖片最匹配的文本標簽。 結果如下圖所示&#xff0c; 文章目錄 …

微服務鏈路追蹤在生產環境問題定位中的實戰經驗

微服務鏈路追蹤在生產環境問題定位中的實戰經驗 在當今復雜的系統架構中&#xff0c;微服務之間相互調用形成的鏈路往往變得極其復雜。一旦出現問題&#xff0c;僅憑日志和監控信息常常難以迅速定位根因。鏈路追蹤技術因此成為生產環境中不可或缺的工具&#xff0c;能夠幫助我…

正點原子——直流無刷電機-霍爾傳感基本實現流程

直流無刷電機-霍爾傳感實現流程 初始化TIM以及IO 霍爾狀態讀取函數 uint32_t hallsersor(void) {uint32_t state 0;if(HAL_GPIO_ReadPin(HALL1_TIM_CH1_GPIO,HALL_TIM_CH1_PIN)!RESET){state |0x01;}if(HAL_GPIO_ReadPin(HALL1_TIM_CH2_GPIO,HALL_TIM_CH2_PIN)!RESET){stat…

小白的進階之路系列之十七----人工智能從初步到精通pytorch綜合運用的講解第十部分

NLP 從零開始:使用字符級 RNN 生成姓名 這是我們“NLP 從零開始”系列三部分教程中的第二部分。在第一個教程中,我們使用了 RNN 將姓名分類到其語言來源。這次我們將反過來,從語言生成姓名。 > python sample.py Russian RUS Rovakov Uantov Shavakov> python sampl…

思辨場域丨AR技術如何重塑未來學術會議體驗?

毫無疑問&#xff0c;增強現實&#xff08;AR&#xff09;已成為科技浪潮中最澎湃的浪花之一。當Pokemon Go點燃全球熱情&#xff0c;我們首次大規模體驗到數字精靈與現實街景的奇妙交融。這不僅是游戲革命&#xff0c;更是一個強烈的信號&#xff1a;虛實共生的交互時代已轟然…

醫學數據分析實戰:冠心病發病因素可視化

一、數據加載與基本信息檢查 #例9.5 import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns import warnings#引入第三方庫plt.rcParams[font.sans-serif]=[SimHei] #用來正常顯示中文標簽 warnings.filterwarnings(ignore) #防止…

Proteus8.0 打開前期版本的操作方法

1.打開Proteus8.0 2. 打開菜單File->Import legacy Project 3.在Import Legacy Project 點擊Browse按鈕 4.選擇要打開的例子目錄 5.打開*.dsn文件 6.點擊Import 7.導入成功 點擊運行即可

【innovus基礎】- 對某根線單獨route

在某些特殊需求場景&#xff0c;我們可能需要對某些net進行單獨的route&#xff0c;方法如下&#xff1a; 1、打開design browser&#xff0c;選擇對應net&#xff1a;&#xff08;或者使用selectNet命令&#xff09; 2、Route → nano Route → 勾選selectNet only 可以看到…

【Linux】network網絡配置

目錄 1、介紹2、網絡配置【1】查看【2】說明 3、工作流程【1】啟動以太網接口【2】關閉接口時反向執行 4、現代替換方案 1、介紹 linux中network網絡服務的核心配置位于/etc/sysconfig/network-scripts/目錄下。它們共同構成了網絡接口的管理框架&#xff0c;負責處理網絡接口…

深入解析 Taro 項目結構:從入門到精通

在現代前端開發中&#xff0c;跨平臺開發框架變得越來越重要。Taro 作為一款由京東凹凸實驗室推出的多端統一開發框架&#xff0c;支持編譯到微信小程序、支付寶小程序、百度小程序、H5、React Native 等多個平臺&#xff0c;極大地提高了開發效率。然而&#xff0c;要充分發揮…

零基礎開始的網工之路第二十一天------系統安全基線和系統加固

目錄 一、系統安全基線 1、賬戶與認證安全 2、文件與目錄權限 3、SSH服務安全 4、網絡與服務配置 5、日志與審計 6、內核參數加固 7、更新與補丁 8、安全模塊配置 9、SUID/SGID文件檢查 10、默認權限控制&#xff08;umask&#xff09; 二、系統安全加固 1、賬戶與…

Log4j 和 Log4j2的比較

以下是 Log4j&#xff08;通常指 Log4j 1.x&#xff09;與 Log4j2 的核心對比分析&#xff0c;結合架構、性能、功能及適用場景&#xff0c;幫助開發者做出合理選擇&#xff1a; &#x1f4ca; 一、架構與設計 特性Log4j 1.xLog4j2分析架構模型單模塊設計&#xff0c;耦合度高…

說說 Springboot 的啟動流程?

Spring Boot 的啟動流程是一個相對復雜但有序的過程&#xff0c;它涉及多個組件和步驟的協同工作。以下是 Spring Boot 啟動流程的詳細解析&#xff1a; 一、初始化階段 啟動入口 Spring Boot 應用的啟動入口通常是一個包含 main 方法的類&#xff0c;該類上標注了 SpringBoot…

從服務器收到預料之外的響應。此文件可能已被成功上傳。請檢查媒體庫或刷新本頁

如果php.ini已經加入了如下的內容還是報錯 &#xff1a; upload_max_filesize 1024M post_max_size 1024M 那就是因為阿帕奇導致&#xff1a;

10、java語法糖

編譯期處理&#xff1a;語法糖&#xff08;即java編譯器把。java的源碼編譯成。class字節碼的過程中&#xff0c;自動生成和轉換的一些代碼&#xff0c;主要是為了減輕程序員的負擔&#xff0c;算是java編譯器給我們的一個額外福利-給糖吃&#xff09; 默認構造器&#xff1a;…

在Vscode中安裝Sass并配置

在Vscode中安裝Sass并配置 sass簡介安裝Sass插件配置sass插件編寫sass使用Sass sass簡介 Sass&#xff08;Syntactically Awesome Style Sheets,英文官方文檔 &#xff09;是一種CSS預處理器&#xff0c;擴展了CSS的功能并提供了更高效的樣式表編寫方式。它兼容所有CSS版本&am…