濮阳杆衣贸易有限公司

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

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

熱門標(biāo)簽:地圖標(biāo)注面積 小蘇云呼電話機(jī)器人 儋州電話機(jī)器人 北京電銷外呼系統(tǒng)加盟 市場上的電銷機(jī)器人 佛山400電話辦理 朝陽手機(jī)外呼系統(tǒng) 所得系統(tǒng)電梯怎樣主板設(shè)置外呼 北瀚ai電銷機(jī)器人官網(wǎng)手機(jī)版

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

這里有它的例子:

>>>index = pd.date_range('1/1/2000', periods=9, freq='T')
>>>series = pd.Series(range(9), index=index)
>>>series
2000-01-01 00:00:00    0
2000-01-01 00:01:00    1
2000-01-01 00:02:00    2
2000-01-01 00:03:00    3
2000-01-01 00:04:00    4
2000-01-01 00:05:00    5
2000-01-01 00:06:00    6
2000-01-01 00:07:00    7
2000-01-01 00:08:00    8
Freq: T, dtype: int64

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

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

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

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

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

1.2實(shí)戰(zhàn)

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

#獲取日k
df = 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)

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

#獲取日k
df = 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.weekday
print(df)

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

#獲取周k
import pandas as pd
df_week = pd.DataFrame()
df_week = df['open'].resample('W').first()
print(df_week)

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

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

最高價(jià)就是每周收盤價(jià)的最大值。

最低價(jià)就是每周收盤價(jià)的最小值。

#獲取周k
import pandas as pd
df_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)

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

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

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

匯總成交量和成交額

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

#獲取周k
import pandas as pd
df_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個(gè)地方:

  • 添加start_date獲取到一整年的數(shù)據(jù)
  • resample的參數(shù)改為M即可,M代表Month
#獲取日k
df = 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.weekday
print(df)

#獲取周k
import pandas as pd
df_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量化交易實(shí)戰(zhàn)之使用Resample函數(shù)轉(zhuǎn)換“日K”數(shù)據(jù)的詳細(xì)內(nèi)容,更多關(guān)于Python Resample函數(shù)轉(zhuǎn)換“日K”數(shù)據(jù)的資料請關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • OpenCV-Python實(shí)現(xiàn)通用形態(tài)學(xué)函數(shù)
  • python通過函數(shù)名調(diào)用函數(shù)的幾種方法總結(jié)
  • Python函數(shù)裝飾器的使用教程
  • 解決Python中的modf()函數(shù)取小數(shù)部分不準(zhǔn)確問題
  • 淺談Python中的函數(shù)(def)及參數(shù)傳遞操作
  • Python基礎(chǔ)之函數(shù)嵌套知識(shí)總結(jié)
  • python 定義函數(shù) 返回值只取其中一個(gè)的實(shí)現(xiàn)
  • 這三個(gè)好用的python函數(shù)你不能不知道!

標(biāo)簽:酒泉 金融催收 龍巖 定西 商丘 云南 寧夏 江蘇

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Python量化交易實(shí)戰(zhàn)之使用Resample函數(shù)轉(zhuǎn)換“日K”數(shù)據(jù)》,本文關(guān)鍵詞  Python,量化,交易,實(shí)戰(zhàn),之,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Python量化交易實(shí)戰(zhàn)之使用Resample函數(shù)轉(zhuǎn)換“日K”數(shù)據(jù)》相關(guān)的同類信息!
  • 本頁收集關(guān)于Python量化交易實(shí)戰(zhàn)之使用Resample函數(shù)轉(zhuǎn)換“日K”數(shù)據(jù)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    武威市| 馆陶县| 油尖旺区| 雷波县| 博湖县| 红河县| 英德市| 磴口县| 华宁县| 平定县| 蕉岭县| 左云县| 利辛县| 陆丰市| 色达县| 天峻县| 浑源县| 广丰县| 鹤山市| 临沧市| 庄浪县| 兰坪| 大埔区| 毕节市| 五指山市| 城口县| 孟州市| 孝义市| 斗六市| 理塘县| 利辛县| 富锦市| 平山县| 瑞丽市| 瑞安市| 宣武区| 丰都县| 区。| 镇江市| 惠安县| 郓城县|