日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Plotly中绘制三种经典的股票交易图表(含视频讲解)

發布時間:2023/12/14 编程问答 62 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Plotly中绘制三种经典的股票交易图表(含视频讲解) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

作者:Lemon

來源:Python數據之道


Plotly中繪制三種經典的

股票交易圖表(含視頻講解)

大家好,我是 Lemon 。

背景

前一段時間, Lemon 發了一期視頻,分享了 Plotly 和 Dash 在投資領域的應用案例。

點擊上面圖片查看視頻

看完視頻后,有同學提了一個問題:

股票價格曲線,帶可調節的時間條的圖怎么繪制?

今天 Lemon 來詳細的分享下,這類圖如何繪制,一共會講解 3 類圖形,分別是 面積曲線圖、蠟燭圖、OHLC圖。這三種類型的圖在投資中會經常遇到。

Lemon 錄制了一個視頻,來說明通過本文繪制的圖表效果:

數據來源

本文的數據來自開源項目 tushare, 從 tushare 中獲取數據,首先要進行注冊獲取 token(一串字母和數字組成的文本),然后才可以獲取到數據,大家可以通過以下鏈接來注冊(也可以點擊文末的“閱讀原文”):

https://tushare.pro/register?reg=129033

數據獲取

在 tushare 中注冊后,通過 “個人主頁”——“接口TOKEN” 可以找到自己的 token 值,界面如下:

tushare

復制 token 值,然后在代碼中進行如下設置:

#?設置?token # tushare 注冊地址:https://tushare.pro/register?reg=129033 #?以上方法只需要在第一次或者token失效后調用,完成調取tushare數據憑證的設置,正常情況下不需要重復設置。 ts.set_token('你的token值')pro?=?ts.pro_api()

在設置好 token 值后,我們就可以開始獲取數據,這里以獲取滬深300指數為例,來演示三種類型的圖形繪制。

數據獲取及初步整理如下:

#?plotly-fin-candlestick.ipynb #?獲取滬深300指數行情數據,?asset='I',?I?表示?index,即指數#?d_today?=?dt.date.today().strftime('%Y%m%d')df_300?=?ts.pro_bar(ts_code='000300.SH',?asset='I',?start_date='20180101',? #?????end_date=d_today,end_date='20210119' )#?設置時間格式 df_300['trade_date']?=?pd.to_datetime(df_300['trade_date']) df_300?=?df_300.set_index('trade_date')df_300

面積曲線圖

在常見的股票軟件時,查看分時圖,大部分是使用的面積曲線圖,這類圖形是展示股票數據常用的類型之一。

默認的面積曲線圖

在 Plotly 中,可以使用 plotly express 的 area 圖來繪制面積曲線圖。

代碼如下:

#?面積曲線圖area_chart?=?px.area(df_300['close'],?title?=?'滬深300')area_chart.update_xaxes(title_text?=?'日期') area_chart.update_yaxes(title_text?=?'滬深300收盤價',?#?tickprefix?=?'$') area_chart.update_layout(showlegend?=?False)#?Pycharm,VS?Code,?Spider?等模式下 #?Jupyter?Notebook?下也可以用 #?plot(area_chart,filename='tmp/hushen300-area.html')#?在?Jupyter?Notebook?中,直接使用?show()??來查看結果 area_chart.show()

繪制效果如下:

這里說明下:

  • show() 的作用是使繪制的圖形在 Jupyter notebook 中顯示;

  • 如果想在瀏覽器中使用,可以使用代碼 plot(area_chart,filename='tmp/hushen300-area.html') ,該代碼可以在 Jupyter notebook 、PyCharm、VS Code 等編輯器中使用。

對面積曲線圖進行個性化修改

對于上面的面積曲線圖,我們也可以對其進行一些個性化的修改,比如標題居中、添加可以調節的時間欄、設置y軸數值范圍等。

具體代碼如下:

#?面積曲線圖,個性化修改y_min?=?df_300['close'].min()?? y_max?=?df_300['close'].max()c_area?=?px.area(df_300['close'],?title?=?'滬深300')c_area.update_xaxes(title_text?=?'日期',rangeslider_visible?=?True,rangeselector?=?dict(buttons?=?list([dict(count?=?1,?label?=?'1M',?step?=?'month',?stepmode?=?'backward'),dict(count?=?6,?label?=?'6M',?step?=?'month',?stepmode?=?'backward'),dict(count?=?1,?label?=?'YTD',?step?=?'year',?stepmode?=?'todate'),dict(count?=?1,?label?=?'1Y',?step?=?'year',?stepmode?=?'backward'),dict(step?=?'all')])))c_area.update_yaxes(title_text?=?'滬深300收盤價',?#?tickprefix?=?'¥') c_area.update_layout(showlegend?=?False,title=dict(text='滬深300',font=dict(size=28,),x=0.5),yaxis=dict(range=[y_min*0.9,y_max*1.05]),?#?設置?y?軸的范圍)#?Pycharm,VS?Code,?Spider?等模式下 #?Jupyter?Notebook?下也可以用 #?plot(c_area,filename='tmp/hushen300_area_update.html')c_area.show()

上述代碼的繪制效果如下:

上圖中:

  • 可調節的時間欄是通過在 update_xaxes 中設置參數 rangeslider_visible = True 來實現的;

  • 左上角的時間快速選擇按鈕,是通過在 update_xaxes 中設置參數 rangeselector 來實現的;

  • 標題居中和y軸數值范圍設置,是通過在 update_layout 中分別設置參數 'title' 和 'yaxis' 來實現的。

蠟燭圖

蠟燭圖又名 k線圖、日本線 或者 日本K線圖。

這種圖表通常用作交易工具,用來顯示和分析證券、衍生工具、外匯貨幣、股票、債券等商品隨著時間的價格變動。

蠟燭圖通過使用燭臺式的符號來顯示多種價格信息,例如開盤價、收盤價、最高價和最低價,每個代表單一時間段(每分鐘、每小時、每天或每月)的交易活動。每個燭臺符號沿著 X 軸上的時間刻度繪制,顯示隨著時間推移的交易活動。

蠟燭圖的示意圖如下:

默認的蠟燭圖

在 Plotly 中,可以使用?candlestick 圖來繪制蠟燭圖。

具體代碼如下:

#?蠟燭圖,又稱?K線?或?日本線candlestick?=?go.Figure(data?=?[go.Candlestick(x?=?df_300.index,?open?=?df_300['open'],?high?=?df_300['high'],?low?=?df_300['low'],?close?=?df_300['close'])])candlestick.update_layout(xaxis_rangeslider_visible?=?False,?title?=?'滬深300') candlestick.update_xaxes(title_text?=?'日期') candlestick.update_yaxes(title_text?=?'滬深300價格')#?plot(candlestick,filename='tmp/hushen300_candlestick.html')candlestick.show()

繪制效果如下:

需要說明下,上圖中的顏色,對應的是紅跌綠漲,跟咱們國家通常的紅漲綠跌剛好是相反的。后面將提到的 OHLC 圖,在 Plotly 中也是 紅跌綠漲,這個習慣跟美國、香港等區域是一致的。

對蠟燭圖進行個性化修改

同樣的,我們可以對蠟燭圖進行一些個性化的修改,同樣涉及標題、可調節的時間欄、y軸數值范圍等。

具體代碼如下:

#?蠟燭圖,個性化修改c_candlestick?=?go.Figure(data?=?[go.Candlestick(x?=?df_300.index,?open?=?df_300['open'],?high?=?df_300['high'],?low?=?df_300['low'],?close?=?df_300['close'])])c_candlestick.update_xaxes(title_text?=?'日期',rangeslider_visible?=?True,rangeselector?=?dict(buttons?=?list([dict(count?=?1,?label?=?'1M',?step?=?'month',?stepmode?=?'backward'),dict(count?=?6,?label?=?'6M',?step?=?'month',?stepmode?=?'backward'),dict(count?=?1,?label?=?'YTD',?step?=?'year',?stepmode?=?'todate'),dict(count?=?1,?label?=?'1Y',?step?=?'year',?stepmode?=?'backward'),dict(step?=?'all')])))c_candlestick.update_layout(title?=?{'text':?'滬深300','y':0.9,'x':0.5, #?????????'xanchor':?'center', #?????????'yanchor':?'top'}) c_candlestick.update_yaxes(title_text?=?'滬深300價格')#?plot(c_candlestick,filename='tmp/hushen300_candlestick_update1.html')c_candlestick.show()

繪制效果如下:

各個設置參數的說明,與前面提到的面積曲線圖是類似的,這里不再贅述。

對于上面這個圖,有一個地方需要說明下,當我們把時間范圍縮小,比如最近1個月,會發現蠟燭圖是不連續的,其中有周六日和假期是跳躍的。

在繪制股票曲線時經常會遇到這類問題,我們需要繪制的圖形只包含交易日,這樣的圖表才是符合實際情況的。因此,我們需要在 Plotly 中也實現這個功能。

可以通過在 update_xaxes 設置參數 rangebreaks 來實現,實現的代碼如下:

c_candlestick.update_xaxes(rangebreaks=[dict(bounds=["sat",?"mon"]),?#?隱藏周六、周日dict(values=["2021-01-01",]+holidays)??#?隱藏特定假期] )

這里需要提醒下,

  • 上面的 bounds 和 values 都是list 類型;

  • values 中的元素,字符串格式為 %Y-%m-%d,比如 "2021-01-01" 。

結合標題、時間欄、y軸數值范圍、隱藏節假日一起的完整代碼如下:

#?蠟燭圖,個性化修改,隱藏周六日以及節假日c_candlestick?=?go.Figure(data?=?[go.Candlestick(x?=?df_300.index,?open?=?df_300['open'],?high?=?df_300['high'],?low?=?df_300['low'],?close?=?df_300['close'])])c_candlestick.update_xaxes(title_text?=?'日期',rangeslider_visible?=?True,rangeselector?=?dict(buttons?=?list([dict(count?=?1,?label?=?'1M',?step?=?'month',?stepmode?=?'backward'),dict(count?=?6,?label?=?'6M',?step?=?'month',?stepmode?=?'backward'),dict(count?=?1,?label?=?'YTD',?step?=?'year',?stepmode?=?'todate'),dict(count?=?1,?label?=?'1Y',?step?=?'year',?stepmode?=?'backward'),dict(step?=?'all')])))c_candlestick.update_layout(title?=?{'text':?'滬深300','y':0.9,'x':0.5, #?????????'xanchor':?'center', #?????????'yanchor':?'top'}) c_candlestick.update_yaxes(title_text?=?'滬深300價格')#?2020年國慶假期?2020.10.1-10.8 holidays?=?[?dt.date(2020,10,x).strftime('%Y-%m-%d')?for?x?in?range(1,9)] print(holidays)c_candlestick.update_xaxes(rangebreaks=[dict(bounds=["sat",?"mon"]),?#?隱藏周六、周日dict(values=["2021-01-01",]+holidays)??#?隱藏特定假期] )#?plot(c_candlestick,filename='tmp/hushen300_candlestick_update2.html')c_candlestick.show()

OHLC 圖

OHLC 圖 也稱為「美國線」或「價格圖」。

美國線 (Open-high-low-close Charts) 通常用作交易工具,顯示和分析證券、貨幣、股票、債券等商品隨時間的價格變動。OHLC 圖有助于解釋市場日常走勢,并通過研究所形成的模式預測未來價格變化。

OHLC 圖上的 Y 軸用作價格標尺,X 軸是時間刻度。在每個時段內,OHLC 圖中會出現一個符號,以代表兩個范圍:交易的最高價和最低價,以及該時間段(例如一天)中的開盤價和收盤價。在這個范圍符號上,最高和最低價的范圍由主垂直線的長度所表示;而開盤和收盤價則分別在垂直線左右兩邊以一小段水平線代表。

示意圖如下:

默認的OHLC圖

在 Plotly 中,可以使用?ohlc 圖來繪制蠟燭圖。

具體代碼如下:

#?OHLC圖,又稱?美國線,或?價格圖ohlc?=?go.Figure(data?=?[go.Ohlc(x?=?df_300.index,?open?=?df_300['open'],?high?=?df_300['high'],?low?=?df_300['low'],?close?=?df_300['close'])])ohlc.update_layout(xaxis_rangeslider_visible?=?False,?title?=?'滬深300') ohlc.update_xaxes(title_text?=?'日期') ohlc.update_yaxes(title_text?=?'滬深300價格')#?plot(ohlc,filename='tmp/hushen300_ohlc.html')ohlc.show()

繪制效果如下:

對OHLC圖進行個性化設置

與蠟燭圖類似,我們也可以進行個性化修改,具體代碼如下:

#?#?OHLC圖,個性化修改c_ohlc?=?go.Figure(data?=?[go.Ohlc(x?=?df_300.index,?open?=?df_300['open'],?high?=?df_300['high'],?low?=?df_300['low'],?close?=?df_300['close'])])c_ohlc.update_xaxes(title_text?=?'日期',rangeslider_visible?=?True,rangeselector?=?dict(buttons?=?list([dict(count?=?1,?label?=?'1M',?step?=?'month',?stepmode?=?'backward'),dict(count?=?6,?label?=?'6M',?step?=?'month',?stepmode?=?'backward'),dict(count?=?1,?label?=?'YTD',?step?=?'year',?stepmode?=?'todate'),dict(count?=?1,?label?=?'1Y',?step?=?'year',?stepmode?=?'backward'),dict(step?=?'all')])))c_ohlc.update_layout(title?=?{'text':?'滬深300','y':0.9,'x':0.5, #?????????'xanchor':?'center', #?????????'yanchor':?'top'}) c_ohlc.update_yaxes(title_text?=?'滬深300價格')#?2020年國慶假期?2020.10.1-10.8 holidays?=?[?dt.date(2020,10,x).strftime('%Y-%m-%d')?for?x?in?range(1,9)] print(holidays)c_ohlc.update_xaxes(rangebreaks=[dict(bounds=["sat",?"mon"]),?#?隱藏周六、周日dict(values=["2021-01-01",]+holidays)??#?隱藏特定假期] )#?plot(c_ohlc,filename='tmp/hushen300_ohlc_update.html')c_ohlc.show()

繪制效果如下:

上面這張大圖里看不出美國線的顯示效果,我們可以選擇今年以來的圖來查看下:

本文完整的代碼,請在公眾號 「Python數據之道」 后臺回復 Plotly 獲取。

延伸閱讀

  • 在 Pycharm 等編輯器下使用 Python 可視化神器 Plotly Express

  • 推薦:這才是你尋尋覓覓想要的 Python 可視化神器

  • 用 Plotly 動態散點圖演示全球疫情變化趨勢

  • 用 Python 動態曲線圖來對全球疫情進行演示

  • 升級版,用Python來進行多條曲線動態演示全球疫情變化

  • 付費文章:用 Plotly 動態柱狀圖來演示全球疫情變化趨勢

  • 付費文章:超火動態排序疫情變化圖,這次我們用 Plotly來繪制

  • 推薦一個牛逼的生物信息 Python 庫 - Dash Bio

總結

以上是生活随笔為你收集整理的Plotly中绘制三种经典的股票交易图表(含视频讲解)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。