iT邦幫忙

2021 iThome 鐵人賽

DAY 19
0
永豐金融APIs

深入解析 Shioaji API系列 第 19

Day 19 - 實測盤中訂閱 tick 與 bidask 資料是否有先後順序 (上)

本篇重點

剛好看到有人在詢問,是否先有tick資料,才會更新bidask的資料
這裡就來實測,順便練習一下如何取得測試資料,整理並統整出來
在測試之前要先安裝Redis,用來儲存我們盤中所要儲存的資料內容,本篇先介紹在windows上要如安裝及測試Redis

  • Redis介紹
  • WSL及Docker安裝
  • 下載Reids的Docker Image及設定
  • 測試Redis是否正常運作

Redis介紹

Redis官網:https://redis.io/
https://zh.wikipedia.org/zh-tw/Redis
Redis是一個非關聯式資料庫(No-SQL),因為主要是用In-memory的方式儲存資料,所以非常適合用來儲存短時間大量資料的使用場景,也就是拿來當快取cache使用。
由於Redis官方並不建議在Windows環境中使用Redis,所以官方也沒有提供Windows版本的安裝檔。若要在Windows環境中使用Redis,有兩種方式,第一個是用非官方發佈版本,這是由微軟團隊維護的版本,但目前最新版本只有3.2.100,若要使用,可至以下網址進行下載
https://github.com/MicrosoftArchive/redis/releases
安裝方式步驟,可參考以下文章:
https://www.dotblogs.com.tw/YiruAtStudio/2021/01/13/111530
另一個方式是,在Windows上,透過WSL下載並執行Redis的Docker。以下將介紹此種方式。

WSL及Docker Desktop安裝

在安裝Docker Desktop,要先安裝並啟用WSL
按左下角的「搜尋」按鈕並輸入「power」,在「Windows PowerShell」中選擇「以系統管理員」執行
https://ithelp.ithome.com.tw/upload/images/20211003/20140827hqNBzWEO78.png
輸入「wsl --install」並按下Enter鍵進行安裝
https://ithelp.ithome.com.tw/upload/images/20211003/201408271QvylkbMS4.png
PowerShell就會開始安裝wsl,安裝完成後,會提示須要重新開機
https://ithelp.ithome.com.tw/upload/images/20211003/2014082737pPKeJP0V.png
重新開機後,會自動在wsl中安裝Ubuntu
https://ithelp.ithome.com.tw/upload/images/20211003/20140827BduwiJHumN.png
Ubuntu安裝完成後,會請你輸入Ubuntu中所要使用的帳號及密碼,輸入完成按Enter鍵即可
https://ithelp.ithome.com.tw/upload/images/20211003/201408274TiPTk7ufi.png
設定完成,就會出現下面這個畫面
https://ithelp.ithome.com.tw/upload/images/20211003/20140827B26EpfE4hN.png
接著,安裝Docker Desktop。首先打開下列網址,並點「Download for Windows」下載安裝檔
https://www.docker.com/products/docker-desktop
https://ithelp.ithome.com.tw/upload/images/20211004/201408274Lt35EhWQu.png
下載完成後,執行安裝程式,按「OK」進行安裝
https://ithelp.ithome.com.tw/upload/images/20211004/201408273eNGIciWX5.png
安裝完成後,會需要登出Windows並重新登入。請先關閉其它應用程式,再進行登出動作。
https://ithelp.ithome.com.tw/upload/images/20211004/2014082777JhiBrb9R.png
重新登入後,Windows就會自動啟動Docker Desktop,第一次執行會讓你確認服務條款,這裡請勾選「I accept the terms」並按下「Accept」
https://ithelp.ithome.com.tw/upload/images/20211004/20140827obQ5c8j883.png
然後,就可以先將Docker Desktop的視窗關閉
https://ithelp.ithome.com.tw/upload/images/20211004/201408276FUcmqqP69.png

安裝WSL後,也不一定要安Docker Desktop才可以執行Docker服務,若要使用CLI進行安裝及設定,可參考下列文章:
https://dev.to/bowmanjd/install-docker-on-windows-wsl-without-docker-desktop-34m9

下載Reids的Docker Image及設定

接著開啟PowerShell,並輸入「docker pull redis」下載redis的docker image
https://ithelp.ithome.com.tw/upload/images/20211004/20140827UmFWtfRg8g.png
下載完成後,開啟Docker Desktop,在Image中就可以看到redis。接著按右邊的「run」啟動redis
https://ithelp.ithome.com.tw/upload/images/20211004/201408277aSKkcfsib.png
輸入Container Name及Local Host的Port,這裡Port我們直接輸入預設的6379,最後按下「Run」
https://ithelp.ithome.com.tw/upload/images/20211004/201408272SiWmTHqjW.png
就可以看到剛才建立的redis-sj已經在執行中
https://ithelp.ithome.com.tw/upload/images/20211004/20140827Xam99Jk4xf.png

測試Redis是否正常運作

首先,在console中輸入「pip install redis」安裝redis套件
https://ithelp.ithome.com.tw/upload/images/20211004/20140827a1KdGIkVQZ.png
接著,建立測試程式碼,範例如下:

import redis
#建立連線,port指定剛才在Docker中所設定的port,並將decode_responses設為True,讓取得資料時自動decode
r = redis.StrictRedis(host='localhost', port=6379, decode_responses=True)
r.set('myName', 'Mike') #存入key及value
r.set('中文的key', '中文的value') #存入資料,key可以是中文
print(r)
print(r.get('myName')) #輸入key值來取得剛
print(r.get('中文的key'))

redis儲存方式為key和value,用set的方式來增加或更新value,用get的方式來取得所儲存的value。若上述程式可以正常執行並取得所存入的value,就表示Redis已正常執行。


上一篇
Day 18 - 取得所有Contract程式範例
下一篇
Day 20 - 實測盤中訂閱 tick 與 bidask 資料是否有先後順序 (下)
系列文
深入解析 Shioaji API30

尚未有邦友留言

立即登入留言