こんにちは、mabuiです。
公開apiの整備が進んでいない日本株に比べて、
仮想通貨のシストレは定期的にapi叩くだけで実現できますが、
定期実行のやり方はいく通りか考えられます。
- while、for文でループ処理を実行する。
- 定期実行用の外部スクリプトを用意する。
- cronで定期実行する。
1だとエラーハンドリングの処理を考えないといけませんが、
2,3だとシストレの実行ファイルの処理はシンプルに記述できるというメリットがあります。
エラーになっても終了させればいいだけですから。
今回は3のcronで定期実行する方法を書いていきます。
macのターミナルから動作確認しましたが、linuxでも同じ手順で問題ないと思います。
実行ファイルの用意
ターミナルからファイルを用意していきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# ホームディレクトリに移動 % cd % pwd /Users/hoge # testディレクトリを作成 % mkdir test # testディレクトリに移動 % cd test % pwd /Users/hoge/test # test.pyファイルを作成、viコマンドの使い方は別途調べてください。 % vi test.py # 作成したtest.pyの中身をcatコマンドで表示 % cat test.py #coding:utf-8 f = open('/Users/hoge/git/test/test.txt','w') f.write('hoge\n') f.close() |
test.pyの処理は、作成したtestディレクトリからtest.txtを開いて(ない場合は新規作成)、
hogeと書き込んで上書き保存しています。
後述しますが、ファイル先を指定する場合はフルパス指定をしてください。
crontabの設定
Mac、又はlinuxでプログラムを定期実行する場合はcronを使用します。
そのcronのスケジュールを設定するのが、crontabというコマンドです。
1 2 3 |
# cronの編集 % crontab -e |
上記コマンドでエディタが開くので、スケジュールと実行コマンドを記述しましょう。
1 2 3 |
# cron起動テスト */1 * * * * python /Users/hoge/test/test.py |
分、時、日、月、曜日の順に実行時間を設定し、そのあとにコマンドを設定しています。
各設定は半角空白を空けて下さい。
*は指定なしを指していて、
*/1で1単位おき、つまり上記の場合は1分おきの実行を示しています。
これで設定完了です。
1分後にtest.txtができているはずなので確認してみましょう
1 2 3 |
% cat test.txt hoge |
hogeが出力されていれば成功です!
トラブルシューティング
cronの初期設定では、実行シェルがbash、
実行ディレクトリがホームディレクトリになっているので注意が必要です。
なので、実行ファイルから外部ファイルの操作をする場合は、フルパスで指定しましょう。
指定のない場合は、出力先がホームディレクトリになっていたりします。
普段使用しているシェルがbashではない場合は、下記のようにbashからプログラムを実行できるか確認してみましょう。
1 2 |
bash -l -c 'python /Users/hoge/test/test.py' |
cronの設定確認方法
cronからenvコマンドを実行して、設定を確認してみましょう。
1 2 |
* * * * * env >/Users/hoge/cron_env |
実行結果
1 2 3 4 5 6 7 8 9 10 |
% cat /Users/hoge/cron_env SHELL=/bin/sh USER=hoge PATH=/usr/bin:/bin PWD=/Users/hoge SHLVL=1 HOME=/Users/hoge LOGNAME=hoge _=/usr/bin/env |
終わりに
今回は文字列をファイル出力するのみのプログラムでしたが、
この中身を
相場情報を取得するapi実行 → 相場情報を判断して、注文apiを実行
といった簡単な流れで仮想通貨シストレプログラムを作成できます。