【Python】自動売買の状況をLINEに通知。LINE Notifyの使い方を解説

この記事には広告を含む場合があります。

記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。

FXや株の自動売買をしていると、ちゃんとプログラムが動いているかどうか稼働状況が気になりますよね。

そのような場合は、稼働状況をLINEに通知することができます。

本記事では、Pythonのプログラムから自動売買の状況をLINEに通知を出すことができるLINE Notifyの使い方を解説します。

LINE Notifyとは

LINE Notify(ラインノーティファイ)とは、LINEとWebサービスを連携し、ユーザーが通知を受け取れるサービスです。LINEアカウントを持っているユーザーであれば、無料で誰でも使えます。

LINE NotifyのAPIを利用することで、Pythonのプログラムから簡単にLINEにメッセージを送ることができます。

LINE Notifyの使い方

トークンの発行

LINE Notify(https://notify-bot.line.me/ja/)のサイトにアクセスして、[ログイン]をクリックする。
メールアドレスとパスワードを入力するか、QRコードでログインする。
[マイページ]をクリックする。
アクセストークンの発行(開発者向け)の[トークンを発行する]をクリックする。
ポップアップが表示されるので,適当なトークン名を入力して、[1:1でLINE Notifyから通知を受け取る]を選択し,[発行する]をクリックする。
トークンが発行されるので,[コピー]をクリックしてメモ帳などに保存する。

[閉じる]をクリックしてしまうと、二度と表示されません。トークンのコピーは必ず取りましょう。

プログラムに実装

まずはシンプルにPythonからLINEにメッセージが送れるか確認しましょう。

Python
import requests


line_token = 'ここに発行したトークン'
text = 'これはテストです'
url = 'https://notify-api.line.me/api/notify'
line_notify_data = {'message': text}
headers = {'Authorization': 'Bearer ' + line_token}
requests.post(url, data=line_notify_data, headers=headers)

上記のプログラムを実行すると、LINEに通知が入ります。

それでは実際のプログラムに実装します。

例として、当ブログで紹介しているFXの自動売買プログラムに次の3つの記述を追加します。

  • line_token = ‘ここに発行したトークン’
  • line_notify(flag[‘order’][‘side’] + ‘で{}通貨の成行注文を出しました’.format(size))
  • # LINEに通知する関数
    def line_notify(text):
    url = ‘https://notify-api.line.me/api/notify’
    line_notify_data = {‘message’: text}
    headers = {‘Authorization’: ‘Bearer ‘ + line_token}
    requests.post(url, data=line_notify_data, headers=headers)

プログラムが長くなるので一部しか記載していません。ご注意ください。

Python
import requests


line_token = 'ここに発行したトークン'


# 成行注文を出す関数
def market_order(size):
    global flag

    while True:
        try:
            timestamp = '{0}000'.format(int(time.mktime(datetime.now().timetuple())))
            method = 'POST'
            endPoint = 'https://forex-api.coin.z.com/private'
            path = '/v1/order'
            reqBody = {
                'symbol': 'USD_JPY',
                'side': flag['order']['side'],
                'size': str(size),
                'executionType': 'MARKET'
            }

            text = timestamp + method + path + json.dumps(reqBody)
            sign = hmac.new(bytes(secretKey.encode('ascii')), bytes(text.encode('ascii')), hashlib.sha256).hexdigest()

            headers = {
                'API-KEY': apiKey,
                'API-TIMESTAMP': timestamp,
                'API-SIGN': sign
            }

            res = requests.post(endPoint + path, headers=headers, data=json.dumps(reqBody))
            print(json.dumps(res.json(), indent=2))
      line_notify(flag['order']['side'] + 'で{}通貨の成行注文を出しました'.format(size))

            return


# LINEに通知する関数
def line_notify(text):
    url = 'https://notify-api.line.me/api/notify'
    line_notify_data = {'message': text}
    headers = {'Authorization': 'Bearer ' + line_token}
    requests.post(url, data=line_notify_data, headers=headers)

この記述を追加した自動売買プログラムを実行して成行注文が出されると、LINEに次の通知が来ます。

他に通知を出したいところがあれば、LINEに通知する関数を追加してください。

おわりに

本記事では、自動売買の状況をLINEに通知する方法について解説しました。

これで、売買の方向と発注した数量をいつでも確認できるようになりました。定期的に通知を送ることで、ちゃんとプログラムが稼動しているかも知ることができます。

PythonからLINEに通知する方法は、自動売買以外にも色々なプログラムで応用することができると思うので、ぜひ活用してみてください。