概要
仮想通貨(今回はビットコイン:BTC)の自動売買をしてみたいなぁ。と、ふと思いまして・・・・
(「儲けてやるぞ!」という意思はなく、単なる興味で手を付けた記録にございまする。)
いろいろ調べた結果、GMOコインでラスパイを使った方法をチョイスしてみました。
きっかけ(暇なら読んでもいいよ)
Amazonの書籍を探すのが結構好きで、いろいろなキーワードで技術書などを探しては購入してます。
今回、下記の書籍(Kindle)を見つけたのがきっかけです。
■Kindle版「Python と Raspberry Pi でつくるビットコイン自動取引システム」
https://kurima.hatenablog.com/entry/2021/06/07/205703
ん~、24時間稼働させても大した金額がかからないラズパイに仮想通貨(BTC)の自動売買をさせてしまおう。というやつですね。
結論からすると、「儲かってないぞ・・・」というところで終わってますが、、、、
おそらくは、書籍に記載されているものは、すべてブログで書いてあるとは思うのと、勝手に有料なKindle書籍の中身を引用しまくるのはよろしくないので、中途半端ですが備忘録で残しておきます。
必要なもの
- Python開発環境(Python3)
- GMOコイン
- Raspberry Pi
- なけなしのお金
やってみる
STEP 1
まずは、ラズパイ側ですね。
32GBのmicroSDが転がっていたので、Raspberry Pi OSをインストールします。
■Raspberry Pi OS
https://www.raspberrypi.com/software/
基本的に、24H稼働させるけど、GUIなんて要らないので「Raspberry Pi OS Lite」を選択します。
あとは、microSDにインストールしてラスパイに挿入して電源を入れればOK。
STEP 2
続いて、ラズパイの基本的な更新をします。
$> sudo apt-get update
$> sudo apt-get upgrade -y
$> sudo apt-get dist-upgrade
$> sudo rpi-update
$> sudo reboot
そして、パスワードを変更しておきます。
(なんせ、初期状態だと必ずidが「pi」で、passwordが「raspberry」ですから・・・)
STEP 3
あとは、本に従って・・・・
Blogだと、順にこんな感じでしたね。
■Pythonで株価アラートをつくる(1)
https://kurima.hatenablog.com/entry/2020/05/10/220219
■Pythonで株価アラートをつくる(2)
https://kurima.hatenablog.com/entry/2020/05/12/223834
■Pythonで株価アラートをつくる(3)
https://kurima.hatenablog.com/entry/2020/05/16/195150
■Pythonで株価アラートをつくる(4)
https://kurima.hatenablog.com/entry/2020/05/22/213227
■Pythonでビットコインの価格を取得する(1)
https://kurima.hatenablog.com/entry/2020/05/24/220957
■Pythonでビットコインの価格を取得する(2)
https://kurima.hatenablog.com/entry/2020/05/30/173011
■Pythonでビットコインの価格をグラフ化する
https://kurima.hatenablog.com/entry/2020/06/07/160604
■Pythonでビットコインの自動取引をシミュレーションする(1)
https://kurima.hatenablog.com/entry/2020/06/27/080427
■Pythonでビットコインの自動取引をシミュレーションする(2)
https://kurima.hatenablog.com/entry/2020/07/18/155747
■Pythonでビットコインの自動取引をする
https://kurima.hatenablog.com/entry/2020/07/25/140955
結構、サクサクと読み進められますが、完成してもウハウハになれるような記述はありません。
むしろ、シミュレーションで数日で200万の資金が170万になることが書かれてますw
書籍で進めていくとハマる箇所の補足
mongoDBが入らない(ラズパイ)
作者のBlogが2020年なので、しょうがないのですが、2021/11時点でRaspberry Pi OSはbullseye (Debian 11)になっています。
そうすると、Python3は、3.7→3.9になっていたりするのは、そんなに問題ないのですが、mongoDBをインストールしようとすると
「mongoDBは、パッケージに含まれてないよ!」とエラーになります。
これ、覚えている人もいるはずですが、2018年にライセンス問題となり、2019年にいろんなところでパッケージから消されたんですよ。
■MongoDBがそのコードのオープンソースライセンスを改定、オープンソースの“食い逃げ”に むかつく
https://jp.techcrunch.com/2018/10/17/2018-10-16-mongodb-switches-up-its-open-source-license/
どうやら、この影響で、Raspberry Pi OS(bullseye)からもmongoDBが消えてしまっている。
そこで、下記を参考にbullseyeにもmongoDBを入れることにする。
pi@raspberrypi:~ $ sudo nano /etc/apt/sources.list
現在は、bullseyeのパッケージ取得先しかない(下記)
deb http://raspbian.raspberrypi.org/raspbian/ bullseye main contrib non-free rpi
# Uncomment line below then 'apt-get update' to enable 'apt-get source'
# deb-src http://raspbian.raspberrypi.org/raspbian/ bullseye main contrib non-free rpi
ここに、1つ前のbusterの取得先も追記してあげる。
deb http://raspbian.raspberrypi.org/raspbian/ bullseye main contrib non-free rpi
deb http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi ←コレ
# Uncomment line below then 'apt-get update' to enable 'apt-get source'
# deb-src http://raspbian.raspberrypi.org/raspbian/ bullseye main contrib non-free rpi
そうしたら、下記のように普通にインストールができる。
$> sudo apt update
$> sudo apt-get install mongodb-server
GMAIL送信でエラーになる
「2.1.3 メール通知」でmail_sender.pyのsend_mail()で記載通りにやるとエラーになる。
どうもMIMETextで変換していることが原因のようだったので、下記に書き換えた。
def send_mail(self, subject, body):
msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n%s" %
(self._gmail_user, self._to_address, subject, body)) ←ここ
smtpobj = smtplib.SMTP_SSL(
'smtp.gmail.com', 465, timeout=10)
smtpobj.login(self._gmail_user, self._gmail_password)
result = smtpobj.sendmail(self._gmail_user, self._to_address, msg) ←ここ
print(result)
smtpobj.close()
他
bitcoin-trader/trader.py内
act関数のpt_thとsl_thへの代入の箇所の末尾に謎の「)」がある