ビットコインのアービトラージBOTプログラム:サンプルコード+解説

こんにちは、higoxです!
私は2017年の10月にビットコイン を使った アービトラージ をはじめました。それはPythonを使用した「BOT(プログラム)」を作成し、自動で売買を行うというものです。
アービトラージを初めてこの半年の間、BOTプログラムのバージョンアップをし続け、現在ではなかなか安定して動作し、利益を上げてくれるようになってきました。実際に月単位の収益でみたとき、この半年間でマイナスになった月は1回もありません。
「これはいけるのでは?」と感じ、今回サンプルコードの公開に踏み切ってみました。

毎月の損益報告等は以下のブログで毎月行っています。

こちら [ http://arbitrage.hatenablog.com/ ]

からご確認いただけます。また、BOTが取引動作を行った際には、

こちら [ https://twitter.com/hig0x_bot ]

に自動でTweetされています。公開のサンプルコードでアービトラージを行った場合の動作頻度等の確認にご使用ください。

本note記事のアップデートリストは

こちらhttp://arbitrage.hatenablog.com/entry/2018/08/26/100802 ]

で公開しています。また、私は日中、普通のサラリーマンとして生活しておりますので、コメント欄・twitter等での質疑応答には基本的に対応できないことをご了承ください。

最近、本note記事に対し、「喜びの声」をいただけるようになってきました!とても嬉しかったので、そのうちの1つをここで紹介させてもらいます。

本当に励みになります!ありがとうございました!

サンプルコードと記事内容

公開するコードはpython3で書かれています。また、現在公開中のサンプルコードは

・「Zaif」、「CoinCheck」間
・「Zaif」、「Bitflyer(FX)」間
・「Zaif」、「Liquid(Quoinex)」間
・「Coincheck」、「Liquid(Quoinex)」間
・「Bitflyer(FX)」、「Liquid(Quoinex)」間

でアービトラージを行う5バージョンのものです。

私は普段「Liquid(Quoinex)」、「CoinCheck」間でのアービトラージを行っていますが、現在「CoinCheck」は新規に口座開設することができない状態にありますので、他の組み合わせのBOTも作成し、公開することにしました。

※2018/11/3追記:
現在、Liquid(旧Quoinex)、CoinCheckとも新規口座開設受付中です!

また、

・アービトラージに関して、基本動作原理
・プログラムの実行環境の構築として、Windowsにおける「Anaconda3」のインストール方法
・BOT運用に関するTOPICSとして、Windows環境でのBATファイルを使った繰り返し実行、RaspberryPiやAWS Cloud9での設定方法

も解説しています。

では、早速解説に移っていきましょう。

アービトラージとは

まず、今回公開するBOTが行っている「アービトラージ」という取引手法を説明いたします。アービトラージは裁定取引とも呼ばれる、「同じ商品」が「異なる市場」では「異なる価格」で売買されることを利用して利益を出そうとする取引手法です。

噛み砕いて説明すれば、市場A(例えばディスカウントショップ)で100円で購入したコーラを市場B(例えば富士山山頂)で500円で販売することで、400円の利益を得ようとする取引手法ということになります。

この続きをみるには

この続き:86,596文字/画像40枚

ビットコインのアービトラージBOTプログラム:サンプルコード+解説

higox

2,000円

この記事が気に入ったら、サポートをしてみませんか?気軽にクリエイターを支援できます。

76

higox

仮想通貨

3つのマガジンに含まれています

コメント700件

>さえぐささん、Katsuさん

同様の症状が出ましたが取り急ぎbotが動き出しましたので、自分のやった作業を記しておきます。

<全文検索で”quoinex”→”liquid”にすべて置換>

取引所の名前が変わりccxt内部で引用する対象がliquidに変化しているようです。パイソン詳しくないのであってるか自信ありませんが。

あとこれは単なる自分のケアレスミスでしたが、ログファイルのアドレスを入れる際にアドレスだけ入れて”\ファイル名”を入れなかったため、ファイルがないよ~ってエラーが出続けてました。
そりゃ任意の名前つけてるのにその名前もちゃんと指定しなかったら探せるはずないですよね・・・

以上、higoxさんに感謝しつつ後続の方へのメモとして。
higox様
ノートを購入させていただきました。
運用を開始してもう少しで1週間です。

windows10
anaconda3
zaif-bitflyer(FX)
tmp_spread
にて運用しております。

最初は設定が分からずポジションを持つごとにマイナスとなってしまいましたが、徐々に設定値が分かってきてプラスに転じました。

しかし、先日おかしなことが起こりました。
テスト稼働だと思っているので少ないロットの0.02で運用を行っているのですが、なぜかBitflyerだけ0.04のポジションを持っていました。
運悪くポジションと逆方向に大きく動いてしまったので、せっかくのプラ転がマイナスになってしまいました。

もちろん手動でポジションを持ったという事はありません。
何か原因が考えられるでしょうか?

また対策があればご教授いただきたいと思います。
よろしくお願い致します。

※追記 2019.7.11
同じ状況を確認できました。
unspread決済後にBitflyerだけ決済がされておらずポジションを持ったままの状態でした。
最近、下記のようなエラーが表示されます。

Traceback (most recent call last):
File "Coincheck-Liquid.py", line 258, in <module>
spread = auto_th(spread_Th , unspread_Th , tmp_spread)
File "Coincheck-Liquid.py", line 195, in auto_th
ticker2 = exchange2.fetch_ticker(pair2)
File "/usr/local/lib/python3.6/site-packages/ccxt/liquid.py", line 263, in fetch_ticker
return self.parse_ticker(ticker, market)
File "/usr/local/lib/python3.6/site-packages/ccxt/liquid.py", line 198, in parse_ticker
length = len(ticker['last_traded_price'])
TypeError: object of type 'float' has no len()

どなたか解決策をお持ちでしたら教えていただけますでしょうか?
コメントを投稿するには、 ログイン または 会員登録 をする必要があります。