前回「外為で勝つために その3 ~ LAMP 構築編」の続きです。
値動きが大きくなったら LINE Messageing API から通知してもらいます。
他の方法も考えたんですが、
- SMS は基本有料
- twitter は用途に合っていない(bot と誤解される)
- facebook うーん、難しそう
- #slack はあまり使わない
ということから LINE を採用しました。
今回の参考はこちら「PythonでLINEにメッセージを送る」です。
LINE Notify をお友達にする
スマホの LINE から「LINE Notify」さんをお友達に追加します。
すでにお友達が 200 万人近くいるようですが、実際そんなにいたら大変ですね。
いやもう覚えきれません。
LINE Access Token の発行
トークンを発行します。
トークン名は適当な名前にします。
ここで、1つ失敗したんですが
グループを作ってそこに通知して欲しいときは、この画面で「通知を送信するトークルーム」を選択しなければいけなかったようです。後で作成し直す羽目になりました。
Python コード
トークンが取得できたので、Python プログラムに組み込みます。
コードの全文は公開中の GitHub をご参照ください。
from decimal import Decimal
import requests
必要なライブラリをインポートします。
# LINE Notify settings
line_url = "https://notify-api.line.me/api/notify"
line_access_token = "## Your LINE Access Token ##"
line_headers = {'Authorization': 'Bearer ' + line_access_token}
LINE Notify に通知してもらうための設定です。
line_message = ""
# Difference high and low
diff = Decimal(raw[price]["h"]) - Decimal(raw[price]["l"])
print("{} {}: {}".format(
raw["time"].replace("000Z", "").replace("T", " "),
response["instrument"],
diff
))
if response["instrument"].find("_JPY") > -1:
if diff >= 0.1:
line_message += "'" + response["instrument"] + "' "
else:
if diff >= 0.0015:
line_message += "'" + response["instrument"] + "' "
# LINE Notify
if len(line_message) > 0:
line_payload = {"message": "There were signficant price fluctuations in " + line_message + "."}
r = requests.post(line_url, headers=line_headers, params=line_payload)
対円相場は 0.1 円以上、それ以外は 0.0015 米ドル(他)以上の値動きがあったら、LINE 通知メッセージを貯め込みます。
最後に、LINE から通知すべきメッセージを requests.post します。
結果
基本的に、どの通貨ペアに大きな値動きがあったか分かれば良いので、こんな感じになります。
チャートを確認して気配があったら取引するのも良いでしょう。
Raspberry Pi 起動時に実行する
スタートアップ登録しておくと便利です。
[Desktop Entry]
Type=Application
Name=Market Monitor
Exec=/usr/bin/python3 -B /home/pi/python/MarketMonitor/oanda_candle.py
Terminal=false
動作確認
システムを再起動して、動作しているかは phpmyadmin でデータベースに突っ込まれていることが確認できれば問題ないでしょう。
LINE 通知は普段、あまり来ることはないと思うので。
環境周りはできてきたので、
ポータルサイト的なものを作ってみたいと思います。
続く。