色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術(shù)文章
文章詳情頁

Python量化交易實戰(zhàn)之使用Resample函數(shù)轉(zhuǎn)換“日K”數(shù)據(jù)

瀏覽:2日期:2022-06-17 16:29:12
目錄 一、什么是resample函數(shù)?二、實戰(zhàn)Resample函數(shù)1.日K 轉(zhuǎn)換為 周K2.匯總統(tǒng)計功能(統(tǒng)計月成交量、成交額)3.日K 轉(zhuǎn)換為 月K

使用Resample函數(shù)轉(zhuǎn)換時間序列

一、什么是resample函數(shù)?

它是Python數(shù)據(jù)分析庫Pandas的方法函數(shù)。

它主要用于轉(zhuǎn)換時間序列的頻次??梢宰鲆恍┙y(tǒng)計匯總的工作。

什么叫轉(zhuǎn)換時間序列的頻次呢?

比如說股票的日k和周k,

假設(shè)我只能獲取到股票日K的數(shù)據(jù),比如說11月1號到11月5號,那怎么樣將它轉(zhuǎn)換為以周為單位的K線呢?

日期 周期 開盤價 收盤價 最高價 最低價 11月1號 周一 1.11 1.11 1.11 1.12 11月2號 周二 1.12 1.12 1.11 1.12 11月3號 周三 1.13 1.13 1.11 1.12 11月4號 周四 1.15 1.14 1.11 1.12 11月5號 周五 1.14 1.15 1.11 1.12

首先我們要明確,周K的開盤、收盤、最高、最低是什么。每周的開盤價是當(dāng)周第一天的開盤價,收盤價是當(dāng)周最后一天的收盤價,它的最高價是這周最高的價格,最低價是本周所有最低價中最低的價格。所以你去看炒股平臺,它的周k都是以周五的交易日為記錄的時間點位置。開盤、收盤、最高、最低是按照我剛剛講解的這個規(guī)則來計算的。至于月K、年K的選取規(guī)則也是一樣的。月K的周期是一個月,年K的周期是一年。

這個計算準(zhǔn)確性你也可以通過網(wǎng)上的數(shù)據(jù)進(jìn)行驗證。這個計算規(guī)則,包括開盤、收盤、最高、最低的計算,收拾resample函數(shù)可以做到的事情。此外Resample還有個功能,就是做統(tǒng)計匯總,比如說我想計算一支股票總的周成交量,就可以使用Resample.sum函數(shù)去把周一到周五的成交量加起來。

為了方便大家記憶 ,你也可以把resample理解為Excel表格中的透視表功能。你可以按照日期做各種篩選和匯總統(tǒng)計的。最重要的是他可以按照日期。

二、實戰(zhàn)Resample函數(shù)

因為這2節(jié)課還是一些比較基礎(chǔ)的部分,所以還沒有做模塊化的內(nèi)容。

我們會在創(chuàng)建股票數(shù)據(jù)庫的時候 來做真正的模塊化的工作。到這里都是初級的腳本的形式。先提前說下。

1.日K 轉(zhuǎn)換為 周K

1.1函數(shù)文檔學(xué)習(xí)

谷歌搜索Pandas Resample:第一個鏈接就是這個函數(shù)的官方文檔

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.resample.html

Python量化交易實戰(zhàn)之使用Resample函數(shù)轉(zhuǎn)換“日K”數(shù)據(jù)

這里有介紹:Resample是屬于Pandas DataFrame下面的方法。這里有關(guān)于參數(shù)的解釋。

這里我們只對2個常用參數(shù)講解,一個是rule,另一個是closed。

rule表示的是你放一個什么樣的周期性指標(biāo)在里面,用m代表Month,Y代表Year,w代表Week, closed代表你取哪一個分界線,舉例來說,比如說我把日k轉(zhuǎn)換為周k,到底我是取周一為分界線還是周五為分界線呢?這就是通過closed來確定的。

這里有它的例子:

>>>index = pd.date_range(’1/1/2000’, periods=9, freq=’T’)>>>series = pd.Series(range(9), index=index)>>>series2000-01-01 00:00:00 02000-01-01 00:01:00 12000-01-01 00:02:00 22000-01-01 00:03:00 32000-01-01 00:04:00 42000-01-01 00:05:00 52000-01-01 00:06:00 62000-01-01 00:07:00 72000-01-01 00:08:00 8Freq: T, dtype: int64

這里首先創(chuàng)建了一個時間序列的DataFrame,就是這個series變量。你可以理解為它是一個只有一個字段的表格樣式。接著往下看:

>>>series.resample(’3T’).sum()2000-01-01 00:00:00 32000-01-01 00:03:00 122000-01-01 00:06:00 21Freq: 3T, dtype: int64

這里使用了Resample方法,3T就是3分鐘,T表示分鐘。sum()就是匯總,也就是針對這一列數(shù)據(jù)進(jìn)行匯總。

也就是說,每3分鐘統(tǒng)計依次。注意到,這個時間序列匯總的時間取的值是3分鐘的第一分鐘。如果我想取時間周期的最后一分鐘,可以將label的值改為“right':

>>>series.resample(’3T’, label=’right’).sum()2000-01-01 00:03:00 32000-01-01 00:06:00 122000-01-01 00:09:00 21Freq: 3T, dtype: int64

1.2實戰(zhàn)

獲取日K真實的數(shù)據(jù):

#獲取日kdf = get_price('000001.XSHG', end_date=’2021-05-30 14:00:00’,count=20, frequency=’1d’, fields=[’open’,’close’,’high’,’low’,’volume’,’money’]) print(df)

Python量化交易實戰(zhàn)之使用Resample函數(shù)轉(zhuǎn)換“日K”數(shù)據(jù)

可以看到獲取到了4月28號到5月28號的所有數(shù)據(jù)。為了更方便理解 我們再添加一列數(shù)據(jù),就是當(dāng)前日期是星期幾的列。

#獲取日kdf = get_price('000001.XSHG', end_date=’2021-05-30 14:00:00’,count=20, frequency=’1d’, fields=[’open’,’close’,’high’,’low’,’volume’,’money’]) df[’weekday’]=df.index.weekdayprint(df)

Python量化交易實戰(zhàn)之使用Resample函數(shù)轉(zhuǎn)換“日K”數(shù)據(jù)

這里0代表周一,這里如何轉(zhuǎn)換為按“”統(tǒng)計呢

#獲取周kimport pandas as pddf_week = pd.DataFrame()df_week = df[’open’].resample(’W’).first()print(df_week)

Python量化交易實戰(zhàn)之使用Resample函數(shù)轉(zhuǎn)換“日K”數(shù)據(jù)

可以看到這里的2021-05-30是一個禮拜的最后一天。它對應(yīng)的開盤價確實是這個數(shù)字。說明我們計算的周K數(shù)據(jù)是正確的。

收盤價就是每周收盤價最后一天的數(shù)據(jù)。

最高價就是每周收盤價的最大值。

最低價就是每周收盤價的最小值。

#獲取周kimport pandas as pddf_week = pd.DataFrame()df_week[’open’] = df[’open’].resample(’W’).first()df_week[’close’] = df[’close’].resample(’W’).last()df_week[’high’] = df[’high’].resample(’W’).max()df_week[’low’] = df[’low’].resample(’W’).min()print(df_week)

Python量化交易實戰(zhàn)之使用Resample函數(shù)轉(zhuǎn)換“日K”數(shù)據(jù)

對比數(shù)據(jù),close是最后一天的收盤價的數(shù)據(jù)。high是當(dāng)前周的每天的最高價的最高價。low是當(dāng)前周的每天的最低價的最低價。

我們通過不到10行代碼就能將日K的數(shù)據(jù)轉(zhuǎn)換為周K的數(shù)據(jù)。

2.匯總統(tǒng)計功能(統(tǒng)計月成交量、成交額)

匯總成交量和成交額

我想要把volume(成交量)和money(成交額)轉(zhuǎn)換為總成交量總成交額

#獲取周kimport pandas as pddf_week = pd.DataFrame()df_week[’open’] = df[’open’].resample(’W’).first()df_week[’close’] = df[’close’].resample(’W’).last()df_week[’high’] = df[’high’].resample(’W’).max()df_week[’low’] = df[’low’].resample(’W’).min()df_week[’volume(sum)’] = df[’volume’].resample(’W’).sum()df_week[’money(sum)’] = df[’money’].resample(’W’).sum()print(df_week)3.日K 轉(zhuǎn)換為 月K

假設(shè)我有一年的數(shù)據(jù),如果想轉(zhuǎn)換為月K應(yīng)該怎么轉(zhuǎn)?

只需要改2個地方:

添加start_date獲取到一整年的數(shù)據(jù) 將resample的參數(shù)改為M即可,M代表Month

#獲取日kdf = get_price('000001.XSHG', end_date=’2021-05-30 14:00:00’, start_date=’2020-05-30’, frequency=’1d’, fields=[’open’,’close’,’high’,’low’,’volume’,’money’]) df[’weekday’]=df.index.weekdayprint(df)#獲取周kimport pandas as pddf_week = pd.DataFrame()df_week[’open’] = df[’open’].resample(’M’).first()df_week[’close’] = df[’close’].resample(’M’).last()df_week[’high’] = df[’high’].resample(’M’).max()df_week[’low’] = df[’low’].resample(’M’).min()print(df_week)

以上就是Python量化交易實戰(zhàn)之使用Resample函數(shù)轉(zhuǎn)換“日K”數(shù)據(jù)的詳細(xì)內(nèi)容,更多關(guān)于Python Resample函數(shù)轉(zhuǎn)換“日K”數(shù)據(jù)的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: www.日本高清视频.com | 国产精品一区二区免费 | 欧美一级久久久久久久久大 | 亚洲成人国产 | 日本韩国欧美一区 | 一区二三国产 | 国产老头与老太hd | 国产伦精品一区二区三区免费 | 女人扒开双腿让男人捅 | 手机看片日韩国产一区二区 | 玖玖在线免费视频 | 亚洲综合天堂 | 精品视频在线视频 | 欧美视频一级 | 一级片免| 奇米影视7777久久精品 | 亚洲一级毛片在线观播放 | 一区二区三区四区视频 | 99国产福利视频在线观看 | 国产成人亚洲精品77 | 在线亚州 | 欧美日韩一区二区三区免费 | 黄大片日本一级在线a | 中文字幕亚洲精品 | 日本三级香港三级三级人!妇久 | 欧美成人毛片免费网站 | 欧美一级毛片免费高清的 | 国产欧美日韩一区 | 一级毛片在线观看视频 | 俄罗斯一级毛片免费播放 | 免费一区二区三区四区 | 亚洲综合一区二区三区 | 久久精品道一区二区三区 | 亚洲精品h| 国产一区二区久久精品 | 一二三区视频 | 精品亚洲视频在线观看 | 91撸视频| 久久久这里只有精品加勒比 | www.日本在线观看 | 亚洲精品第一第二区 |