header
HikariBlog
Webエンジニア向けブログ
初心者向け

【アルゴリズム・ロジック公開!】コインチェックAPIを使ってビットコイン(仮想通貨)を自動売買してみる!【Python】

coincheck-auto-trade-technical-analysis

以前、こちらの記事で簡単な自動売買システムを作ってみたのですが、今回はテクニカル分析を組み込んでみます。

利用するテクニカル分析は以下の3つです。

  • ボリンジャーバンド
  • MACD
  • RSI

今回もCoincheck(コインチェック)でビットコインを自動売買してみます!

環境

環境変数定義して実行したら動作するけど面倒だと思うのでDocker使ってください!

$  python --version
Python 3.9.1

$ docker -v
Docker version 20.10.5, build 55c4c88

$ docker-compose -v
docker-compose version 1.28.5, build c4eb3a1f

アルゴリズム

ざっくりとアルゴリズムを解説しておきます。

どれも有名なテクニカル分析なので詳細を知りたい方は個別に調べてみてください!

暴落対策として損失が大きい場合と損失が続いた場合は5時間取引を中止するようにしています。(共通処理)

こちらは各自で損失幅や時間を調節しても良いかもしれないです。

テクニカル分析はかじったことがある程度なのでアルゴリズム間違ってたらごめんなさい!

ボリンジャーバンド

今回はボリンジャーバンドの±2σを基準に取引してみます。

-2σで買い注文、+2σで売り注文といった感じですね。

ボリンジャーバンドの一般的な使い方となります。

MACD

ヒストグラムが負から正になったとき(MACDがシグナルを下から上に抜けるとき)に買い注文を行います。

売り注文は少し迷ったのですが、ヒストグラムが正の状態で減少したときとしました。

RSI

RSIが30を下回ったとき買い注文、RSIが70を上回ったとき売り注文を行います。

こちらも一般的な使い方ですね。

RSIが20を下回ったときに買い注文を行う方もいますね。

準備

実行環境

Python 3.9系をインストールするか、Docker環境を用意してください。

Dockerがおすすめ!

APIキー

まずはコインチェックのAPIを利用するために口座を開設する必要があります。

以下のリンクから口座を開設してください!

環境はできたのにAPIキーがなくて動作チェックできない!

という状況になりやすいので、とりあえず最初に開設しておくのがおすすめです。

実際に自動売買するには本人確認も必要です。

本人確認は数週間かかることもあるので早めに行っておくことをおすすめします。

シミュレーションモードなら本人確認なしでも実行できるかも?

アカウントを作成できたらAPIキーを発行します。

こちらのページの「新たにAPIキーを追加する」から発行します。

新たにAPIキーを追加する

以下の項目にチェックを入れて発行してください。

  • 新規注文
  • 取引履歴
  • 残高

こちらで表示されるIPアドレスをIPに入れておくとAPIキーが漏洩したときに不正アクセスを防げます。

APIパーミッション

発行できたらアクセスキーとシークレットアクセスキーを控えておきます。

ソースコード

ソースコードはGitHubで公開しています。

自分が使ってみたいアルゴリズムのコードをクローンなりダウンロードしてください!

準備

ルートディレクトリに配置されている.envのパラメータを書き換えます。

任意の値に書き換えてください!

  • ACCESS_KEY:発行したアクセスキー
  • SECRET_KEY:発行したシークレットアクセスキー
  • COIN:取引通貨(btc, etc, fct, mona)
  • INTERVAL:計測間隔
  • AMOUNT:購入金額(ビットコインの場合は500円以上である必要があります。指定しない場合は買えるだけ買います。)
  • SIMULATION:シミュレーションモード(実際に自動売買したい人はfalse)

購入分だけ売るという仕様にしたかったのですが、対応が難しそうだったので持ってる分だけ売るという仕様になっています。
すでに自動売買対象の通貨を保持している方は注意してください。

取引での損失やソースコードのバグなどの責任は負えません。
すべて自己責任でお願いします。

実行方法

ルートディレクトリで実行してください。

実行したら25分間データを取得した後に自動売買が始まります!

Dockerで実行する場合

$ docker-compose up --build

直接実行する場合

こちらの場合は.envの環境変数を実行環境に登録する必要があります。

$ python ./src/main.py

あとがき

どのアルゴリズムもpandasを使うと比較的簡単に実装できました。

いろいろテクニカル分析試してみたけど個人的にはボリンジャーバンドが一番好き。

投資とプログラミングの勉強を同時にできるので自動売買は素晴らしいです。

テクニカル分析組み込むのも良いけど自分でアルゴリズムを考えるのも良いですね。

ぜひAPIキーを取得して試してみてください!

参考

https://qiita.com/ti-ginkgo/items/7e15bdac6618c07534be

https://github.com/coincheckjp/coincheck-python