當 TEJ API 遇上 LINE

               

前言

在透過很久之前我們學習過的透過TEJ API打造自己的資料庫以及如何使用Windows排程讓資料庫定時更新之後,今天我們要讓這個功能更加地自動,更加地方便,也就是透過Line Notify的功能,讓我們想要的資料可以自動地導入我們的Line聊天室之中!

本文精華摘要 

  • Line Notify 簡介
  • Line Notify 申請教學
  • Line Notify 配合TEJ API應用

完整程式碼

本次使用的相關網站連結

Line Notify 簡介

Line Notify 也是一個API,透過KEY在軟體之間的互動,就好比TEJ API讓使用者在Python跟TEJ資料庫互動一般,那這邊只是改成讓Python跟Line互動,讓想要的資訊透過Python先傳遞到Line再傳遞給使用者。所以應用可以非常地廣泛,從網路爬蟲找各式商品的價格到金融資料符合條件時的傳播都可以達到,純粹看使用者對於甚麼樣子資料的需要。

Line Notify 申請

申請主要透過Line Notify官方網站,登入後可以看到一個按鈕叫做登錄服務,點進之後會看到以下欄位並填寫好之後會看到類似以下圖片,之中要注意的事是,因為Python都是在本機上面跑的,所以服務網址以及Callback URL皆為http://127.0.0.1,剩餘欄位都是自己的資料噢

填寫完畢並送出之後,會有一封認證信寄到使用者填寫的Email帳號,認證之後就可以看到以下這個畫面:

可以看到Line給我們配發了一個Client ID,接下來透過右上方紅框這點下之後可以找到一個叫做“個人頁面”的按鈕,之後可以在頁面下方找到這個”發行權杖”的按鈕之後點進去,可以看到以下畫面:

這邊網頁會詢問使用者要接收通知的聊天室,要注意的地方是,除了自身之外,如果要傳播資訊給多人,需要透過群組的方式才行!

確認好之後,按下發行,就可以拿到我們的權杖Token(類似API KEY),如圖所示:

接下來就可以進入我們的Coding時間啦~~

Line Notify 配合TEJ API應用

套件Import

首先一樣地先將我們會需要用到的package進行import。

import tejapi 
import pandas as pd
import numpy as np
import datetime
import matplotlib.pyplot as plt
tejapi.ApiConfig.api_key = "your key"
tejapi.ApiConfig.ignoretz = True

資料撈取(TEJAPI)及整理

再來透過TEJ API將我們想要的資料撈下來,這邊用的範例是2330, 2303 以及 1101。使用者可以根據自己的需要進行更換噢~

ticks = ['2330', '2303', '1101']
DailyPrice= tejapi.get('TWN/EWPRCD',coid=ticks,
                        opts={'columns':['coid', 'mdate', 'open_d',  'high_d','low_d', 'close_d']},
                        mdate={'gte':'2020-05-01','lte':'2021-05-25'}, paginate=True, )
DailyPrice= DailyPrice.set_index('mdate')

資料撈下來之後,我們做一些簡單的指標計算,像是5日均線、月均線還有日報酬率。因為TEJ每天收盤之後最遲在下午2:30就會把所有本日資料更新,並不用擔心會在這時間後用到舊的資料噢!

## 周線;月線;日變化
MovingAvg_5D = {}
MovingAvg_20D = {}
DailyRt = {}
for ticker in ticks:
    MovingAvg_5D[ticker] = DailyPrice[DailyPrice['coid']==ticker]['close_d'].rolling(5).mean()
    MovingAvg_20D[ticker] = DailyPrice[DailyPrice['coid']==ticker]['close_d'].rolling(20).mean()
    DailyRt[ticker] = DailyPrice[DailyPrice['coid']==ticker]['close_d'].pct_change()*100

連接Line Notify

再來就是連接我們的Line Notify啦,我們將上面拿到的權杖Token先行設置,並將Line Notify設定成一個函數,函數內部參數都不用進行額外更動,函數主要用意是在將我們想要的資料如何透過Line Notify傳播到我們手機當中。

token = "your token"
def LineNotify(params, token):
    
    headers = {
        "Authorization": "Bearer " + token,
        "Content-Type": "application/x-www-form-urlencoded"
        }
    r = requests.post("https://notify-api.line.me/api/notify", headers=headers, params=params)
    print(r.status_code)

接下來就是從指標中找到我們想要的資料並進行條件設定,小編這邊用的是如果五日均線或月均線都往上我就會進行回報,除了回報現階段均線價位之外,連同最新收盤價以及日報酬率一併做回覆。

都完成之後,我們就可以看到我們的Line Notify將符合目標的條件傳遞到手機中啦!!

結論

今天的內容主要是延伸自透過TEJAPI自動更新資料庫,再搭配Line Notify之下,我們可以直接將每日想要知道的資料自動地傳到我們的手機當中。小編今天只用均線、日報酬進行示範,使用者也可以根據自己的需要,像是技術指標數值、均線突破亦或是只想每天知道最新收盤價等,都可以透過這樣的方式進行推播,省下我們一個代號一個代號輸入的時間!!

最後,如果喜歡本篇文章的內容請幫我們點擊下方圖示 ,給予我們更多支持與鼓勵,有任何的問題都歡迎在下方留言/來信,我們會盡快回覆大家

一個優秀的策略必須建構在"穩定""品質高""資料長度長"的資料源之上,而 TEJ API就是你最好的選擇!!

完整程式碼

延伸閱讀

再次附上相關網站連結

有任何使用上的問題都歡迎與我們聯繫:聯絡資訊

返回總覽頁
Procesing