仮想通貨アナライズ

エンジニア視点で仮想通貨について考察するブログ

くろしば大注目の NANJ は CoinExchangeで買えます

カテゴリ: BTCFXBOT

840f55535d42421e08adf1a34f7957b3_s

BTC-FXでは、かなり焼かれてしまって燃えかす状態なのですが、ここ数ヶ月試行錯誤して
BOT の枠組みはしっかりしたものが出来ました。

REST API と WebSocket を組み合わせたソースコードを BOT フレームワークと称して
note で有償提供する予定で、調整作業を進めたいと考えています。

このフレームワークは python のクラスとして提供する予定なので、購入者の方が
派生クラスをオリジナル BOT として販売可能にしたいと考えています。

オリジナルBOTは、私のソースコード + オリジナル BOT 作者のソースコードの2つを合わせて
実行できる、という形です。

注文処理やエラー処理など売買ロジック以外の処理はくろしばがメンテナンスしますので、
BOT作者は売買ロジックの開発に専念できるという仕組みです。
さらにBOT作者はBOTを販売することができます!この点が大きな利点ではないかと考えております。

なるべく早い時期に公開できるようがんばります。
どうぞ、ご期待下さい!!
開発することで、


bitmex-logo-testnet


私の note 「Python3+CCXTライブラリで作成したBTCFX裁量トレード補助ツールとトレードライブラリ」 (https://note.mu/kuroshiba_vc/n/na2889bff75a2) を多くの方に購入していただけました。
半額セールは終わりましたが、購入されている方がいらしゃって大変嬉しいです。

改めてお礼を申し上げます。ご購入いただき、ありがとうございました!

さて、今日の記事は新たなツール開発のためにテストしていたら spam 判定を食らったという話です。
note で販売中のツールやライブラリは問題有りません。私が新たに作成したBOTもどきで問題は起きました。

何をしていたのか?

裁量トレード補助ツールとライブラリの作成で、一通りの基本的なオペレーションは作成できたので、それを発展させ、自動で売買する BOT を自作したいと考えました。

有名な BOT を購入して動かしたり改造したりするのもよい手段ですが、やはり自作にトライしたかったのですw

BitMEX ではメイカーは手数料がもらえるので、メイカー手数料をかき集めて小銭稼ぎBOT(セコイですよね…)が作れないか試行錯誤していました。

テストネットを使えばよかったんですけど、テストネットは値動きが少ないのと本番サイトに比べて注文が通りやすいので実テストに向かないと考えました。

本番サイトって結構注文通らないんですよね…。
バックテストのみされている方がいましたら、一度本番サイトでの動作テストをオススメします。
多分、バックテスト結果より注文が通らない分、成績が落ちるはずです。

ちょっと脱線しましたが、このような本番サイトで試してみないとわからないことがあるので、1USD (レバレッジ1倍)の注文であればロングして暴落、ショートして暴騰を食らってもダメージ無いから大丈夫と思いテストを始めました。

でも、そのテスト中のツールにバグがあり、注文完了から待機の判断に間違いがあって 1USD の注文を出し続けてしまいました。
そして運が悪いことに朝食中で、注文が繰り返されていることに気づくのに遅れてしまいました。

spamアカウントと見なされた

スクリーンショットを撮り忘れたのですが、Web画面の中央にスパム行為に対する警告文?のような画面が表示されました。
慌てていたので「了解しました」ボタンをクリック。


mex

1USD のショートが残っていたのでとりあえずポジションクローズしようとしたところ…


btc

Spam!
やってしまいました…。

BitMEXサポートに謝罪

放置して良いことにはならないだろうと思い、Google翻訳を使いながらサポートに連絡。
しょぼい英語で恥ずかしいのですが、いちおう伝わったっぽいので引用します。

・私からサポートへ

My program order too many 1USD order via API.
I stop this.
I will not use it until I fix my program.
Could you cancel my spam setting?
Thank you.
・サポートから私へ最初の返事
Hello (私のメールアドレス),

Thanks for reaching out to BitMEX.

We’re taking a look at your ticket. We like to answer requests correctly, the first time. Often, this means we have to pull up some internal information to better get a sense of your request, or stop and talk directly to the co-founders. 

Rest assured your request will be handled shortly. Expect an email soon.

Best,

BitMEX

・サポートから私へ2回目の返事
Hi (私のアカウント名),

If you have more than 4 orders per symbol with a gross value less than 0.0025 XBT each, your account will be labelled as a spam account and all proceeding orders that are smaller than 0.0025 XBT in size will automatically become hidden orders.
 
Spam Account designations are re-evaluated and lifted automatically every 24 hours provided user behaviour has changed.
 https://blog.bitmex.com/notice-regarding-spam-orders/

Regards,
Robbie
BitMEX
どうやら 0.0025XBT 以下の注文を1つのシンボル(シンボルとは XBT/USD などの通貨ペアのことと思います)に4つ以上出すと spam とみなされるようです。
また、spam アカウントかどうかは 24時間ごとに再評価されるようです。

なので、私は今日はロジックの見直しとコーディングのやり直しに専念し、API リクエストは行わないようにしました。


spamアカウントと見なされないために

サポートからの回答にもあるようにちゃんとブログ https://blog.bitmex.com/notice-regarding-spam-orders/ に書いてあったんですね。
見落としていました…。

詳細は英文です。私が下手に翻訳して誤解を招いては行けない重要事項ですので、ぜひ原文を見てください。

本番サイトでのテストはよーく確認してから実施しましょう。
かっこわるい話ですが、同じ目に合う人が出ないように記事にしました。

b65ccf5e922909a50952ff4a74257d51_s

CCXT ライブラリを使い自分が実装したい機能を粛々と作っています。
でも、ライブラリや BitMEX API の仕様がよく分からなくて難航しています…。

今日は、やっと Post Only で注文が出せるようになりました。
BitMEXAPI

明日は実行した注文がちゃんと通っているかどうか、注文が通った場合のストップ成行の設定方法を調べようと思います。

注文条件をチェックして、条件にマッチしたら注文とクローズ。
大まかにはこんな感じなんですが、作っていくといろいろな問題にぶつかりますねw

なお、Post Only で注文が失敗しても注文 ID は発行されるみたいですね。
注文後は、ポジション持っているかどうか見るのが簡単なのかもしれません。

2724eb202a20932a8f6545256c98acd6_s

進捗が今一つで早くしないと有料noteブームに乗り遅れそうなので急ぎたいBOT開発についてです。

このところの BTC の値動きが、有名な方の BOT が影響しているのではという噂が立ち始めているようですね。
売買ロジックも公開されたという話もあり、なんか泥沼化してしまうのかなと静観しております…。

さて、私も売買ロジックはしょぼいながらもいくつかアイディアがありまして組み込んでテストしたいのですが
時間が取れずに遅れてしまっています。

他の BOT 開発者が気づきづらい(そんなことないという反論はあると思います)細かい処理を書いております。
お金を扱うプログラムなので、慎重に慎重を重ねたライブラリにしたいと思います。
サーバは何が起こるか分かりませんので。

bash がコアダンプする状況って想像できますか?(コアダンプしたのは実話)

ライブラリの中身はお見せできないのですが、例えば、BitMEX テストネットに接続出来るかどうかをテストするプログラムはこんな感じになります。

$ cat test.py 
#!/usr/bin/python3

import libtrade

trader = libtrade.libtraderclass({'apiKey': 'XXXX','secret': 'YYYY'})

trader.doTest()
$ ./test.py 
6808.0
6812.0
^CSignal Catch
$
apiKey, secret の設定は必要ですけど、doTest メソッドの呼び出しをするだけでテストできます。
エラー処理、多重起動防止、シグナル補足処理もやっています。
※ クラス名、変数名は変更予定有り。あくまで現時点での内容です

できれば、今月半ばまでに作成とテストを終わらせ解説を付けて今月中にリリースしたいと考えています。
プログラムの動作不良で損をするようなことが減らせるようにしたいです。
プロセスが強制終了、サーバ再起動なんかでどうしようもない場合があるので完全防止は無理ですが…。

自分の今までの経験が一番活かせるタイミングが来たと思っています!

cc0160170659_TP_V

BTCFX用 BOT を作るために奮闘中です!
デスクトップ環境は Linux (Ubuntu派生ディストリビューション)なのですが、24時間起動している自宅サーバ FreeBSD で動かしたいので、セットアップしました。

なお、BOT 作成のため、AKAGAMIさんのnoteを購入してコードを参考にしています。
※ 有料ページに記載されたコードを使っているため、python コードを公開できません。すみません。


FreeBSD のセットアップ

BTCFX から大きく外れてしまうのでここは省略します。
インストールメディアから普通にインストールすれば OK です。いまなら、バージョンは 11.1 がよいでしょう。
インストール後に特に変わった設定はしていません。

FreeBSD公式サイト https://www.freebsd.org/ja/
豆知識ですが、PlaySation 4 の OS は FreeBSD ベースなんですよ。


Python3 のセットアップ

FreeBSD にはパッケージシステムがありますので、これを利用します。
python のインストール、python のパッケージシステム pip のインストール、BitMEX に接続するためのライブラリ ccxt をインストールしていきます。

$ su
# pkg install python36-3.6.4
# pkg install py36-pip-9.0.1
# rehash
# pip-3.6 install ccxt

pip20180325

pip インストール時にこんなメッセージが出ますけど、

pip2018032502

--user なんか知らん!と言われるので --user 無しで構わずインストール。
/usr/local/lib/python3.6/site-packages/ に ccxt ライブラリがインストールされます。
初めて python をインストールした環境なら影響はないでしょう。FreeBSD はベースシステムに python は入ってないですし。
なお、cctx という似たような名前のライブラリが有ります。スペルミスに気をつけてw
(私はスペルミスして cctx を一度インストールしてしまいました…w)

BOTスクリプトの作成

python のパスが /usr/local/bin/python3.6 になるだけで、AKAGAMI さんのスクリプトがそのまま使えます。

btcbot_2018032501

こんな感じです〜。

サーバで実行するので、コンソール出力よりも syslog に落としたほうがよいので、自己流に改造していきたいと思います。

↑このページのトップヘ