CNN Fear and Greed Indexの自動取得ができるようになった

この記事は約4分で読めます。

スポンサーリンク

頑張ってみようと思ったきっかけ

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()

コメント