頑張ってみようと思ったきっかけ
CNN Fear and Greed Index(FGI)は,市場のセンチメントの定量的な指標の一つで,株式の買付,売却のタイミングを決めるのに有用らしい。
でもでも,CNNのウェブサイトを見に行く必要があるので,なかなか活用できないでいた。以前は,Google Apps Script(GAS)の簡単なコードで,スクレイピングしていたが,サイトからブロックされるようになった。仕方がないので,Twitterで定期的にFGIをポストしてくれるアカウントがあるので,それを見て参考にしていた。
おそらく,自分と同じ悩みを抱えている人が世界には何人かいると思って,正月休みにググってみると,いくつか参考になりそうなブログ記事があった。
自分はSEではない。簡単に処理できそうな方法を探して,何とかFGIを自動取得できるようになったので,公開しようと思う。
プログラムコード
グーグル先生は,Javascriptのコードと,Pythonのコードを教えてくれた。どちらでもよかったが,Pythonで初歩的なコードを使って,モメンタムを通知することをしているので,今回もPythonにしてみた。
自分は初心者なので,コードの解説などできない。つたないコードを公開するが,質問されても答えられないと思うので,自分で調べてくれると助かる。
処理内容は,FGIを取得して,メールで自分あてに送信する,だけだ。
import fear_and_greed
fgiindex = fear_and_greed.get()
### FearGreedIndex(
### value=31.4266,
### description='fear',
### last_update=datetime.datetime(2022, 4, 25, 16, 51, 9, 254000, tzinfo=datetime.timezone.utc)),
### )
from collections import namedtuple
# namedtupleから辞書を生成
fgi_dict = fgiindex._asdict()
print(fgi_dict['description']) # Fear / Greed
s = str('{:.2f}'.format(fgi_dict['value']))
print(s) # FGI
from email.mime.text import MIMEText
from smtplib import SMTPException
import smtplib
from email.header import Header
cset = 'utf-8'
username = 'mail.from.name'
password = 'mail.from.pw'
from_address = 'mail.from@hogehoge.com'
to_address = 'mail.to@korakora.com'
title = u'【FGI】Fear & Greed Index'
s = str('{:.2f}'.format(fgi_dict['value']))
body = u'こんな感じです。\n\n' + fgi_dict['description'] + '\n' + s
con = smtplib.SMTP_SSL('smtp.gmail.com', 465) # FQDN とポート番号,gmail向けの設定
con.login(username, password)
cset = 'utf-8'
message = MIMEText(body, 'plain', cset)
message['Subject'] = Header(title, cset)
message['From'] = from_address
message['To'] = to_address
con.sendmail(from_address, [to_address],
message.as_string())
con.close()
コメント