当 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就是你最好的选择!!

完整程式码

延伸阅读

再次附上相关网站连结

有任何使用上的问题都欢迎与我们联系:联络资讯

返回总览页