如何使用 Fugle Realtime API 繪製股票分K線圖

如何使用 Fugle Realtime API 繪製股票分K線圖

嗨大家好!我是Alan
今天主題將會教大家如何製作股票的分K線圖

那什麼是分K線呢?

其實分K線的組成原理,就跟一般常看到的日K、月K、年K一樣,只不過他的時間週期縮短到了分鐘制,譬如說一分K就是有一分鐘內成交的開盤價、收盤價、最高價以及最低價這四種價格所組成的一根K棒,以此類推五分K棒就是由五分鐘內的開盤價、收盤價、最高價以及最低價所組成的,那市面上比較常見的K線主要有一分K、五分K、十分K以及三十分K,所以其實說穿了呢,分K線就是把一個大的時間範圍再縮減,譬如說五分K棒就是由五根一分K棒所組成的。

那麼誰會需要使用到分K線呢?

一般來說,對於短線交易者,可能會需要在當日進出場的,像是當沖交易者就會非常仰賴分K線的使用,那我們今天除了跟大家分享一般常見的幾種分K,我們還可以讓你選擇,K棒的時間間隔,譬如說你想要2分鐘的K線、3分鐘的K線,甚至是59分鐘的K棒,那假如你現在是選擇59分鐘K,那程式就會自動把剩下一分鐘的成交資訊給去掉。
有了市場上這種比較少見,甚至是沒有的新型態K線,在大家做完後,也能夠嘗試套入個式各樣的交易策略,譬如說市場上常見的突破策略,或者是線形型態,像是譬如說:紅三兵、頭肩頂之類的,以及搭配一些技術指標,說不定你會發現把這些策略應用在比較少見的K線上,會有意想不到的成效。

實作開始!

首先,我們先到這次 GitHub 連結,並且下載我們這次所需要的工具:

1
git clone https://github.com/frieadgood/fugle_realtime_RESTful_api.git

接下來我們就要藉由我們的終端機,然後進入到這個專案資料夾裡面:

1
cd fugle_realtime_RESTful_api

這時候,將這次繪製K線圖所需要用到的套件安裝完成:

1
pip install -r requirements.txt

緊接著,啟動我們的 jupyter notebook:

1
jupyter notebook

啟動之後,就打開一個新的 notebook 檔案
開啟一個新的檔案之後,接下來我們就要把需要的套件匯入進來:

1
from fugle_realtime_RESTful_api import *

* 的意思就是代表把fugle_realtime_api裡面的所有東西匯入進來

如果想要畫分K線圖的話,就要連接到 chart 這隻 API

不過,如果想要看台股每檔股票的話,需要成為 FugleTrade 的證券戶才能夠享有自己的API Token。
若你已經開戶,取得 API token 的連結在此。
如果還沒開戶的話,大家可以用我的推薦碼連結 ,一起賺 FugleCoin 折抵手續費 XD。
喔對了,現在 FugleCoin 還可以兌換成現金喔!
此處暫時以 api_token="demo"symbol_id="2884"為例。

首先,使用 chart_api 函數並在參數當中輸入 api_token="demo"

1
chart = chart_api(api_token='demo')

然後,再使用 get_chart_data 函數並輸入參數 symbol_id="2884"n=5

  • symbol_id:股票代碼
  • n:分 K 線圖的時間區間
1
chart.get_chart_data(symbol_id='2884', n=5)

執行此程式碼的 output 為分 K 線的資料(type:Dataframe),會有每 n 分鐘(上面參數所設定)之 開高低收交易量的資料

知道如何拿到分 K 線的資料後,緊接著就是重頭戲,把屬於我們自己的分 K 線圖建立起來!而這邊我們使用的是 Dash 套件。

簡單介紹一下 Dash 這個工具, Dash 是一個用於構建 Web 應用程式的高效 Python 框架,他能夠讓大家非常方便的視覺化各式各樣的圖表、報表等,而且語法也滿平易近人的,並不會太難上手。

話不多說(?),直接上程式碼:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css']
app = dash.Dash(__name__, external_stylesheets=external_stylesheets)

app.layout = html.Div(children=[
dcc.Graph(id='min_K_plot', style={'width':'75%', 'display':'inline-block', 'vertical-align':'top'}),
dcc.Interval(id='interval', interval=60*1000),
])

@app.callback(
Output('min_K_plot', 'figure'),
[Input('interval', 'n_intervals')]
)

def candlestick_chart(interval):

df_ohlc = chart.get_chart_data(5, symbol_id='2884')

return {
'data':[
chart.plot_ohlc(df=df_ohlc, rise_color='red', down_color='green'),
chart.plot_volume_bar(df=df_ohlc, rise_color='red', down_color='green'),
chart.plot_MA(df=df_ohlc, n=3, line_color='blue', line_width=2),
chart.plot_MA(df=df_ohlc, n=10, line_color='black', line_width=3),
],
'layout':{
'xaxis':{'rangeslider':{'visible': False}, 'anchor':'y2'},
'yaxis':{'domain':[0.4, 1]},
'yaxis2':{'domain':[0, 0.35]},
'legend':{'orientation':'h'},
'title':'分K線圖'
}
}

if __name__ == '__main__':
app.run_server()

執行程式碼後,可至連結查看最後的成果呦!

以上就是簡單的小分享,如果喜歡的話歡迎將我的文章分享出去,若有任何問題也都能夠在下面提問,我會盡我所能回答,也歡迎大家分享自己的新發現,我們下次見~ Thanks~

Comments