Nous avons créé un BOT qui vous informe sur LINE des problèmes qui présentent un croisement en or entre les moyennes mobiles de 75 jours et de 200 jours souvent utilisées dans les actions. La raison pour laquelle «75 jours» et «200 jours» sont décrits dans note, alors jetez un œil.
Ici, je vais écrire comment il a été mis en œuvre. Le code source est GitHub Est publié. La différence avec les autres est que le code source est très simple car il se concentre sur la fonction d'envoi de message du côté Bot.
La marque Golden Crossed est publiée dans Stock Tech. Les jours ouvrables de la bourse sont mis à jour tous les jours, mais j'oublie juste d'aller le voir, alors j'ai pensé que ce serait pratique s'il y avait un Bot qui me préviendrait automatiquement.
Le flux est
Le code a été implémenté en Python. Il est grossièrement divisé en "scraping" et "envoi de messages avec LINE". Le raclage est jugé car la bourse est fermée les samedis, dimanches et jours fériés.
import os
import datetime
import re
from bs4 import BeautifulSoup
import jpholiday
from linebot import LineBotApi
from linebot.exceptions import LineBotApiError
from linebot.models import TextSendMessage
import requests
KABUTEC_GC_URL = "https://www.kabutec.jp/contents/compare/com.php?col1=8&scol1=0&col2=26&scol2=0&col3=27&scol3=0&market=0"
def get_today_list():
"""
Acquérir la marque GC auprès de la technologie de stock.
"""
res = requests.get(KABUTEC_GC_URL)
soup = BeautifulSoup(res.text, "html.parser")
li = soup.find_all(href=re.compile("kabutec.jp/company/fs_"))
company_list = list(map(lambda item: item.contents[0], li))
return company_list
def get_weekday():
"""
Faites un jugement les jours de semaine.
Returns
-------
ret : boolean
True :Jours de la semaine
False :vacances
"""
dt_jst = datetime.datetime.now(datetime.timezone(datetime.timedelta(hours=9)))
if dt_jst.weekday() == 5 or dt_jst.weekday() == 6:
ret = False
else:
if jpholiday.is_holiday(dt_jst.date()):
ret = False
else:
ret = True
return ret
if __name__ == "__main__":
if get_weekday():
li = get_today_list()
line_bot_api = LineBotApi(os.environ["LINE_CHANNEL_ACCESS_TOKEN"])
msg = "La marque GC d'aujourd'hui{num}C'est une marque.\n{li}".format(num=len(li), li="\n".join(li))
print(msg)
messages = TextSendMessage(text=msg)
try:
line_bot_api.broadcast(messages=messages)
except LineBotApiError:
pass
else:
print("Je suis hors du devoir aujourd'hui.")
La partie LINE Bot était très simple à écrire à l'aide de l'API de messagerie de LINE. Obtenez "Channel Access Token (Long Term)" auprès de LINE Developers et définissez "LINE_CHANNEL_ACCESS_TOKEN" comme variable d'environnement.
D'autres utilisent Flask pour recevoir les messages envoyés par LINE, mais si vous envoyez simplement du côté Bot, vous n'avez pas besoin non plus de Flask.
J'utilise line_bot_api.broadcast
pour diffuser à tous les utilisateurs qui sont amis avec Bot.
line_bot_api = LineBotApi(os.environ["LINE_CHANNEL_ACCESS_TOKEN"])
msg = "La marque GC d'aujourd'hui{num}C'est une marque.\n{li}".format(num=len(li), li="\n".join(li))
print(msg)
messages = TextSendMessage(text=msg)
try:
line_bot_api.broadcast(messages=messages)
except LineBotApiError:
pass
Lorsque vous utilisez la diffusion, vous devez faire attention au nombre de messages envoyés. L'API LINE elle-même peut être utilisée gratuitement, mais le nombre de messages pouvant être envoyés gratuitement peut atteindre 1000 messages / mois. Etant donné que la bourse est ouverte le 20 du mois, si vous avez plus de 50 amis Bot, vous ne pourrez pas envoyer à la fin du mois.
Il est exploité à Heroku. Si vous avez un Bot qui fonctionne à une heure fixe tous les jours comme cette heure, vous n'avez besoin que de deux paramètres dans Heroku.
Réglez LINE_CHANNEL_ACCESS_TOKEN
sur Config Vars
dans les paramètres d'Heroku.
Les jetons d'accès aux canaux peuvent être obtenus à partir de «Jetons d'accès aux canaux (à long terme)» dans LINE Developers.
Ajoutez Heroku Scheduler à partir des modules complémentaires installés.
Heroku Scheduler lui-même est gratuit, mais vous devrez enregistrer une carte de crédit.
Par exemple, dans le cas de ce programme, si vous enregistrez la commande python main.py
comme planning, elle se déplacera à l'heure souhaitée et un message sera envoyé depuis le Bot. L'horaire lui-même semble avoir une erreur de plusieurs minutes, alors soyez prudent avec les programmes qui nécessitent une définition de l'heure stricte.
Recommended Posts