アービトラージツールを探しているならいっそ自作してみたら(自作botのすすめ)

※このページは2019/6/13に作成されました。

ビットコインアービトラージをやっていて、ツールを探している人にbot自作のメリットをお伝えします。

「アービトラージで取引を入力してる間に価格差がなくなっている」
「価格差だけでなく、注文までできるツールがほしい」
「アービトラージツールはどれを買えばいいかわからない」

という方向けにいっそbotを作ってしまえばっていう提案です。

アービトラージをやるならツールが必須

ビットコインでアービトラージをやってみたことがある方はわかると思いますが、価格差ってそんなにでないです。
(やったことない方はまずは手作業でやってみることをオススメします)

取引所の板を見ながらやっても、価格差が出るタイミングは多くて1日に数回程度なので、ツールがないとほぼ無理です。

価格差を視覚化してくれるツールは無料でもあるので、まだツールを使っていない人はまずは活用してみましょう。

取引を実際にしてくれるツールってないから自作してみては

価格差が出たタイミングで二つの取引所に取引を入力するのって面倒だし、その間に価格差が縮まってしまったりします。

ただ、取引を実際にしてくれるツールは有料だったり、ソースコードだけしかなかったりであまりないですよね。

なので、botを作ってしまいましょう。

取引を自動で入力してくれるbotを作っておくとパソコンに張り付く必要もなくなりますので、一気に作業が楽になります。
(生活にも余裕ができますよ)

APIを使うことで価格取得、注文発注までできる

実際にアービトラージbotって何するの?っていうと、取引所から価格を取ってきたり、注文を出したりします。

国内の仮想通貨取引所は自分の組んだプログラムから直接データをやりとりできる仕組みを無料で提供しています。(APIといいます)

APIって聞くと初心者の方は難しいと感じると思いますが、はじめはコピー&ペーストでも動かせますので心配しなくても大丈夫です。
(最初に使った時はなんでもっと早くやらなかったんだろ、って後悔しました)

Node.jsでアービトラージでも各取引所のAPIの使い方を載せているので参考にしてください。

Entries in 国内仮想通貨取引所APIの使い方 category - Node.jsで暗号資産アービトラージ

まずはサポートツールを目指そう

bot作成初心者の方はまずはサポートツールを作りましょう。

最終的には自動売買ツールができればよいですが、ツール開発はけっこう時間がかかるものです。

まずは「複数取引を同時注文する機能」や「価格を取得して表示する機能」など、自分が欲しい機能を中心に作っていくと自分の作りたい機能がわかったり、トレードの幅が広がっていくのを実感できると思います。

アービトラージbot自作のメリット

24時間稼げる パソコンに張り付かなくても大丈夫

ここからアービトラージbot自作のメリット・デメリットを挙げていきます。

一番はパソコンに張り付かなくてもいいことかなと思います。

botを自動売買ツールにまで仕上げることができれば仕事中や就寝中であっても自動取引を行うことができます。

プログラミングスキルがつく

アービトラージbotは仕組みは簡単ですが、複数の取引所のAPIを利用したりとコーディング量は必要です。

アービトラージbotのノウハウで別の取引ツールも作れるようになります。

同じアービトラージでもアルトコインや取引所の数だけ応用が効くので戦略の幅はかなり広がりますよ。

ツールコストがかからない

24時間稼働させるのであれば外部VPSの契約が必要ですが、費用としてはそれぐらいです。

有料ツールを購入したり、APIの利用手数料がかかるといったことはありませんのでコスパはかなりいいです。

自作bot生成のデメリット

プログラミングに時間がかかる

自作botのデメリットとしては作成に時間がかかることです。

取引ツールは自動化の範囲が増えるほどチェックロジックも増えますのでコーディングに時間がかかります。

例えば、「BTCを買うのに必要なJPYは足りているか」をチェックしておかないと、注文エラーになります。

また、アービトラージは考え方はシンプルですが、複数の取引所に同時に別々の取引を出したりと意外にbot化するのは大変だったりします。

テストもちゃんとしておかないと誤発注連発で損したりするので、テストする時間もけっこうかかります。

焦って全部作って動かないよりは少しずつ、「同時に注文する機能」や「価格を比較する機能」みたいに少しずつ作って実際に動かしていくのがいいでしょう。

バグが発生すると損失リスクがある

自作botはプログラミングでミスがあると、アービトラージのようなローリスクなトレードであっても損失が発生する可能性があります。

お金がかかっているので、念入りにbotのテストをしておく必要があります。

私はテストコードが入ったまま稼働させて5分で5000円損したことがあります。^^;

ビットコインアービトラージツール自作で損しないために気をつけたいポイント(バグが出ないように注意!) - Node.jsで暗号資産アービトラージ

まとめ 自作botはこういう人におすすめ

自作botのメリット・デメリットをあげてみました。

アービトラージのようなシステム化できる戦略はbot化して楽をしちゃいましょう。

プログラミング経験が少しでもあれば、もしくは初心者でもやってみたいっていう気持ちがあれば、それだけでもbot化をできる素質はあると思います。

まずはやってみましょう。

www.kennejs.com

www.kennejs.com

最近のビットコインアービトラージの動向・収益(2019年5月)

※このページは2019/6/8に更新されました。

この記事では私が実際に運用しているアビトラツールの収益、分析を書いています。
次のような疑問を持っている方はヒントが見つかると思います!

「ビットコインでローリスクで取引するためにアービトラージをやってみたい」
「アービトラージでツール作ったらどれぐらい儲かるのか知りたい」

過去実績(2019年2月)へののリンク
過去実績(2019年3月)へののリンク
過去実績(2019年4月)へののリンク

ビットコインアービトラージの収益

5月のビットコインの動向

5月のBTCの価格は58万円から始まり、最高97万円をつけて90万円で終わりました。

GW明けて少ししたころから暴騰して、5月中は調整も特にありませんでした。

暴騰の原因は正確にはわかっていない印象です。

また、BinanceのIEOも6月は順調で、6.7倍をつけています。

Binance 5月IEO Harmony Protocol (ONE)の結果と傾向について - Node.jsで暗号資産アービトラージ

5月の収益は3026円でした

私のアービトラージツールの収益は5月は3026円でした。(BTCの値動きを除く)

アービトラージの注文は35回のタイミングで投げていました。

今月はBITPointをツールに追加したこと、価格差の設定値を割合(%)から金額の固定値になるようにツール改修をしたので6月はもう少し利益が出るようになると思います。

価格を検知した回数

私は取引所ごとのBTCの価格差は3600円発生したら注文するようにロジックを組んでいます。

3600円の価格差を検知したタイミング、および4000円、4500円、5000円を検知した回数は以下となります。

  • 3600円以上の価格差:83回
  • 4000円 〃    :70回
  • 4500円 〃    :53回
  • 5000円 〃    :45回

※bitFlyer、coincheck、Liquid by Quoine、BITPointのいづれかで価格差を検知した回数
※残高不足で注文できなかったりするので、実際に注文する回数は減ります。

かなり単純化しますが、3600×83が他と比べて最も大きい額なので、90万円前後であっても価格差の設定値は3600円が妥当だとわかりました。

取引所の価格差はLiquid by Quoineが多い傾向に変化なし

前月の4月の分析でLiquid by Quoineの価格差発生が多いと分析しましたが、5月も傾向に変化はありませんでした。

他と比べて5-6倍程度検知できているので、Liquid by Quoineはアービトラージには絶対に必須の取引所です。

Liquid by Quoine APIの使い方

Liquid by Quoineで注文が通らない時間帯あり

Liquid by Quoineについては、原因は不明ですが、5/12の19:00頃一時的に注文が通らないことがありました。

あまり起きない事象なので様子見としていますが、再発するようなら対策が必要かなと思います。

メンテナンスに注意

前月に引き続きになりますが、アービトラージツールではメンテナンスに注意が必要です。

取引所によっては価格取得できてしまう(注文だけできない)ことにより、本来2つの取引所に注文するところ1つの取引所にしか注文が通らないことがあるためです。

5/27のコインチェックの臨時メンテナンスは全サービス停止と言いつつ、価格取得できていたため、メンテナンス時はツールは止めておいた方が安心です。

なお、日次で行われているメンテナンスもありますので、利用する取引所のメンテナンス時間は確認するようにしましょう。

おまけ 暗号資産アービトラージ&技術ブログの収益(6ヶ月目)

5月のブログ収益は51円でした。閲覧いただいてありがとうございました。

半年経ちますが、利益はなかなかでないですね。有益な情報を発信できるように改善していきます。

Binance 5月IEO Harmony Protocol (ONE)の結果と傾向について

※この記事は6/5に作成されました

Binanceの5月IEOが実施されましたので、結果をまとめていきます。

今回は抽選割当があったので、抽選して実際に売却するまでの流れを書いています。

今回保有量500BNBで挑みましたが、上場後のトレードでミスしてしまい割安で売ってしまいました。。

Binance IEOに参加してみたいけどやり方がよくわからないけど、うまく立ち回って損を避けたい!って方には参考になると思います。

おさらい:Harmony IEOの参加方法はこちら

Binance 5月実施のHarmony Protocol (ONE)は上場後約6.7倍に

Harmony Protocolは日本時間の5/28 17:00に抽選が発表され、6/1 9:00にBinanceに上場されました。

価格は1ONE=0.000092BNBで配分され、上場後は1ONE=0.000623BNBでしばらく推移していたので、約6.7倍になった計算になります。

前回のMaticと比較すると当選率は58.38%から30.82%に減少、上場後の倍率が2.3倍から6.7倍に上昇しており、Binance IEOの人気の高さがわかります。

抽選(Lottery)はどれぐらいあたるか

Lotteryは自分の抽選券の番号とBinanceが選んだ数字が一致しているかで決まります。

抽選のほとんど(約97%)は下1桁の番号になっており、今回は下1桁が1,4,8の抽選券が当たりとなりました。

番号も均等にわかれており、最大の5枚抽選券を持っていればざっくり50%の方が2枚、残りの50%の方が1枚当たったことになります。

今後当選率は下がっていくだろうことを考えると、ガチで参加する場合、5枚抽選券がもらえるように500BNBを保有しておく必要があります。

抽選に必要なBNB保有期間変更の影響は?

今回のBinanceのIEOでは抽選権利に必要なBNB保有期間が7日間(23:59(UTC)に保有している数量の平均値)に短縮されました。(実際は8日間でしたが。。)

前回は20日間かつ、1日中常に保有しておく必要がありました。

この変更の影響として以下のような傾向が見られました。

  • 前回4月は保有期間直後に大きくBNBの価格が下げたが、今回5月はBNBの変動幅は小さかった
  • 今回5月は毎日のスナップショット後(23:59)に多少の変動が発生した
  • 保有量の平均でよかったので、最初に多めに持っておけば8日間持っている必要はなかった

また、Binanceでのレバレッジ取引開始の情報も小出しにアナウンスされ、価格下落を抑える要因になったこともあり、BNB価格の大きな暴落は見られませんでした。

IEO前後での取引所トークン下落狙いのレバレッジ取引は難しくなった印象でした。

Binanceでのトークン上場後の値のつき方

Harmony Protocol(ONE)は日本時間13:00に上場されました。
上場時の値のつき方は以下のようになっていました。

- 13:00までは注文を入れることはできない
- 13:00から注文が入り始めるが、数分は最初は流動性が低く値動きが激しい

1分足

5分足

写真は1分足と5分足でどこで入るかは難しいですが、最初の1分はかなり値動きが激しい(0.000230-0.001600)ので、最低でも最初の1分は売却は様子見が良いのかなと思いました。

すぐに暴落する気配もないので数分たって安定するまでは様子見がいいかなと思いました。(投資判断は各自でご判断ください)

株式IPOとは上場後の値のつき方が大きく異なるので、株式IPOの要領で成行売りとかすると大変なことになりそうですね。

Binanceはこちらから登録できます。Binance口座開設
私の招待コード[36397991]付きのURLですので、この記事が役に立ったよって方はぜひ登録をお願いします。
※Binanceは新規ユーザ向けのお得なキャンペーンはないので、ここで登録してしまっても損はしないのでご安心ください。

BITPointのAPIの使い方と注意したいポイント

※この記事は2019/6/2に作成されました。

アービトラージ用にBITPointのAPIを利用して価格取得、注文を自動化したい方向けにBITPoint APIの使い方を解説します。

一見、「BITPointのAPIドキュメントはわかりづらい!」と感じた人も、コツが分かれば問題なくコーディングが出来るようにようになりますので安心してください。

個人的にはsymbol、pinCodeなどの変数に何を入れればいいかわからない。。とハマったのでその辺のポイントも記載しています。

(事前準備)BITPoint APIキーを発行する。

BITPointにログインして、トップページから口座管理>Smart APIキー管理に進みます。

API利用には申請が必要なので、申請が通るのを待ちましょう。

申請が通った後はSmart APIキー管理のページからAPIキーの発行ボタンを押して、利用したい機能の権限を選択してAPIキーを発行します。

BITPoint APIのドキュメントの見方

まずはサンプル通りに実装すればOK

BITPoint APIドキュメントを開くと、概要のページが表示されます。
(表示されない人は画面左側のOverview>概要をクリックしてください)

概要のページには「認証ありAPI」のサンプルコード(GET/POST)が記載されているので、サンプルコードをベースにコーディングしていきます。

「認証なしAPI」はAPIキーやシークレットの情報がいらないだけで、基本は同じです。

GETの実装方法

サンプルコードのGETは/api/account(口座情報取得)ですが、API_PATHに/api/depth(板情報取得)など、使いたい機能のURLを設定すればその機能を使えるようになります。

それぞれのAPIに記載されているQuery parametersでRequired:trueのものは必須項目なので、コードのparamsに記載します。(2項目以上ある場合は"&"でつなげます)

GETで返される値はドキュメントのResponse objectのリンクをクリックすると確認できます。(例:MarketDepthOut)

ちなみに/api/depth(板情報取得)の必須項目のsymbolは「BTCJPY」のように設定します。

画面左側のObjectsで板情報が確認できそうなSymbolInfoやTickerPriceDataをクリックするとsymbolの例が記載されています。(この辺がわかりづらい!)

POSTの実装方法

サンプルコードのPOSTもGETと同様にAPI_PATHに使いたい機能のURLを設定します。

/api/order(新規注文(現物))を例に説明すると、定数API_PATHに/api/orderを設定します。

次にparamsに必要な引数を記載します。ポイントとしては引数のフォーマットは詳細ページのBody Objectをクリックします。(例:OrderIn)

Required:trueは必須項目です。このページを参照していればpinCodeは取引暗証番号ということがわかります。(口座開設時に設定した4桁の数字です)

POSTで返される値は同様に詳細画面のResponse objectのリンクをクリックします。(例:CancelOrderOut)

BITPoint API利用時の注意事項

API利用時は日次メンテナンス時間に注意

BITPointのにも他の取引所同様にAPIが実行できないメンテナンス時間が日次で設定されています。

BITPointサービス時間より、メンテナンス時間は16:00-16:10です。

メンテナンス中の挙動としては価格取得もできないようです。
価格取得ができなければ誤発注のような致命的な動作は起こらないと思いますが、念のためシステムを止めてしまいましょう。

メンテナンスの挙動は取引所によって変わるものでありますので、ツールのロジックが複雑化しないようにどの取引所も停止するようにしておくと安心です。

先日はある取引所でAPIサービスすべて利用不可と通知されていましたが、実際は価格が取得できていましたので。。(これが原因で誤発注しました)


BITPoint以外の取引所のAPIを使ってみたい方はこちらを参照ください。

www.kennejs.com

www.kennejs.com

www.kennejs.com

ビットコインアービトラージツール作成後の実行方法(外部VPSでの起動方法)

※この記事は2019/5/31に作成されました。

前回の記事では自作アービトラージbotを外部VPSで稼働させる準備について紹介しましたが、今回は外部VPSでのツールの動かし方について解説します。

ビットコイン 自作アービトラージbotの動かし方(作ったらVPSで稼働させよう) - Node.jsで暗号資産アービトラージ

ツールの作りや動かし方の一例として、どういう風に動かすのかをイメージしてもらえればと思います。

そのため、「ツール作りたいけど何から手をつければいいのかわからない」「(前回の記事を読んで)外部VPSを使えばいいっていうのはわかったけど、その後どうすればいいの?」っていう方は目を通してみて損はないと思います。

アービトラージbotの作りの紹介

ここからはあくまで一例という前提付きで説明していきます。
みなさんのスキルレベルに合わせて使いやすいようにどんどん改良していってください。

また、Node.jsが前提となりますので、他の言語を使う場合は適宜読み替えてください。

Node.jsアプリケーションは価格判定、注文のリクエストまで

私のbotでは基本的にはNode.jsアプリケーション(例えばarbitrage.js)の基本の動きは「1.価格差のチェックをループさせて」、「2.価格差が発生したら注文リクエスト」を行なっています。
(残高チェックなどの細かいチェックロジックは入れています。)

node arbitrage.jsコマンドでプロセスを起動しますが、一度注文リクエストを出したらプロセスは終了させています。

Node.jsは非同期処理なので注文リクエスト後のアカウントの残高状態の整合性をチェックするのが難しいためだったりします。

ループはNode.js(javascript)のsetIntervalを利用して実現できます。

Linuxのシェル(bash)でnode.jsアプリケーションを繰り替えし実行する

node arbitrage.jsコマンドの実行はLinuxのシェル(bash)を使います。

シェルはコマンドを実行するためのスクリプトです。

シェルは下のように作ります。

シェル名:callarbitrage.sh

for i in {0..200000}
do
  cd /home/kennejs/server
  /usr/local/bin/node arbitrage.js >> /home/kennejs/log/callarbitrage.log
done

Linuxのスケジューラを使ったりすることを考えて、パスはフルパス(/homeから全部書く)です。

node arbitrage.jsとかもきちんと/usr/local/bin/node arbitrage.jsのようにパス指定しておかないと動かなかったりするので注意が必要です。

for構文でループさせているので、注文したりデータ取得できなかったりでnodeプロセス(Node.jsアプリケーション)が終了しても新しくプロセスを起動することができます。

シェルは以下のコマンドで起動します。

sh callarbitrage.sh

運用中はシェルを停止したくなる場面も出てくるので停止するシェルも作成しておくと便利です。

停止コマンドはざっくり言うとkillコマンドとgrepコマンドを組み合わせてプロセスを停止させます。

cronでシェル(bash)をスケジュール実行する

シェルはバックグラウンド実行することでサーバからターミナルの接続を切っても実行し続けることが可能ですが、時刻をスケジュールして再起動したくなると思います。

例えば取引所が日次メンテナンス中の場合は、Node.jsアプリケーションを停止しておかないと、誤発注が発生する可能性が非常に高いです。

メンテナンスチェックが実装できていない場合はcronを利用して特定の時刻にシェルやコマンドを実行させてアプリケーションの起動や停止を行うことができます。

cronはcrontab -eコマンドで起動してviで操作します。

これだけは覚えておきたい最低限のviエディタのコマンド - Node.jsで暗号資産アービトラージ

cronは「* * * * * (分 時 日 月 曜日)」の形式で設定します。

以下のサンプルでは毎日4時11分にシェルが実行されます。

11 4 * * * sh /home/kennejs/script/callarbitrage.sh

botの外部VPSへの配置は全量リリースがおすすめ

ここまでが外部VPSでNode.jsアプリケーションを実行する流れとなります。

ここからは自分のPCから外部VPSへbotをアップロードする手順を解説していきます。

外部VPSへのアップロード

外部VPSへのアップロードはWindowsの場合、FTPというファイル転送プロトコルを使用します。

正確にはよりセキュアなFTPSやSFTPを使います。

FFFTPやWinSCPというフリーソフトを使うことが多いです。

Macの場合はSCPというプロトコルを使用できます。
標準ソフトのターミナルからscpコマンドを使ってファイルアップロードができます。

ポイントは通常のセキュアでないFTPだと転送するファイルの中身が見られる可能性があることです。

FTPSやSFTP、SCPは通信を暗号化してから転送することができるので、中身を見られるリスクを大幅に削減できます。

Windowsからフリーソフトを利用する場合は、FTPSまたはSFTPを使う設定になっているか必ず確認してください。

ちなみにFTPSの場合、ポート989、990を利用しますので外部VPSに接続できない場合は外部VPS側のポート設定を確認しましょう。

CentOS7の場合、firewalldの設定を確認します。

なお、SFTP、SCPはSSHのポート(おそらく初期設定で22から任意の数字に変更しているはず)を利用します。

SCPを使う場合は全ファイルアップロードのシェルを作っておくのがおすすめ

SCPを使ってNode.jsのアプリケーションをリリースする際は、全ファイルアップロードのシェルを作っておくのがおすすめです。

・最新の更新ファイルをアップロードするのが漏れていた
・テスト用のconfigファイルを間違ってアップロードしてしまった

ということが起こりやすいので、全ファイルをscpするコマンドをリストアップしたシェルを用意しておくとめちゃくちゃ楽になります。

特にconfigファイルは本番用とテスト用に分けておいて、本番用のファイルだけをリリースするように設定してください。

Windowsでフリーソフトを使う場合も、上記の観点で問題ないかを意識するといいと思います。

さいごに。必要な知識について

この記事では概要しか説明できていない部分がありますが、出てきた知識でよくわからなかったものはネットで調べながらまずは手を動かしてみてください。

エンジニアの方で知識を深めたいって方はネットワークスペシャリスト対策の必読本でもあるマスタリングTCP/IP 入門編 第5版がかなり深く理解できるのでおすすめです。

ネットワークスペシャリスト試験対策本はネスペ 29 魂 -ネットワークスペシャリストの最も詳しい過去問解説がおすすめで、システムネットワーク構成等を過去問を通して理解できる良書です。

マスタリングTCP/IP 入門編 第5版

マスタリングTCP/IP 入門編 第5版

ネスペ 29 魂 -ネットワークスペシャリストの最も詳しい過去問解説

ネスペ 29 魂 -ネットワークスペシャリストの最も詳しい過去問解説

ビットコイン 自作アービトラージbotの動かし方(作ったらVPSで稼働させよう)

※この記事は2019/5/23に作成されました。

このブログではビットコインでアービトラージツール(bot)を自作するノウハウを紹介していますが、実際に作ったらどうやって運用するのかも説明しておきます。

あまりツールを運用したことがない方向けに実際に動かしているイメージを持ってもらえたらと思います。

この記事では外部サーバ(VPS)の準備の仕方について説明していきます。

外部サーバにツールを配置して実行しよう

自作ツールはVPSでの稼働がおすすめ

ツールが完成したら外部のVPS(仮想専用サーバ)を契約して外部サーバで運用してみましょう。

VPSはレンタルサーバのようなもので、月額課金で自分専用の仮想サーバをインターネット上に持つことができます。

レンタルサーバは24時間稼働しているので、自宅PCの電源を切っている時間帯であってもツールを稼働させておくことができます。

自宅PCを24時間起動しておくこともできますが、電気代やPCの消耗を考えるとVPSの方がコスパはいいかなと思います。

私はサクラVPSのメモリ512MB(月685円)を契約しています。

Node.jsのアービトラージツールは全く問題なく動きますが、スペックが不足してきたらスケールアップも可能です。

デメリットとしては多少のITスキルが必要となるので、慣れていない人はVPSの設定に時間がかかってしまうことです。
最初は時間がかかるものだと思って、まずは動けばOKぐらいの気持ちで取り組んでください。

エンジニアの方であればサーバ構築の勉強にもなるので契約して損はないのでおすすめです。

さくらインターネットのVPS

VPS利用に必要なスキル

VPS利用には多少ITスキルが必要になります。

VPSで利用できるOSは無料OSが多いです。
さくらVPSの場合標準OSとして、LinuxのディストリビューションであるUbuntu14.04、16.04やCentOS6、7、KUSANAGIなどが利用可能です。

そのため、Linuxを操作するOSコマンドやNode.jsを実行させるシェルを作成するスキルが必要になります。

ネットの知識でも構築はできますが、慣れていない人はなかなかうまく行かないと思います。めげずに頑張りましょう。

セキュリティやネットワークの知識もあった方がよいです。

さくらVPSの場合、初期セキュリティ設定のチュートリアルがあるので、記載されている内容は設定しておきましょう。

基本的には動けばOKですが、時間に余裕があればわからない仕組みは理解できるように確認しておくと勉強になるのでおすすめです。

とりあえず設定だけしたい人も、設定した内容やコマンドはエディタにメモを書いておくと、後々役立ちますので極力残すようにしてください。

VPS契約後の初期構築

VPSはレンタル直後は何も設定していない状態になるので、初期構築が必要となります。

必要なスキルでも記載していますが、さくらVPSの場合、初期セキュリティ設定のチュートリアルに沿ってOSのセキュリティ設定を行う必要があります。

API利用ではhttps通信(ポート443)を利用するので通信が通るように設定しておきましょう。

また、自分のツールに合わせて必要なセキュリティ設定を追加してください。

特にAPI通信するだけなら不要かなと思いますが、Web画面を作ったり、DB操作を入れておくとセキュリティ設定が必要になったりします。

また、APIキーの取り扱い(APIキー、シークレットキー、権限など)も見直しておきましょう。

セキュリティについては以下記事でも記載しています。
アービトラージツールを外部サーバに配置したい!これだけは確認しておきたいNode.jsセキュリティ設定 - Node.jsで暗号資産アービトラージ

Node.js(Express.js)アプリケーションをWeb公開する際のセキュリティ設定 - Node.jsで暗号資産アービトラージ

MongoDBに設定したい最低限のセキュリティ設定 - Node.jsで暗号資産アービトラージ

VPSにNode.jsをインストール

Node.jsアプリケーションでツールを作る場合、VPSにもNode.jsをインストールしておきます。

CentOS7の場合、yumコマンドを使ってnodejsとnpmをインストールします。

プログラムを作成する自宅のPCとnodejsのバージョンは合わせておいた方がいいため、nというNode.jsのバージョン管理ライブラリを利用すると便利です。

nはnpmからインストールできます。

また、プログラムで利用するライブラリもnpmでインストールします。

package.jsonの仕組みを使うと自宅のPCとVPSでバージョンを合わせられるので楽になります。

Node.jsの各種バージョンを最新化する - Node.jsで暗号資産アービトラージ

さいごに

VPSの準備を纏めてみました。VPSでプログラムを動かす方法は別記事に載せようと思っています。

VPSの構築は少し難しいですが、定期的に見直しをしてアップデートするように(まずは動かすことを目標に!)進めていくといいかなと思います。

自作アプリケーション初心者にはさくらVPSが手軽でおすすめです。


ビットコインアービトラージツール自作で損しないために気をつけたいポイント(バグが出ないように注意!)

※このページは2019/5/21に更新されました。

ビットコインアービトラージツールを自作する際に損を出さないための注意点をまとめました。

「これからビットコインアービトラージツールを作ってみたい」
「あまりツールを作ったことないけどちゃんと作れるか不安だ」

という方に読んでほしい記事です。

アービトラージツール自作で失敗しやすい(損してしまう)ポイント

テストコードやテストデータで発注してしまう

テストデータをコード上に直接記載してしまい、そのまま稼働してしまうケースです。

例えば、bitFlyerとcoincheckの価格差をテストしたい際にbitFlyer84万円、coincheck83万円など価格差が開いたテストデータを用意する必要があります。

テスト用のコード(bitFlyer84万円、coincheck83万円)を追加すればテストすることはできますが、コードを汚してしまうので通常はこのようなコーディングはしません。

バグによる誤発注も複数重なると損失が増えるので絶対に避けたいポイントとなります。

ただ、自作ツールだとテスト用の環境準備に労力もかけられないし、ちゃちゃっとテストしたくなりますよね。。

おすすめの対策はNode.jsであればjson-serverを利用して擬似APIからテストデータを取得できるように用意しておくことです。

仮想通貨取引所API利用時に必須のテストデータ用ライブラリ(json-server) - Node.jsで暗号資産アービトラージ

json-serverは導入も簡単なのでそこまで時間も取られません。

configファイルにテストモードフラグを用意して、APIと擬似API(json-server)の切り替えができるようにしておくと便利です。

本来はダメですが、どうしてもテストデータをコードを書く時も、テストモードフラグの判定を入れておくとミスが減ります。

以下はテストモードの時だけテストコードを利用する例です。万が一この状態で稼働してしまっても変数が上書かれることはありません。

if (testMode){
  bitFlyerPrice = 840000;
  coincheckPrice = 830000;
}

ちゃんとテストせずに稼働させてしまう

テストをせずにツールを稼働させてしまうのはかなり危険です。

アービトラージツールは小さな利益を拾っていく取引手法なので、バグで損失が出ると痛いです。

ツール作りは時間がかかるので焦る気持ちはわかりますが、きちんとテストしてから稼働させるようにしましょう。

また、テスト工数を減らすためにもシンプルなつくりにしておくことも重要です。

単体機能の確認(修正したコードの確認)だけでなく、「取引所からAPIでデータを取得して発注するまで」のように一連の流れを意識したテストも思わぬバグが見つかったりするので重要です。

取引手法の選定ミス

ツールのバグとは少し話が変わりますが、そもそも選択した取引手法がミスしていた場合、想定外の損失が発生する場合があります。

例えばアービトラージではビットコインを用意しておく場合は値下がりする変動リスクがあります。

「元々現物として保有しているビットコインを利用しておく」か「ビットコインの値上がりを見込める」などの整理ができていないと、アービトラージでは儲けていてもトータルの資産は減ってしまう可能性もあります。

ツール化する前に本当にその戦略で利益が取れるか実際にシミュレーションしておくと思わぬ見落としを見つけることができます。

また、ツール稼働後もモニタリングしてメンテナンスしていくことが大事です。

サンプルで私が体験した想定外の損失をあげておきます。

・発注のトリガーとする価格差が小さすぎて、約定時のずれで損した
・発注のトリガーとする価格差が小さすぎて、取引手数料で損した
・保有しているビットコイン分だけ信用取引で売りを入れてヘッジしたら、ポジション手数料が利益よりも大きくて損した
・FXと現物の価格差でアービトラージを仕掛けたら、価格差が縮まらずにロスカットされた

アービトラージツールで利益が出ない原因

次にビットコインアービトラージで損はでてないけど、利益も出ない場合の原因をあげておきます。

ビットコインの価格変動がない

ビットコインの価格変動がない場合はアービトラージで利益をあげることができません。

例えば2019年3月は値動きの幅が小さく、価格差がほとんど発生しませんでした。

ツール化できていればお金も時間も損はしないので、価格変動がないときは気長に相場が動くのを待ちましょう。

発注のトリガーとする価格差が小さい

発注のトリガーとする価格差はある程度必要です。

価格差が発生するタイミングは相場が動いている状態のことが多いので多少のバッファを入れておかないと価格変動に飲み込まれてしまうためです。

私は2019年5月現在で3600円で設定しています。月一で設定値や取引所の価格差の分析を行ってブログにも載せているので参考にしてみてください。

最近のビットコインアービトラージの動向・収益(2019年4月) - Node.jsで暗号資産アービトラージ

金額が少ない

アービトラージは仕組み上小さな収益を積み上げていく必要があるのである程度の金額が必要です。

参考までにですが、私はbitFlyer、coincheck、Liquid by Quoineの3つの取引所で120万ぐらいで運用して月0円〜数千円ぐらいの利益です。

Liquid by Quoineはやや他の取引所と価格差が生まれやすい傾向にあるので、投入できる金額が少ない場合は「Liquid by Quoine + どこか1つ」のように少ない取引所で運用するのもおすすめです。

www.kennejs.com

www.kennejs.com