使用mplfinance 打造一個互動的顯示股票線圖工具(2)[QuantTradingwithPython_2]

更新於 發佈於 閱讀時間約 15 分鐘
投資理財內容聲明

raw-image


嗨又見面了!接下來就繼續下去我們的程式互動之旅之旅.相信應該沒有人會以為我們用一個簡單的input,就交代了想要的互動功能.在這一篇當中將帶領大家,真正的體會,炫酷又好玩的Jupyter notebook互動功能.將程式介面提升到一個讓自己愛不釋手的檔次.習慣性的不賣關子,先把我們的成果與程式碼呈現給大家;然後再繼續談如何一步一步去完成它…


raw-image




import yfinance as yfimport mplfinance as mpfimport ipywidgets as widgetsfrom IPython.display import display



code_input = widgets.Text(value='',placeholder='Enter stock code',description='Stock Code:',disabled=False)



submit_button = widgets.Button(description='Plot Chart',disabled=False,button_style='', # 'success', 'info', 'warning', 'danger' or ''tooltip='Click to plot chart',icon='check'



def on_submit_button_clicked(b):code = code_input.value



# Set the start and end datesstart_date = "2023-01-01"end_date = "2023-06-11"




data = yf.download(code, start=start_date, end=end_date)



my_color = mpf.make_marketcolors(up='r', down='g', edge='inherit', wick='inherit', volume='inherit')my_style = mpf.make_mpf_style(marketcolors=my_color, figcolor='(0.82, 0.83, 0.85)', gridcolor='(0.82, 0.83, 0.85)')



mpf.plot(data, type='candle', volume=True, style=my_style, title=str(code), figsize=(8, 5))



submit_button.on_click(on_submit_button_clicked)



display(code_input, submit_button)



 雖然程式看起來有些長,但實際上;在我們的每篇文章當中,都是在上一篇文章的程式碼為基礎,然後堆砌上所要想了解的新功能.所以當拆解了之前文章當中提及的程式片段後,這一段新加入的程式碼,看起來就不會那麼嚇人了.但在要解說今天這段程式碼之前;必須先來談一談Jupyter notebook,所獨有的互動小部件Widgets程式功能.這是在Python開發環境當中屬於Jupyter notebook所獨有的功能.它的這幾個小部件,。讓我們的程式呈現了以往所無法想像的可能性與精彩互動.這一篇就來介紹如何使用它.然後不要貪多的,在這篇當中,僅就其中使用的兩個小部件做詳細的運用介紹.那就廢話不多說,走起.如果要使用Jupyter notebook的互動功能Interactive,以及這些小部件,我們必須先去安裝它.pip install ipywidgets 或是在Jupyter notebook的敘述行中輸入。!pip install ipywidgets 有所不同的便是,在開頭加入一個!這個同樣適用於如果你使用colab的環境.



raw-image

What can they be used for?You can use widgets to build interactive GUIs for your notebooks.You can also use widgets to synchronize stateful and stateless information between Python and JavaScript.



它們可以用來做什麼?您可以使用小部件為筆記本構建交互式GUI.您還可以使用小部件在Python和JavaScript之間,同步有狀態和無狀態的信息.



這是官方針對小部件的功能所做的定義與解說.一般我們所常會使用到的小部件,應該都會在這一篇跟下一篇當中介紹.但如果您對所有的小部件的每一個成員有興趣;可以到這個頁面裡,好好看一下它們的家族列表介紹.


Widget List — Jupyter Widgets 8.0.5 documentation (ipywidgets.readthedocs.io)




首先習慣在引入並使用它之前,一般會做這樣的兩行宣告.import ipywidgets as widgetsfrom IPython.display import display現在我們開始來學習如何使用它;首先介紹的是,用來取代之前input的文字輸入Text小部件。以下這個範例。讓我們了解如何出初步設定它。以及呼叫使用。



import ipywidgets as widgetsfrom IPython.display import display



Mess = widgets.Text(value='Hello World',placeholder='Type something',description='String:',disabled=False)display(Mess)print(Mess.value)



這是大家第一個接觸的小物件,容我再一次引述並對它做註解.別擔心;這些特性都是常用的.並且幾乎都適用在其他的小物件上.看著看著,自然就心領神會了.import ipywidgets as widgetsfrom IPython.display import display這兩行之前剛剛提起過,我們最主要使用的模組便是這個ipywidgets.第二行要引入這個模組,最主要的功能依照字義上就是為了顯示它;類似繪圖的show().Mess = widgets.Text(在這裡,對這個小物件命名為Mess;它實際上就是這個模組當中的文字欄位設定,在之後的括弧裡面被填入.value='Hello World',在文字欄位中顯示的文字。將會存放在value這個關鍵變數(keys)當中。placeholder='Type something',這個預設的字串內容,將顯示在欄位為空白的時候.description='String:',設定描述欄位的樣式,是一種字串的形式.disabled=False預設是否關閉?)display(Mess)print(Mess.value)類似畫圖的show().我裡使用display.呼叫小物件顯示並開始工作.在最後一行當中,用print做輸出.如果一切正常,螢幕上應該會顯示出我們輸入在文字欄位當中的內容.然後可以輸入以下的程式碼來查看,我們現在這個Text文字欄位的物件當中有多少個可以設定的關鍵變數keys?結果將以數列List的方式呈現.Mess.keys



['_dom_classes','_model_module','_model_module_version','_model_name','_view_count','_view_module','_view_module_version','_view_name','continuous_update','description','description_tooltip','disabled','layout','placeholder','style','value']



所以現在了解到了,當使用這個文字欄位小部件的時候,在上頭輸入了股票代碼;最終可以在value上面獲得到輸入的結果.那麼現在輸入的方式解決了,我們還需要一個按鈕,來使用輸入的股票代碼,以及啟動之後的繪製K線的程序.所以再來介紹今天的第2個小部件;那就是按鈕Button.同樣的,先來看這個範例..button = widgets.Button(description='Click me',disabled=False,button_style='', # 'success', 'info', 'warning', 'danger' or ''tooltip='Click me',icon='check')Button



我說的沒錯吧?這些小部件的特性設定,很多都是共用的.所以別擔心需要記一大堆的名詞.現在針對比較特殊的兩行,來做個解釋。第一個就是。button_style='', # 'success', 'info', 'warning', 'danger' or '' 按照字義。這裡就是在設定按鈕的一些風格.在按鈕的風格上面。一共提供了。5種的設定.其實這裡面設定值的不同,只會改變的是按鈕的顏色.比如我們選擇的,是以空白略過,它對應的是內定的風格.這是顯示一個白底的按鈕.而如果選擇的是警告的warning;或是危險的danger.按鈕將會改變底色,呈現黃色或是紅色.主要的也是為了呈現這個按鈕訊息的重要性吧! tooltip='Click me', 這個tooltip 就是一個提示.當我們的滑鼠懸停在這個按鍵上的時候,它便會顯示這個提示.而按鍵上面的指示文字,是在description當中去設定的.最後這個icon='check' 將會在按鈕上面,顯示一個打勾的符號.當然,如果把它他忽略;那麼,這個符號便不會出現.到這裡,我們便把今天所要使用到的兩個小部件都介紹完了.接著再回到原來的這段新的程式碼上頭;我們就分段的,一步一步來解釋它吧.



import yfinance as yfimport mplfinance as mpfimport ipywidgets as widgetsfrom IPython.display import display這裡依照國際慣例,就是先宣告我們所要使用的所有套件,大家應該都很熟悉了.底下兩行新增加的我們剛才也介紹了;最主要的就是為了今天所需要使用的小部件.code_input = widgets.Text(value='',placeholder='Enter stock code',description='Stock Code:',disabled=False)接下來這一部分。是設定了我們的文字欄位小部件.這些功能剛才都已經有詳細介紹過了.submit_button = widgets.Button(description='Plot Chart',disabled=False,button_style='', # 'success', 'info', 'warning', 'danger' or ''tooltip='Click to plot chart',icon='check’緊接著這一部分,毫無意外的就是設定第2個小部件Button.比較不同的是,在接下來的這段程式裡;有一段比較重要的程式碼,便是在我們去點擊觸發的這個按鈕之後所要做的繪圖動作.要去特別注意的,就是程式如何去得到這個觸發動作?並如何順利的去開展觸發之後的所有動作.



def on_submit_button_clicked(b):code = code_input.valuestart_date = "2023-01-01"end_date = "2023-06-11"這個副程式當察覺到案件被觸發的時候,便從我們的文字文字欄位小部件中取到了輸入的文字並放入到code的這個變數當中.這個code便是我們要的股票代碼.接下來兩行,我們設定了要向Yahoo資料庫,索取資料的時間長度;資料開始的日期與截止的日期.之後接下來的程式碼,大家就應該非常的熟悉了;就是下載歷史資料,以及設定繪製出來圖形的風格;最後顯示圖表.今天這篇文章當中,我並沒有加上魔術指令%matplotlib notebook.大家可以試著看看呈現出來的風格有什麼不同?



data = yf.download(code, start=start_date, end=end_date)



my_color = mpf.make_marketcolors(up='r', down='g', edge='inherit', wick='inherit', volume='inherit')my_style = mpf.make_mpf_style(marketcolors=my_color, figcolor='(0.82, 0.83, 0.85)', gridcolor='(0.82, 0.83, 0.85)')



mpf.plot(data, type='candle', volume=True, style=my_style, title=str(code), figsize=(8, 5))最後面。display(code_input, submit_button) 這一行就是顯示出設定的兩個widgets小部件.到這裡;整個程式就完善了.這一篇也就先講到這裡,下一篇繼續豐富精彩我們的互動程式.祝福大家一切安好!

raw-image



留言
avatar-img
留言分享你的想法!
avatar-img
Parkson Dow的沙龍
7會員
19內容數
一個專為金融專業設計的專題。介紹量化交易的基本概念和使用Python進行量化交易策略開發的方法。專題涵蓋金融市場運作、技術分析,實例和代碼提供,幫助理解和應用不同的交易策略和指標。此外,介紹了回測工具的使用和風險管理技巧。本專題為對量化交易有興趣的讀者提供了全面的學習指南。
Parkson Dow的沙龍的其他內容
2023/12/19
本期這篇文章。將迎來我們建構股票池工具的收官之作。依照慣例,追劇的每一季結尾,代表著總要對每一季階段性的故事做一個交代。然後也必須要適時的加入一些念想。
Thumbnail
2023/12/19
本期這篇文章。將迎來我們建構股票池工具的收官之作。依照慣例,追劇的每一季結尾,代表著總要對每一季階段性的故事做一個交代。然後也必須要適時的加入一些念想。
Thumbnail
2023/12/18
首先、本來想在這一邊做一個收官,用來結束我們創建股票池工具的階段工作。如此也可以讓我們展開往後的策略設計,以及回測的工作。
Thumbnail
2023/12/18
首先、本來想在這一邊做一個收官,用來結束我們創建股票池工具的階段工作。如此也可以讓我們展開往後的策略設計,以及回測的工作。
Thumbnail
2023/12/18
技術文件   # Pattern Recognition Functions 形態識別    ### CDL2CROWS - Two Crows > 函數名:CDL2CROWS   名稱:Two Crows 兩隻烏鴉   簡介:三日K線模式,第一天長陽,第二天高開收陰,
Thumbnail
2023/12/18
技術文件   # Pattern Recognition Functions 形態識別    ### CDL2CROWS - Two Crows > 函數名:CDL2CROWS   名稱:Two Crows 兩隻烏鴉   簡介:三日K線模式,第一天長陽,第二天高開收陰,
Thumbnail
看更多
你可能也想看
Thumbnail
大家好,我是一名眼科醫師,也是一位孩子的媽 身為眼科醫師的我,我知道視力發展對孩子來說有多關鍵。 每到開學季時,診間便充斥著許多憂心忡忡的家屬。近年來看診中,兒童提早近視、眼睛疲勞的案例明顯增加,除了3C使用過度,最常被忽略的,就是照明品質。 然而作為一位媽媽,孩子能在安全、舒適的環境
Thumbnail
大家好,我是一名眼科醫師,也是一位孩子的媽 身為眼科醫師的我,我知道視力發展對孩子來說有多關鍵。 每到開學季時,診間便充斥著許多憂心忡忡的家屬。近年來看診中,兒童提早近視、眼睛疲勞的案例明顯增加,除了3C使用過度,最常被忽略的,就是照明品質。 然而作為一位媽媽,孩子能在安全、舒適的環境
Thumbnail
我的「媽」呀! 母親節即將到來,vocus 邀請你寫下屬於你的「媽」故事——不管是紀錄爆笑的日常,或是一直想對她表達的感謝,又或者,是你這輩子最想聽她說出的一句話。 也歡迎你曬出合照,分享照片背後的點點滴滴 ♥️ 透過創作,將這份情感表達出來吧!🥹
Thumbnail
我的「媽」呀! 母親節即將到來,vocus 邀請你寫下屬於你的「媽」故事——不管是紀錄爆笑的日常,或是一直想對她表達的感謝,又或者,是你這輩子最想聽她說出的一句話。 也歡迎你曬出合照,分享照片背後的點點滴滴 ♥️ 透過創作,將這份情感表達出來吧!🥹
Thumbnail
  接上一篇,看來花花綠綠的東西跟我們是無望了。對原本接下來的計畫也只好做一些改變。所以衹能把我們的程式碼,重新移動到了7月7號那篇文章的進度NBLOG_20230707使用TA_LIB(PANDAS_TA) 打造一個交易策略實用工具(2TA_LIB輕探之馬克快來。
Thumbnail
  接上一篇,看來花花綠綠的東西跟我們是無望了。對原本接下來的計畫也只好做一些改變。所以衹能把我們的程式碼,重新移動到了7月7號那篇文章的進度NBLOG_20230707使用TA_LIB(PANDAS_TA) 打造一個交易策略實用工具(2TA_LIB輕探之馬克快來。
Thumbnail
墨菲定律說。要什麼不一定來什麼;但不要什麼就一定會來什麼。自從幾個月前過完28歲的生日之後,有一天在洗手臺上面發現了一根掉落的白髮,就暗示的事情不會那麼的簡單。
Thumbnail
墨菲定律說。要什麼不一定來什麼;但不要什麼就一定會來什麼。自從幾個月前過完28歲的生日之後,有一天在洗手臺上面發現了一根掉落的白髮,就暗示的事情不會那麼的簡單。
Thumbnail
在上一篇文章當中;我們已經順利的,把股價當中所發現的吞噬K線形態。標示,在圖形當中。對我這個圖形極簡偏執狂來說,已經是在滿意得不得了了。但自己知道,許多朋友們,還是喜歡看到習慣的紅綠色來標示;上漲或下跌的方向。
Thumbnail
在上一篇文章當中;我們已經順利的,把股價當中所發現的吞噬K線形態。標示,在圖形當中。對我這個圖形極簡偏執狂來說,已經是在滿意得不得了了。但自己知道,許多朋友們,還是喜歡看到習慣的紅綠色來標示;上漲或下跌的方向。
Thumbnail
本來模組化這件事;打算在我們完成股票池工作之後再來談的。沒想到這幾天,已經有一些朋友反應;大概因為端午節的關係,提前磕了太多粽子,導致有點消化不良。所以左思右想之後,決定提前先上一下模組化的部分。目的在於簡化工作。我們討論系列文章的目的,或許跟大家介紹許多一般比較少用的Python套件、、
Thumbnail
本來模組化這件事;打算在我們完成股票池工作之後再來談的。沒想到這幾天,已經有一些朋友反應;大概因為端午節的關係,提前磕了太多粽子,導致有點消化不良。所以左思右想之後,決定提前先上一下模組化的部分。目的在於簡化工作。我們討論系列文章的目的,或許跟大家介紹許多一般比較少用的Python套件、、
Thumbnail
首先。先跟大家說一個令人振奮的消息。在這一篇文章當中。我們終於即將完成K線圖形顯示程式。這個未來會常常使用的小工具完工啦!就說興不興奮,高不高興。這段時間總算沒有白費;我們真的給鼓搗出了一些東西,這下子應該不只可以面對家鄉的父老了;都有一種榮歸故里的感覺。
Thumbnail
首先。先跟大家說一個令人振奮的消息。在這一篇文章當中。我們終於即將完成K線圖形顯示程式。這個未來會常常使用的小工具完工啦!就說興不興奮,高不高興。這段時間總算沒有白費;我們真的給鼓搗出了一些東西,這下子應該不只可以面對家鄉的父老了;都有一種榮歸故里的感覺。
Thumbnail
嗨又見面了!接下來就繼續下去我們的程式互動之旅之旅.相信應該沒有人會以為我們用一個簡單的input,就交代了想要的互動功能.在這一篇當中將帶領大家,真正的體會,炫酷又好玩的Jupyter notebook互動功能.將程式介面提升到一個讓自己愛不釋手的檔次。
Thumbnail
嗨又見面了!接下來就繼續下去我們的程式互動之旅之旅.相信應該沒有人會以為我們用一個簡單的input,就交代了想要的互動功能.在這一篇當中將帶領大家,真正的體會,炫酷又好玩的Jupyter notebook互動功能.將程式介面提升到一個讓自己愛不釋手的檔次。
Thumbnail
在上一篇文章中,我們學會了如何繪製最新的分鐘圖,讓我們了解最新一日的個股股價變化,不過有時分鐘圖太過細小,並無法了解到個股整體的趨勢狀況,這時我們就必須要使用到日線圖,因此,今天我們就來學習如何繪製日線圖吧!!
Thumbnail
在上一篇文章中,我們學會了如何繪製最新的分鐘圖,讓我們了解最新一日的個股股價變化,不過有時分鐘圖太過細小,並無法了解到個股整體的趨勢狀況,這時我們就必須要使用到日線圖,因此,今天我們就來學習如何繪製日線圖吧!!
Thumbnail
股價是股票匯集各式因素所組成的視覺圖,因此今天我們就來學學如何畫製個股的最新分鐘圖,讓你能夠一鍵輕鬆看到當日最新股價走勢圖,我們就開始來教學吧!!
Thumbnail
股價是股票匯集各式因素所組成的視覺圖,因此今天我們就來學學如何畫製個股的最新分鐘圖,讓你能夠一鍵輕鬆看到當日最新股價走勢圖,我們就開始來教學吧!!
Thumbnail
使用pandas,透過TWStock_2的資料,計算下列三種常用的技術指標 1. 移動平均線 2. 指數移動平均線 3. MACD 首先連接資料庫,然後我們只取"成交股數 , 開盤價 , 最高價 , 最低價 , 收盤價" 這5個columns代入新的tsmc( 名稱 ) code如下 參考連結如下
Thumbnail
使用pandas,透過TWStock_2的資料,計算下列三種常用的技術指標 1. 移動平均線 2. 指數移動平均線 3. MACD 首先連接資料庫,然後我們只取"成交股數 , 開盤價 , 最高價 , 最低價 , 收盤價" 這5個columns代入新的tsmc( 名稱 ) code如下 參考連結如下
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News