プログラミング

OANDA シストレ(oandapyV20) の始め方 【関数編3】

投稿日:2020年10月31日 更新日:

OANDAで、シストレ/APIを利用する際にお世話になる関数の紹介です。

OANDA シストレ(oandapyV20) の始め方 記事一覧

もくじ

  • 関数の定時実行
  • 文字列のLINE通知
  • DataFrameを画像化しLINEに送る
  • 処理時間の計測

関数の定時実行

登録した関数を、定時に実行します。python3 -m pip install schedule --userが事前に必要。下記の例では、毎時00分にjobという関数を実行。

import schedule
import time

def job():
    print("I'm working...")

for i in range(24):
    schedule.every().day.at("{:02}:00".format(i)).do(job)

while True:
    schedule.run_pending()
    time.sleep(1)

文字列のLINE通知

文字列をLINEで通知をしてくれる。業務中にも、こっそりと取引の様子を見たい人向け。下記の下準備が必要です。

  1. こちらからログインする
  2. 右上の自分のユーザー名をクリックし、マイページへ
  3. 「トークンを発行する」をクリック
  4. トークン名を記入 (これは毎回、通知メッセージの最初に表示される)
  5. 「1:1でLINE Notifyから通知を受け取る」を選択し、発行するをクリック
  6. 表示されるトークンをメモする
import requests

def line_notify (message):
    line_notify_token = 'please_get_and_put_your_token'
    line_notify_api = 'https://notify-api.line.me/api/notify'
    payload = {'message': message}
    headers = {'Authorization': 'Bearer ' + line_notify_token}
    requests.post(line_notify_api, data=payload, headers=headers)
    print(message)

line_notify('テストメッセージ')
テストメッセージ
# (LINEには「[トークン名] テストメッセージ」の形式でメッセージが来る)

DataFrameを画像化しLINEに送る

DataFrameをLINEで見ようと思うと、LINE Notifyが添付は画像しかできない関係上、画像化してから送りつける必要があります。

事前にpython3 -m pip install matplotlibをしてあげた上で、下記のコマンドで対応できます。サイズ制限があるので、あまり大きい画像は送れません。

import matplotlib.pyplot as plt

def line_notify_image (df, image):
    fig, ax = plt.subplots(figsize=(3,3))
    ax.axis('off')
    ax.axis('tight')
    ax.table(cellText=df.values, colLabels=df.columns, loc='center', bbox=[0,0,1,1])
    plt.savefig(image)
    
    line_notify_token = 'REPLACE_YOUR_TOKEN_HERE'
    line_notify_api = 'https://notify-api.line.me/api/notify'
    payload = {'message': image}
    headers = {'Authorization': 'Bearer ' + line_notify_token}
    files = {'imageFile': open(image, "rb")}
    requests.post(line_notify_api, data=payload, headers=headers, files=files)
    print(image)

line_notify_image(df, 'test.png')
# 下記の画像がLINEに送信されるはずです
test.png

処理時間の計測

calc()で挟んだ部分の処理時間を計測 (こちらの記事を参照)。

start = 0
def calc ():
    global start
    if start == 0:
        start = time.time()
    else:
        print(int((time.time() - start) * 1000), 'ms')
        start = 0

calc()
for i in range(100):
    print('.')
calc()
.
.
.
.
.
.
.
.
.
.
11 ms


-プログラミング
-, , , , ,

執筆者:


  1. […] ross、dead_cross関数についてはこの後すぐ、記載しています。結果が気になるので、line_notify関数でLINE通知をさせるようにしています。このline_notifyについては、過去記事を参照ください。 […]

comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です



関連記事

no image

Twitter API 使い方 PHP クイックスタート

Twitter API (PHP) の、クイックスタート記事です。 前提条件 Twitterアカウントは所有済みXserverを利用WordPress環境独自ドメイン設定済みPHPからTwitter …

no image

OANDA シストレ(oandapyV20) の始め方 【関数編2】

OANDAで、シストレ/APIを利用する際にお世話になる関数の紹介です。情報は、基本的に公式ドキュメント (英語) から引っ張ってきています。 OANDA シストレ(oandapyV20) の始め方 …

no image

OANDA シストレ(oandapyV20) の始め方 【関数編1】

OANDAで、シストレ/APIを利用する際にお世話になる関数の紹介です。情報は、基本的に公式ドキュメント (英語) から引っ張ってきています。 OANDA シストレ(oandapyV20) の始め方 …

no image

OANDA シストレ(oandapyV20) の始め方 【Pandas編】

OANDAで、シストレ/APIを利用する際にお世話になるPandasの紹介です。 OANDA シストレ(oandapyV20) の始め方 記事一覧 導入編関数編1関数編2関数編3Pandas編 ←本記 …

LINEで管理できるTODOソフトを自作する

TODO管理については、Google・Apple・Microsoftの超大手のアプリから、Todoist等の大手TODOアプリから、GTD等の方法論まで入り乱れています。 個人的にどれもしっくりこなか …

プロフィール

タクマ
−−−−−−−−

東南アジア(ミャンマー&フィリピン)でNW系システムインテグレーターとして6年ほど駐在していました。本を1500冊以上読んだり、プログラミングをしたりしています。嫁さんはタイ人で、タイ在住です。
ーー
「〇〇を分かりやすく解説!」系のスカスカな記事を見ていると頭が悪くなりそうなので、対抗して、少し骨のある記事を書こうと考えています。
ーー
Twitter (@tkm_nkmr)
ーー
Twitterまとめのまとめ
YouTube Find!
SNS Trends

−−−−−−−−