Wir haben einen BOT erstellt, der Sie über Probleme informiert, die eine goldene Kreuzung zwischen den gleitenden 75-Tage- und 200-Tage-Durchschnittswerten aufweisen, die häufig in Aktien verwendet werden. Der Grund, warum "75 Tage" und "200 Tage" in Anmerkung beschrieben sind, schauen Sie bitte nach.
Hier werde ich schreiben, wie es implementiert wurde. Der Quellcode lautet GitHub Ist veröffentlicht. Der Unterschied zu anderen Personen besteht darin, dass der Quellcode sehr einfach ist, da er sich auf die Nachrichtensendefunktion von der Bot-Seite konzentriert.
Die golden gekreuzten Aktien werden in Stock Tech veröffentlicht. Die Geschäftstage der Börse werden jeden Tag aktualisiert, aber ich vergesse nur, sie mir anzusehen, und dachte, es wäre praktisch, wenn es einen Bot gäbe, der mich automatisch benachrichtigt.
Der Fluss ist
Der Code wurde in Python implementiert. Es ist grob unterteilt in "Scraping" und "Senden von Nachrichten über LINE". Scraping wird beurteilt, weil die Börse samstags, sonntags und an Feiertagen geschlossen ist.
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():
"""
Erwerben Sie die Marke GC von Stock Tech.
"""
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():
"""
Machen Sie an Wochentagen ein Urteil.
Returns
-------
ret : boolean
True :Wochentags
False :Urlaub
"""
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 = "Die heutige Marke GC{num}Es ist eine Marke.\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("Ich bin heute dienstfrei.")
Der LINE Bot-Teil war mit der Messaging-API von LINE sehr einfach zu schreiben. Beziehen Sie "Channel Access Token (Long Term)" von LINE Developers und legen Sie "LINE_CHANNEL_ACCESS_TOKEN" als Umgebungsvariable fest.
Andere verwenden Flask, um von LINE gesendete Nachrichten zu empfangen, aber wenn Sie nur von der Bot-Seite senden, benötigen Sie Flask auch nicht.
Ich verwende line_bot_api.broadcast
, um an alle Benutzer zu senden, die mit Bot befreundet sind.
line_bot_api = LineBotApi(os.environ["LINE_CHANNEL_ACCESS_TOKEN"])
msg = "Die heutige Marke GC{num}Es ist eine Marke.\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
Bei der Verwendung von Broadcast müssen Sie auf die Anzahl der gesendeten Nachrichten achten. Die LINE-API selbst kann kostenlos verwendet werden, aber die Anzahl der Nachrichten, die kostenlos gesendet werden können, beträgt bis zu 1000 Nachrichten pro Monat. Da die Börse am 20. des Monats geöffnet ist und Sie mehr als 50 Bot-Freunde haben, können Sie am Monatsende nicht senden.
Es wird in Heroku betrieben. Wenn Ihr Bot jeden Tag wie zu dieser Zeit zu einer festen Zeit arbeitet, benötigen Sie in Heroku nur zwei Einstellungen.
Setzen Sie LINE_CHANNEL_ACCESS_TOKEN
in Herokus Einstellungen auf Config Vars
.
Kanalzugriffstoken können unter "Kanalzugriffstoken (langfristig)" in LINE Developers abgerufen werden.
Fügen Sie Heroku Scheduler aus installierten Add-Ons hinzu. Heroku Scheduler selbst kann kostenlos verwendet werden, Sie müssen jedoch eine Kreditkarte registrieren. Wenn Sie beispielsweise bei diesem Programm den Befehl "python main.py" als Zeitplan registrieren, wird er zum gewünschten Zeitpunkt verschoben und eine Nachricht vom Bot gesendet. Der Zeitplan selbst scheint einen Fehler von mehreren Minuten zu haben. Seien Sie also vorsichtig mit Programmen, die eine strenge Zeitdefinition erfordern.
Recommended Posts