仮想通貨を自動売買する自作botの作り方【コピペOKなPythonプログラムも公開】

プログラミング 仮想通貨

#本記事はプロモーションを含みます。

あなた

あなた
「仮想通貨の自動売買botの作り方を知りたいけど、何かすぐに分かる参考情報ってないかな。ビットコインの自動売買botはググったらいくつか出てきたけど、イーサリアムとか他のいろんな仮想通貨でも自動売買botを試してみたいな。」

そんなお悩みにお答えします。

現役エンジニアが、ビットコインやイーサリアムといった仮想通貨の自動売買に対応したbotをPythonで作ってみました。ソースも全部公開します。

最初は、自動売買botって作るの難しい?と思うかもしれません。でも、簡単な自動売買botなら実はものすごくシンプルに作れちゃうんです。

本記事を参考に、まずは簡単な自動売買botの仕組みや動作を理解して、実際に動かしながら慣れてみましょう。

なお、本記事は自動売買で儲けることが目的ではなく、あくまで自動売買botのプログラミングを楽しむことを目的としています。

ご注意
この記事や本サイトの情報を参考に仮想通貨のプログラムを動かす場合は、全て自己責任でお願いいたします。免責事項に記載の通り、本サイトの情報を参考にして発生したいかなる損害も責任を負いません。

この記事で分かること

  • 仮想通貨の自動売買botの仕組み
  • 仮想通貨の自動売買botの作り方

仮想通貨を自動売買するbotをPythonで自作して分かったこと

小銭がたくさん

仮想通貨の自動売買プログラムを自作して動かしてみたら、小銭稼ぎができました。

実際に、本記事で紹介する自動売買botを運用してみた結果はこの記事にまとめてあります。

仮想通貨市場の状況にもよるんですが、レンジ相場ならまず損しない感じです。

レンジ相場って何?
-> ある一定の価格帯で上がったり下がったりしている相場のこと。
引用:大和証券

自分で自動売買botを作って動かしたからこそ分かりましたが、こんなちょっとした贅沢なら実現できちゃいますね。

  • お昼ご飯を贅沢にする
  • 貯めて月一回だけ贅沢する

仮想通貨市場は、24時間365日動き続けています。

少なくとも私は仮想通貨の投資家として生きているわけではないので、毎日ずーっとチャートを見て売買するタイミングを待つのは面倒。

だから、仕事している時でも、寝ている時でも、勝手に売ったり買ったりしてくれるbotはなかなか便利です。

仮想通貨の相場が暴落したら自動売買botはどうなる?

下がり始めたチャート

あなた

あなた
「自動売買botを動かしている時に、相場が大暴落したらどうしよう?」

そんなリスクの心配もあるかと思いますが、回避方法は簡単。この2点を認識しているかどうか?です。

  • 仮想通貨は将来的に成長すると考えているか?
  • 仮想通貨の投資は少額にとどめているか?

一つずつ、掘り下げてみます。

仮想通貨は将来的に成長する?

あなたは、仮想通貨という市場や、ブロックチェーンという技術が将来的に成長すると考えているでしょうか?

「将来的に成長する可能性が高いはず!」と見込んでお金を使うのが投資です。それは、仮想通貨でも株でも同じこと。

だから、もし将来的に成長すると考えているのであれば、仮に暴落したとしても安心できますよね。

だって、「将来的にもっと伸びるから少しくらい価格が落ちてもいいか」と思考が回るので、多少暴落しようが焦りませんから。

逆にいうと、焦ってしまうということは成長すると思っていない、すなわち投資と思ってないかも?

仮想通貨への投資は少額投資にとどめている?

もう一つの暴落時のリスク対策は、少額投資。

仮想通貨市場はボラティリティが大きいので、大金を投資していると精神的に疲れます。

ボラティリティって何?
-> 価格が変動する度合いのこと。ボラティリティが大きいと、上下する価格差も激しい。

  • 今日は9万円も上がった!
  • え、今日は7万円も下がったんだけど!?

毎日こんな感情に左右されると、本当に疲れますよね。…はい、私自身がまさにそんな体験をしました笑

価格のチャートばかり気になっちゃって、そのせいで仕事や趣味に打ち込めなくなってしまうのは本末転倒です。

自動売買するのであれば、少額で十分。万が一価格が下がっても、影響は小さいですからね。

仮想通貨を自動売買するbotをPythonで自作する準備

仮想通貨の自動売買プログラミングを始める準備

それでは早速、仮想通貨の自動売買botを作る準備に入っていきます。やることはこの2つです。

  1. Pythonプログラムを動かす環境を作る
  2. 仮想通貨取引所の口座開設

一つずつ、解説していきます。

Pythonプログラムを動かす環境を作る

本記事で紹介している仮想通貨の自動売買botプログラムは、Pythonというプログラミング言語で作っています。

そのため、あなたのパソコンでPythonプログラムを動かせるようにする必要があります。

あなた

あなた
「Pythonプログラミングなんてやったことないんだけど?」

そんなあなたも、ご安心を。初めてでも絶対に分かるPython入門記事をまとめてあります。Macで入門!となっていますが、もちろんWindowsでも大丈夫です。

この記事の通りに環境を作れば、あとはコピペするだけで仮想通貨の自動売買botを動かすことができますよ。

Pythonの環境構築とか、その辺が分かっている人は読み飛ばして次にいっちゃいましょう。

仮想通貨取引所の口座を開設する

この記事で紹介する仮想通貨の自動売買botは、国内の大手仮想通貨取引所であるビットバンクを使います。

そのため、自動売買botを動かすにはまずビットバンクの口座開設をしておいてくださいね。

ここは特に説明することもなく、ビットバンクの口座開設の手順通りに手続きすればOKです。後からやると口座開設まで待つことになるので、先にサクッと開設しておきましょう。

ビットバンクの口座を開設する(公式サイト)

仮想通貨を自動売買する自作botをPythonで動かしてみよう

仮想通貨の自動売買プログラムを動かす

準備が終わったら、自動売買botを動かしていきます。流れはこんな感じです。

  1. 仮想通貨を自動売買する仕組みを理解する
  2. 仮想通貨取引所を操作するAPIキーを発行する
  3. 自動売買botを作成する
  4. botを動かす

一つずつ、やってみましょう。

仮想通貨を自動売買する仕組みを理解する

まず、自動売買する仕組みだけ簡単に理解しておきます。

コピペするだけで自動売買botは動きますが、どういう仕組みで自動売買しているのかは分かっておきたいですよね。

今回のbotプログラムで使う指標は、超シンプル。キーワードは、ボリンジャーバンドです。

ボリンジャーバンドって何?
-> 「将来の価格はだいたいこの価格帯の中に収まるだろう」という統計学を応用したテクニカル指標のひとつ。統計学上、ボリンジャーバンドの+/-2σ(標準偏差)の範囲内に収まる確率は約95.4%になる。
引用:マネックス証券

このボリンジャーバンドの+2σと-2σのラインを活用して、ざっくりこんなタイミングで自動売買をさせてみます。

  • ボリンジャーバンドの-2σを下回ったら買う
  • ボリンジャーバンドの+2σを上回ったら売る

言い換えると、「統計学的に95.4%以上の確率でおさまるはずの値動きから外れたタイミングを狙う」っていうことですね。

本記事で紹介する自動売買botプログラムの具体的な動きは、こんなイメージです。

  1. ボリンジャーバンドの+/-2σを定期的に計算して更新する
  2. 価格が-2σを下回ったら成行で買う
  3. 価格が+2σを上回って、前回購入した価格より高くなっていれば成行で売る

この仕組みなら、仮想通貨市場が将来的に成長していく限りは損しませんね。あくまで理論上は、ですけど笑

価格が下がった時に買って、上がった時に売る。超シンプルです。

仮想通貨取引所を操作するAPIキーを発行する

続いて、ビットバンクのAPIキーを発行しておきます。

APIキーって何?
-> プログラミングで連携するために必要な窓口にアクセスするための情報。

このAPIキーを使うことで、ビットバンクとこんな情報をやりとりできるようになります。

  • 自動売買する仮想通貨の価格
  • どれだけ買うか?どれだけ売るか?という指示

ビットバンクのAPIキーの発行方法は、こちらの解説記事を参考にしてみてください。

仮想通貨を自動売買するbotを作成する

自動売買の仕組みを理解して、ビットバンクのAPIキーも発行完了。あとは自動売買botのプログラムそのものを見てみましょう。

本記事で作ってみた自動売買botプログラムは、ビットコインの自動売買botです。

プログラムはたったの48行。誰でも簡単に理解できるように、なるべくシンプルにしました。

import time
import pandas as pd
import ccxt
import talib as ta

exchange = ccxt.bitbank()
exchange.apiKey = 'あなたのAPIキー'
exchange.secret = 'あなたのシークレットキー'

crypto = 'BTC'          # 取引する仮想通貨
currency = 'JPY'        # 日本円建て
interval = 60*5         # チャート足(60*5なら 5分足)
duration = 20           # 移動平均のサイズ
trading_amount = 30000  # 一度の売買で使う金額(単位=currency)

symbol = crypto + '/' + currency
position = 0            # 自動売買中に持っているポジション
last_rate = 0           # 最後に約定したレート(単位=currency)

df = pd.DataFrame()

while True:
  time.sleep(interval)

  ticker_info = exchange.fetch_ticker(symbol)
  df = pd.concat([df, pd.DataFrame({'price': [ticker_info['last']]})], ignore_index=True)

  if len(df) < duration:
    continue

  df['upper'], df['middle'], df['lower'] = ta.BBANDS(df['price'], timeperiod=duration, nbdevup=2, nbdevdn=2, matype=0)

  if position:
    if df['price'].iloc[-1] > df['upper'].iloc[-1] and last_rate < df['price'].iloc[-1]:
      exchange.create_order(symbol=symbol, type='market', side='sell', amount=position)
      print('sell ' + str(position) + crypto + ' @' + str(ticker_info['last']))
      position = 0

  else:
    ticker_balance = exchange.fetch_balance()
    if float(ticker_balance[currency]['free']) > trading_amount and df['price'].iloc[-1] < df['lower'].iloc[-1]:
      amount = round(trading_amount / float(ticker_info['last']), 5)
      exchange.create_order(symbol=symbol, type='market', side='buy', amount=amount)
      print('buy ' + str(amount) + crypto + ' @' + str(ticker_info['last']))
      position = amount
      last_rate = ticker_info['last']

  df = df.iloc[1:, :]

このプログラムを main.py にコピペして、最初の方に書いてある exchange.apiKey と exchange.secret にあなたのAPIキーとシークレットキーを入れれば完成。

コピペだけで終わらせるんじゃなくて、プログラムの詳細をもっと詳しく理解したい!っていう人は、こちらの解説記事も参考にしてみてくださいね。

ビットバンクAPIの仕組みをもっと詳しく理解したいよ!っていう人は、こちらの解説記事もどうぞ。

botを動かす前に確認しておくこと

ここで紹介しているbotを動かすときは、事前にこの2点を確認しておくのを忘れずに。

  • ビットバンクの口座へ日本円を入金
  • 売買する金額の設定

1つ目は簡単ですね。ビットバンクに日本円を入金しておかないと、当然ながらbotは動きません。意外と忘れがちなので、事前にビットバンクへ入金しておくのを忘れずに。

2つ目は、購入するビットコインの量。ビットバンクの公式ページによると、最小の取引単位は 0.0001BTC と書かれています。

具体的に計算してみましょう。例えば、2022年10月現在のビットコインの価格は、大体280万円です。0.0001BTC以上の取引が必要となると、最低でも280円(0.0001BTC x 2,800,000円)以上で売買する必要があります。

すなわち、プログラムのこの部分は280円以上に設定しておかないといけないわけですね。

trading_amount = 30000  # 一度の売買で使う金額(単位=currency)

ビットコインの価格が変動すると、最低取引単位も変化します。売買できない?と思ったら、最低取引単位も確認してみてくださいね。

セキュリティにもご注意

ここで紹介しているプログラムは、ブログ紹介用にシンプルにしてあるため、APIキーやシークレットキーをプログラムにそのまま入力するようにしてあります。

自分のパソコン以外で使用する場合には必要に応じてカスタマイズするなど、セキュリティ面にご注意ください。

仮想通貨の自動売買botを動かす

ここまでできたら、あとは動かすのみ。事前に、以下のコマンドで必要なライブラリをインストールします。

ターミナルで以下のコマンドを実行です。

pip install ccxt
pip install ta-lib

ccxtはビットバンクのAPIを簡単に使うために、ta-libはボリンジャーバンドの計算をするために、それぞれインストールしています。

インストールが終わったら、最後に以下のコマンドを打ち込めば自動売買botの動作開始です。

python3 main.py

もしPython環境を汚したくない場合は、ライブラリをインストールする前に仮想環境を作っておくのを忘れずに。仮想環境って何?っていう人も、こちらの記事を参考にしてみてくださいね。

色々な仮想通貨の自動売買botにカスタマイズする

せっかくなので、ビットコイン(BTC)以外にも、イーサリアム(ETH)やリップル(XRP)といったアルトコインの自動売買に対応できるbotにもカスタマイズしてみましょう。

アルトコインって何?
-> ビットコイン以外の仮想通貨のこと。

あなた

あなた
「将来は、ビットコインよりもイーサリアムが伸びると思ってる!」

そんな風に思っているあなたも、プログラムをちょっといじるだけで好きな仮想通貨の自動売買に切り替えることができます。

カスタマイズは超簡単。イーサリアムを自動売買するなら、以下の通り ETH と書き換えるだけです。

crypto = 'ETH'          # 取引する仮想通貨

じゃぁリップルは?と聞かれたら...もう分かりますよね。以下の通りです。

crypto = 'XRP'          # 取引する仮想通貨

あとはプログラムを実行すれば終わり。めちゃくちゃ簡単ですね!

仮想通貨の自動売買botを24時間365日ずっと動かし続けるには?

あなた

あなた
「botは動き始めたけど、パソコンの電源切ったら止まっちゃうんじゃない?」

そう思ったあなた、大正解。自動売買botをずっと動かしておくには、VPSを活用するのが便利です。

VPSって何?
-> 仮想専用サーバー。専用サーバーのように、ユーザーが自分でOSやアプリケーションなどをインストールしてカスタマイズできる自由度がある。
引用:さくらのVPS

具体的な方法は、VPSで仮想通貨の自動売買botを動かす記事にまとめてあるので参考にしてみてください。

この記事で紹介した自動売買botプログラムをどうやってVPS上で動かすのか、詳細な手順を解説しています。

仮想通貨を自動売買するbotをPythonで自作してプログラミングを身につけよう

pythonの自動売買プログラミングで達成感

本記事では、仮想通貨の自動売買botの作り方を解説しました。

あなたは、この自動売買botに可能性を感じたでしょうか?

あなた

あなた
「仮想通貨の自動売買botでお金を儲けてみたい!」

プログラミングを始めるきっかけなんて、なんでもOK。実際に自動売買botプログラムを動かしてみたら、たとえ少しの利益でも大きな達成感がありませんでしたか?

この記事ではビットバンクを活用していましたが、他にもバイナンス(BINANCE)のAPIを使った自動売買botの作り方も解説しています。

あなたの試してみたい仮想通貨にあわせて自動売買botプログラムをカスタマイズしていけば、もっともっと理解も深まっていきます。

自己責任の上で、ぜひPythonの仮想通貨プログラミングを楽しんでくださいね。