2021年全年台股上漲3486.31點,如今已經站到萬八大關。比特幣也在2021四月中旬,站上65,000美元。因此作者認為,我們應該要跟上這個時代的腳步。因此想設計一個LinBot聊天機器人協助我們看台灣與國際股市。
藉由yahoo 股市
、Coinbase
與 台灣證券交易所 Taiwan Stock Exchange(TWSE)
的公開資源,及時地顯示出股價以及K線。
用簡單的方式提供選項,另外也可以讓使用者自行手動輸入股票代碼,解決不同人的問題。
- Python 3.8
- Windows Subsystem for Linux ( Ubuntu20.04 )
- Heroku
- Web Crawling :
- 利用爬蟲的方式,抓取目前股價
- Deploy:
- 透過雲端部屬的方式,建立伺服器,
- Multi User
- 支援多人使用
- pandas
- 利用爬進來的資料,畫出 K線,SMA(日均線),並且自動上傳到雲端上,送到使用者的LINE上
- yfinance
- 爬取美股的目前的交易情形
- TWSE Api
- 爬取台股目前交易情形
User
: 使用者一加入時,隨便輸入便可以開始使用相關功能Start
: 主選單,可以連結到兩大功能今日股市
、近期股票分析
Search
: 選擇為Crytro
或是Stock
Crytro
: 跳出七種貨幣供使用者選擇(目前主流或作者熟識的幣種BTC
、BAT
、ETH
、BNB
、BTC
、DOGE
、SHIB
)Crytro_Fetch
: 爬取該虛擬貨幣的幣價,並以圖文方式呈現,且呈現出USD
與TWD
的價格,並以按鈕繼續搜尋
(search)與探索其他功能
(start)分別去不同地方Stock
: 可以連結到兩大股票位置台灣股市
、美國股市
Stock_TW
: 跳出多個常見股票供使用者選擇- 若上述沒有使用者想要的幣種,可以文字輸入股票代號,以呈現出目前幣價。
- 呈現的常見股票是作者曾經或現在關注的股票
Stock_TW_Fetch
: 爬取該股票的交易情形,並以圖文方式呈現。- 且呈現出
目前的指數
,上升或下降的比率
(以不同顏色表示)- 作者使用的是台灣的表示法,與美國的表示法略有不同
- 紅色:股價走揚
- 綠色:股價走低
- 灰色:與昨天收盤價相當,股價持平
- 作者使用的是台灣的表示法,與美國的表示法略有不同
- 並以按鈕
繼續查詢
(search) 與離開
(start) 分別去不同地方
- 且呈現出
Stock_US
: 可以連結到兩大美股常用功能美股大盤指數
、個別股市
Stock_Index
: 呈現出四種美股指數NASDAQ-100
、NASDAQ
、S&P 500標普500
、Dow Jones工業指數
Stock_Indivisual
: 跳出多個常見股票供使用者選擇- 若上述沒有使用者想要的股票,可以文字輸入股票代號,以呈現出目前幣價。
- 呈現的常見股票是作者曾經或現在關注的股票 (主要為NASDAQ中的科技概念股)
Stock_US_Index_Four
: 呈現出目前的美國指數Stock_US_Fetch
: 呈現出目前的美國指數- 且呈現出
目前的指數
,上升或下降的比率
(以不同顏色表示) - 作者使用的是台灣的表示法,與美國的表示法略有不同
- 紅色:股價走揚
- 綠色:股價走低
- 灰色:與昨天收盤價相當,股價持平
- 並以按鈕
繼續查詢
(search) 與離開
(start) 分別去不同地方
- 且呈現出
SMA
: 呈現出台股短線
、美股短線
、台股中線
、美股中線
、台股長線
、美股長線
- 以
我要分析
進入到不同的
- 以
SMA_S
,SMA_M
、SMA_L
、SMA_S_US
、SMA_M_US
、SMA_L_US
: 跳出多個常見股票供使用者選擇- 若上述沒有使用者想要的股票,可以文字輸入股票代號,以呈現出目前幣價。
- 呈現的常見股票是作者曾經或現在關注的股票
S_Stock
,M_Stock
,L_Stock
,S_Stock_US
,M_Stock_US
,L_Stock_US
:- 爬取相對應的股票,並且運用資料分析,畫出圖之後,並且上傳到雲端上,再傳送到使用者的Line手機裡
- Python 3.8
- Pipenv
pip3 install pipenv
pipenv --three
pipenv install
pipenv shell
- pygraphviz (For visualizing Finite State Machine)
You should generate a .env
file to set Environment Variables refer to our .env.sample
.
LINE_CHANNEL_SECRET
and LINE_CHANNEL_ACCESS_TOKEN
MUST be set to proper values.
Otherwise, you might not be able to run your code.
You can either setup https server or using ngrok
as a proxy.
ngrok
would be used in the following instruction
sudo apt-get install ngrok
python3 app.py
ngrok http 8000
After that, ngrok
would generate a https URL.
Setting to deploy webhooks on Heroku.
you can use Snap (Ubuntu 16+)
sudo snap install --classic heroku
-
Register Heroku: https://signup.heroku.com
-
Create Heroku project from website
-
CLI Login
heroku login
-
Add local project to Heroku project
heroku git:remote -a {HEROKU_APP_NAME}
-
Upload project
git add . git commit -m "Add code" git push -f heroku master
-
Set Environment - Line Messaging API Secret Keys
heroku config:set LINE_CHANNEL_SECRET=your_line_channel_secret heroku config:set LINE_CHANNEL_ACCESS_TOKEN=your_line_channel_access_token
-
Your Project is now running on Heroku!
url:
{HEROKU_APP_NAME}.herokuapp.com/callback
debug command:
heroku logs --tail --app {HEROKU_APP_NAME}
-
If fail with
pygraphviz
install errorsrun commands below can solve the problems
heroku buildpacks:set heroku/python heroku buildpacks:add --index 1 heroku-community/apt
refference: https://hackmd.io/@ccw/B1Xw7E8kN?type=view#Q2-如何在-Heroku-使用-pygraphviz
TOC-Project-2019 ❤️ @winonecheng
Flask Architecture ❤️ @Sirius207