Pythonと機械学習

Pythonも機械学習も初心者ですが、頑張ってこのブログで勉強してこうと思います。

カスタムPoloniex

目次

はじめに

Poloniex APIpythonラッパーであるpython-poloniexは非常に便利なのですが、バランスデータを取得する際に自分が持っていないコインのデータも大量に出力するので、そのままでは使えません。

また成行トレードを実行する関数が無いので少々扱い難いです。(APIを使わずに、Poloniexのサイトで取引しても成行トレードはできないですが。)

FXのMT4等に慣れていると、成行トレードができないと結構鬱陶しかったりします。

Poloniexクラスを継承して機能を追加してみました。

サンプルスクリプト

Poloniexクラスを継承して、新しくCustomPoloniexというクラスを作ってみました。

以下、新しく追加した関数を使って、資産のBTC、USD換算値と、自分が持っているコインのバランスデータを出力するスクリプトです。

基軸コイン

メンバ変数としてトレード時の基軸コインを表すbasicCoinを追加しました。デフォルトで"BTC"に設定してあります。

Poloniexでは、BTC、ETH、XMR、USDTの4つが基軸コインとして扱えます。

最初は、USDと同価値の仮想通貨であるUSDTを基軸コインとして扱っていましたが、BTC以外は取引量が少なく、スプレッド(売買時の価格差)が大きいので基軸コインはBTCにしてトレードした方がいいということに気付きました。

基軸コインはBTCとして作ってありますが、恐らく(試してないですが。。)basicCoinに他のコインを指定しても動くはずです。

バランスデータ取得

Poloniexクラスには、myCompleteBalances()という、バランスデータを全コインで出力する関数がありましたが、自分が持っていないコインを省いて出力する関数myAvailableCompleteBalances()を作りました。

CustumPoloniexのインスタンスを作成し、myAvailableCompleteBalances()を引数なしで実行すると、自分が所有しているコインのみのバランスデータを出力します。

扱いやすいのでpandasのDataFrame形式にしてあります。

polo = CustumPoloniex(APIKey = myAPIKey, Secret = mySecret, timeout = 10, coach = True, basicCoin = "BTC")
polo.myAvailableCompleteBalances()

資産データをBTCとUSD換算

自分が持っている総資産をBTCとUSDに換算して出力する関数myEstimatedValueOfHoldings()も作りました。

引数なしで呼んでください。戻り値は、総資産のBTCとUSD換算値の2つです。

myBTC, myUSD = polo.myEstimatedValueOfHoldings()

成行買い

成行買いは、marketBuy()で実行できます。

例えばETHを0.1BTC分だけ買いたい場合は、以下のように呼び出してください。

polo.marketBuy("ETH", 0.1)

基軸通貨をBTCとして考えているので、買うコインの量はBTC(基軸コイン)換算値で指定するようにしました。

私は日本人なので、何かを売買する時は基軸通貨を日本円として考えた方が分かりやすいですが、それのBTC版だと思ってください。

成行買い(買えるだけ)

marketBuyAll()で自分が持っている総BTC分買えるだけ買います。

引数は以下の様に買いたいコインを指定するだけです。

polo.marketBuyAll("ETH")

成行売り

成行買いの時と反対です。関数名のBuySellに変えてください。

例えばETHを0.1BTC分だけ売りたい場合は、以下のように呼び出してください。

polo.marketSell("ETH", 0.1)

成行売り(売れるだけ)

一緒です。引数はコインだけで、持っているコインを全部売ります。

polo.marketSellAll("ETH")

その他に、オーダーブックに入っているトレード待ちのオーダーを全部キャンセルする関数cancelOnOrder()も作りました。

明示的には使いませんが、オーダー待ちがいると扱いずらいので、成行トレード関数呼び出し時に、最初でコールするようにしてあります。