忍者ブログ

設備のマニアどっとこむ

IoT開発、設備・DIYのブログ!

ラズパイで仮想通貨取引Botの作成

いままで40万円程度に低迷していたビットコイン価格ですが、最近なんと倍の80万円超えに!!

これでマイニングを再開しようと思ったのですが…



この季節部屋が28度近くなってしまいます。5月でクーラーつけるのもあれだしなあ…。

ということで今あるビットコインを増やすことにしました。


といってもいつ買っていつ売るのがいいのかわからず・・。ずっと相場をみているのもも面倒なのでBotを作ってみました。 取引所はZaifです。




まずはアカウントをとって開発者向けAPIからkeyとsecretを取得します。



後でpythonコードに入力して使います。

次にラズパイでzaifapiをインストールします。

sudo pip3 install zaifapi

python2ではエラーが出るので注意してください。

あとは下記のようなコードを書きました。
<bitcoin.py>
from zaifapi import ZaifPublicStreamApi
import csv
import RPi.GPIO as GPIO
import time
import subprocess
TARGET_CURRENCY_PAIR = 'btc_jpy'
GPIO.setmode(GPIO.BCM)
GPIO.setup(22, GPIO.OUT)
GPIO.setup(27, GPIO.OUT)
zaif_stream = ZaifPublicStreamApi()
    
for stream in zaif_stream.execute(currency_pair=TARGET_CURRENCY_PAIR):
        time_str = stream['timestamp']
        last_price = stream['last_price']['price']
        
        
           
        
        print(time_str,last_price)
        
        if   last_price > 832000:
            GPIO.output(22, False)
            subprocess.check_call(['python3','sall.py'])
            time.sleep(60)
            GPIO.output(22, True)
        if   last_price < 832000:
            GPIO.output(27, False)
            subprocess.check_call(['python3','buy.py'])
            time.sleep(60)
            GPIO.output(27, True)
GPIO.cleanup()
このコードでは832000円以上で売却プログラム sale.pyを動かし、821000円以下で購入プログラム
buy.pyを動かします。

ちなみにsale.pyとbuy.pyはこんな具合です。※keyとsecretにzaifから取得したものを入力してください。


(sale.py)
from zaifapi import *
TARGET_CURRENCY_PAIR = 'btc_jpy'
zaif = ZaifPublicApi()
zaif.last_price('btc_jpy')
zaif_stream = ZaifPublicStreamApi()
key = '***************************'
secret = '*****************************'
for stream in zaif_stream.execute(currency_pair=TARGET_CURRENCY_PAIR):
        time_str = stream['timestamp']
        last_price = stream['last_price']['price']
        print(time_str, last_price)
        
        break
zaif = ZaifTradeApi(key, secret)
zaif.trade(currency_pair='btc_jpy',
           action='ask',
           amount=0.001,
           price=int(last_price))
(buy.py)
from zaifapi import *
TARGET_CURRENCY_PAIR = 'btc_jpy'
zaif = ZaifPublicApi()
zaif.last_price('btc_jpy')
zaif_stream = ZaifPublicStreamApi()
key = '***********************************'
secret = '**********************************'
for stream in zaif_stream.execute(currency_pair=TARGET_CURRENCY_PAIR):
        time_str = stream['timestamp']
        last_price = stream['last_price']['price']
        print(time_str, last_price)
        
        break
zaif = ZaifTradeApi(key, secret)
zaif.trade(currency_pair='btc_jpy',
           action='bid',
           amount=0.001,
           price=int(last_price))
購入・売却金額は price=int(last_price))としており現在値で指していきます。amount=0.001の数字が売買するビットコインです。

残高がなかったりするとエラーで止まりますが、とりあえず自動売買ができます。
下がってから購入し、上がってから売るので儲かる… ハズ笑

マネするときは自己責任でお願いします。というかそもそもラズパイでやる必要があるのかどうか・・。

5/26  少しコードを更新しました。 エラーになってもbitcoin.pyをcronで1分に一回呼び出せば
  継続的にプログラムを動作させることができます。また、売りか買いで・・・


Lチカします!!!


→'21/3/28 NiceHashのAPIを叩いてみました。













拍手[1回]

PR

コメント

翻訳(Translate)

プロフィール

HN:
佐々木 雅史
性別:
男性
自己紹介:
2021年 ラズパイ、M5stackを用いたIoT開発を専門で受注するアルティメンテを設立。代表を務める。
・2020年ラズパイコンテスト優良賞受賞
・設備系資格多数(電験3種、消防設備士甲4、2級ボイラー技士、危険物乙4、電工2種、技術士補(電気・電子)、エネ電、フォークリフトなど)

AD

カレンダー

10 2024/11 12
S M T W T F S
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 27 28 29 30