

仮想通貨の自動取引プログラムを作っています。システムトレードは昔FXが流行った時代に少しだけ勉強したんですが、当時はうまくできませんでした。今は各取引所がAPIを提供しており、作りやすくなりました。
本稿では、仮想通貨トレード用ライブラリccxtの紹介と、それを使ったテクニカル指標の動作確認プログラムを提示します。
各取引所はそれぞれ、自分の取引所用のトレード用APIを公開しています。A取引所のAPIとB取引所のAPIは異なるわけです。A取引所用プログラムをB取引所に持って行っても使えません。ccxtはその取引所間の互換性を提供します。ccxtを使ってプログラムを作ると、A取引所でもB取引所でも(ほぼ)同じプログラムが使えます。
ccxtはここから取得できます:
実際は取引所間で少し動きが違うので、100%の互換性はありません。動きが違うとは、例えばA取引所では成り行き購入時の価格が取得できますがB取引所では取得できないといったことです。それはccxtのせいではなく、取引所固有のAPIがそういう機能を提供していないということになります。
成り行きの購入はこんなかんじでできます。言語はpythonです。exchangeはbinanceやkucoinなどの取引所インスタンス、pairは"BTC/USDT"などの通貨ペア、volumeは購入数です。
order = exchange.create_market_buy_order(pair, volume)
if order["price"] == None:
ask = 0.0
print("BUY(VOLUME{})".format(volume))
else:
ask = float(order["price"])
print("BUY(PRICE{} VOLUME{})".format(round(ask, 4), volume))
私は、取引プログラムをkucoinで動作確認して、binanceを本番環境として動かしています。kucoinはときどき取引所に起因するエラーが発生し安定性がbinanceより低いので、そうしています。また、取引所の制約として、サーバに負荷をかけすぎるプログラムの書き方はできません。適切なsleep(処理間の休止時間)が必要になります。それは、ccxtを使う・使わないにかかわらず必要です。
自動取引プログラムを何個か作りましたが、なかなかうまく儲けられませんでした。そこで、世にいろいろあるというテクニカル指標をプログラムに取り入れればいいのではないかと考えました。そしてその前に、テクニカル指標を評価するプログラムが必要だと思いました。
テクニカル指標が示す売り買いのシグナルと、実際の市場の値動きを比較して、適切なテクニカル指標を採用すれば勝てる確率が高まります。各種テクニカル指標のアルゴリズムやプログラムはネット上にあふれています。そこからプログラムを持ってきました。書き方の好みがあるので、自分流に書き直しました。取ってきたテクニカル指標は以下です。
・CCI
・MACD
・RSI
・ボリンジャーバンド
・サイコロジカルライン
・ROC
・ストキャスティクス
・スーパートレンド
・OBV
・ADX
これらを評価したところ、
・CCI
・RSI
・ボリンジャーバンド
・サイコロジカルライン
・ストキャスティクス
この5つの反応がなかなか良かったです。もちろん、他の指標も実績があるものであり、単にプログラムの書き方がまずくてうまく機能しなかっただけかもしれません。
上に挙げたテクニカル指標が出す売り買いサインや値を出力するプログラムを以下に示します。ccxtを使っています。このテクニカル指標を使って、例えば
・5つ以上の指標が同時に買いを推奨したら買い
・4つ以上の指標が同時に売りを推奨したら売り
・3つ以上の指標が同時に売りを推奨した、かつ現在価格が買値を上回っていたら売り
のようなストラテジを考え、自動取引プログラムにするとなかなかうまく売買できています。ウクライナ問題で地合いがかなり悪く、賭け金も少ないので全然儲かってはいませんが(^^;
ccxtは無料版と有料版があります。私は無料版を使っていますが、有料版もチェックしてみます。仮想通貨取引では複数の取引所を使うのが普通だと思いますので、取引所間の互換性を高めるccxtのようなライブラリはトレーダーにとって必携のツールといえます。
以上










