Zaifでシステムトレードしてマイナス手数料を稼ぎたい(直球)

シストレをラーニングした(い)

結局のところ、処理を無限ループさせて、現在の価格を確認したりなんかして、事前に決めた条件を満たせば注文を出すってだけなんですよね。

……ということを、実際に動くトレードbotを見て心底実感したわけです。

マイナス手数料が欲しい

現在はbFで動かしてるんですけど、ツイッターでもちょろっと書きましたがレバレッジかけてません。
FXですけどね。

無職ゆえに万一でもリスクは取るわけには行かないという悲しみ。

……ああいや、半分くらいはバフェット語録みたいな本を読んだ影響ですけども。

で、思ったんですよ。

レバかけないならFXできる取引所使う意味ないのでは?
本当に今更すぎますが

もちろんFXの方が値動き(=損益)は激しそうですけど、zaifにはなんといってもマイナス手数料があります。

一長一短……いやどうかな……どうなんでしょうね……(聞くな)

いいや、どっちもやろう。

そう思ったわけです。
前々からzaifの手数料ボーナスを稼ぐbotは作りたいとは思ってましたし、いい機会ですからね。

どんなの作るの?

とりあえず手数料が得られることを期待して、ごく単純な売り買いが出来ればいいかなと思ってます。

そこでM2Jのトラリピじゃないですけど、コツコツと売買を繰り返して長期で利益を狙う感じになればいいんじゃないかなと。
雑ですが。

また、最終的にBTCをある程度保有しておきたいということも考えてます。

というのも、今は上がったり下がったりしてますが、最終的には上がるはずなので。

というわけで、売買のたびに若干のBTCを残す方向で考えていきます。

仕様

ぼんやりとこんな感じです。

  • 一定の金額未満でガクッと下がったら購入注文を出す
    • 単純に大きく値下がりしたところで買うと、天井で買いまくることになりそうなので閾値を設ける
    • 効率というか稼働という面では微妙そうだけどとりあえず安全策
  • 購入した時点で、マイナス手数料が発生する程度の高値で売却注文を出してあとは放置
  • 売却注文は購入金額が戻ってくる分のみ出し、残りはBTCとして保有する

儲けることではなくマイナス手数料を貰うことに主眼を置いた仕様です。
それくらいズレてたほうが目が曇らなくて良い気がします。

なお、価格が上がりすぎると閾値を設定し直さない限り動きません。
それすらもある意味では安全策になるかな……と考えてます。
そもそも高値になった金融商品で稼ごうとするのが間違っているわけで。

長期運用で最終的に高値に戻る前提なので、損切りは考えません。
二重底、三重底上等。
単純に、JPYがある限りトラップを仕掛け続けます。

最後のがわかりづらい(たぶん数ヶ月後の僕がわからない)ので補足しておくと、差益を出さない、つまり購入したときと売却したときの日本円を揃えるということです。
なんでそんなことしたいのかというと、BTCを増やしたいからですね。

具体的にはこんな感じです。

  1. 80万円で0.01BTC(8000円分)購入。
  2. 100万円で0.008BTC(8000円分)売却。
  3. 日本円の利益なし。手元に0.002BTCが残る。

いろいろ突っ込みどころはあると思いますが。
(利益発生してる扱いになるよとか、どこがコツコツだよとか)

そんな感じです。

注意点

さて、唐突なんですがここで注意点に触れておきます。

zaif取引における手数料マイナスにはいろいろと制限があります。
流石に、無制限にホイホイ配布するわけではないのです。
その制限というのがこちら。

マイナスになるのはBTC-JPYの現物取引のみ

他の通貨ペアや先物取引、かんたん取引などではマイナスになりません。
勘違いしていると悲しいことになります。

CCでアルトコインの差益売買を狙うよりはだいぶマシだとは思いますが。

takerとmakerで手数料が異なる

一般的な話ではありますが、takerよりもmakerの方が手数料が安いです。
マイナス手数料にもそれは当てはまり、makerのほうが手数料が安い、つまり多くマイナス手数料が発生します。

価格が近すぎると手数料目当てと判断される

みたいです。

判断されるとどうなるか……というと、マイナス手数料が発生しません。

enter image description here

まあ、即座に売って買ってで手数料だけ持っていかれちゃたまりませんからね。
それはわかるんですが、しかしどこまでの値幅からマイナス手数料が発生するのかはよくわからないという問題があったりします。
非公開らしいです。

これは試してみるしかないかなと思っています。

マイナス手数料を受け取るにはログインが必要

書いたとおりですが、マイナス分の手数料は即座に発生するわけではありません。

発生する都度ログインして受け取る必要があります。

ログインしなかった場合は受け取る権利を失います。

これはbotにはどうすることもできないので、ちょくちょく人力で覗いてやる必要があります。

作ってみる

とまあ前置きはそれくらいにしまして。
早速作ってみましょう。

準備

まずは環境を作成します。

cloud9にアカウントを作ります。
IDEを作成します。
python3が動くように設定を変更します。
zaifapiをインストールします。

だいたいそんな感じです。

ハロー終値

とりあえず、取引とかそういうことは無視してごくごく簡単なプログラムを作成してみます。

# -*- coding: utf-8 -*-

import time
from zaifapi import *
from pprint import pprint

if __name__ == '__main__':
    zaif = ZaifPublicApi()
    waitTime = 10

    while True:
        pprint(zaif.last_price('btc_jpy'))
        time.sleep(waitTime)

で、コンソールから実行。

$ python hoge.py
{'last_price': 829945.0}
{'last_price': 830600.0}

...

waitTime秒ごとにBTC_JPYの終値を表示します。
それだけですが、一定周期でzaifapiを叩くプログラムができました。

この延長線上に、名だたるbotが存在している……はず……!

そんな希望を抱きつつ

続きます。

参考資料

『初心者が一攫千金を目指して〜』シリーズは非常に参考になりました。
たぶんほぼ同じことをしていくと思います。

なんで同じような記事があるのに、わざわざ別口で書こうとしているのか?

というと、自分で手を動かしながらじゃないと覚えないのと、どうせ手を動かすならもう少し動かしてついでに記事にしてアクセス稼ぎしたいという打算が働くからです。

似たような記事も腐るほどありますし。

でも書いちゃうんだ。

アクセスほしいから……。

B! LINE