*

ビットコインスキャルピングの自動売買システムの作り方

「アービトラージあるからいいじゃん」ってずっと思ってたのですが、(今でも思ってる)スキャルピングに関する問い合わせが止まらないので、一応作り方を解説します。(PHP)

この記事にピンポイントで飛んでくる方が多いみたいなので一応先に言っておくと、ビットコインのAPI処理については過去記事を読んできた方を対象としています。この記事だけをいきなり読んで開発できるということはないと思うので、適宜過去記事を参照してください。

アービトラージと比較すると、取引所はどこか1社で良いので、プログラミングは楽です。問題は如何にして過去レートを引っ張ってくるかということになります。

これまでにもチラッと言及した記憶があるのですが、基本的には日本の取引所は過去レートを引っ張ってくることはできません。そのため、海外の取引所を使うことになりますが、海外の取引所のベース通貨は米ドルのため、ドルで条件付けを行います。

例によってPOLONIEXを使うので、POLONIEXのAPIについてはこれまでの記事を参照してください。

MT4/MT5などと違いPOLONIEXのAPIでは過去レートの取得に際して、UNIXタイムスタンプを使います。

UNIXタイムスタンプで指定しているのだから1秒ごとにデータを記録していてくれても良いのですが、リクエストするときにはある程度の時間幅を持たせてあげます。

おそらくですが、これはヒストリカルデータの保存方式に由来するものだと考えられます。
秒や分単位による時間ベースではなく、レートが変化したタイミングで更新情報を逐次保存しているため、このようなリクエストになっていると思います。

上の例では安全のため30秒の幅を持たせていますが、もっとシビアにしたい場合は時間幅を狭くしてください。ただし、あまり狭くし過ぎるとレートが返ってこなくなります。

さて、
現在レートは上の関数で現在時刻のタイムスタンプを引数に渡せば取得できるので、これである一定時間前のレートと現在レートが取得できます。

スキャルピングをするということは、現物取引ではなく信用取引ということなので、信用取引用のエントリーの関数と決済の関数を用意します。(現物取引でスキャもできないことはないですが、ちょっと意味合いが変わってくると思います。)

例:コインチェック
ZAIF,bitFlyerは過去記事を見てください。

エントリー関数

決済処理

決済処理をするためには現在の建玉のIDを参照する関数を先に呼び出しておく必要があります。
決済に必要なポジションの情報は取引所によって異なるので、それぞれの取引所APIのドキュメントの決済処理を一応参照してください。

ポジション情報の取得は一覧ででるのですが、めんどくさいので、
1ポジションしかとらないという希望的観測の元、適当な関数を作ります。

少し戻って、エントリー関数の引数にオーダーレートの指定がありますが、
念のためpublicAPIでレートを取得して渡してもいいですし、
成行注文の場合はそもそも関係ないので適当な数字を入れてもOKです。

あとのエントリーの条件文ですが、ドルベースなので、
ドルの値幅の間隔になれていない日本人はそのまま比較しない方が賢明です。

つまり、
(現在のビットコイン価格($))ー (一定時間前のビットコイン価格($)) > 100ドル

とするよりも
(現在のビットコイン価格($)) / (一定時間前のビットコイン価格($)) > 1%
とパーセンテージで比較した方が良いと思います。

これなら1ビットコインが10万円でも100万円でも対応できます。

決済条件については、かんたんのため固定SL/TPで勘弁してください。

こんな感じです。

建玉情報は

こんな感じで取れば、

このように連想配列で取得できます。

あとはお好きなようにこれらの関数を使って平文に条件文を書けばOKです。
基本的な構成はMQLと同じにした方が良いと思います。

ひとつ注意して欲しいのは、
ZAIFはサーバーが不安定なので、サーバーダウンや取引停止やアクセス一時停止が頻発しています。

bitFlyerは決済処理が反対売買なのですが、オーダー送信後にその約定が反映されないことがあるので、
決済しようとしてもポジション情報が取得できないことがあります。
(問い合わせて確認済みです。取引所も不具合として認めています。)

まぁ、スキャルピングするならMT4/MT5のCFDチャートでもいいような気はしますけどね。

ちなみに、
そもそも論ですが、ビットコイン単体でスキャルピングをするよりも、アルトコインを含めた”順張りイナゴ型スキャルピング”の方が現時点では戦略的に優位だと思います。

ただ、アルトコインはAPIで処理できないので、”お金を増やす”というシンプルな目標に対して最適解をとるのであれば、今は自動化には目をつぶった方が良いと思います。

もちろん、これまでに紹介したように、IEオブジェクトを使ったマクロで自動化することも不可能ではありませんけどね。(いろいろ、めんどうじゃん)

Message

メールアドレスが公開されることはありません。

このコメントはWEBに公開されるので、問い合わせ等はメールでお願いします。

関連記事

BitFlyerに自動ログインする【UWSC】

BitFlyerは国内最大手の仮想通貨取引所とうたっていますが、取引高を第三者のサイトなどで調べると

記事を読む

The results of the automated bitcoin arbitrage trading between Poloniex and Binance

These days, I made an automated bitcoin arbitrage

記事を読む

仮想通貨取引所のチャット音声自動読み上げシステムを作る4 音声読み上げAPIに投げる

最近は便利なものでWEB上でAPIを使って音声読み上げができるんですよね。 一昔前はソフトークとい

記事を読む

ローカルPCから取引所にアクセスして、仮想通貨APIの安定性と速度を上げる

これまで開発したビットコインの自動売買では、  ローカルPC -> PHPサーバー -> 取引所サ

記事を読む

ビットコイン自動売買システムの作り方 一覧

今ならAPIの仕様の改良により、 CoinCheck、ZAIF、bitFlyer、POLONIEX

記事を読む

 
  • ブログ管理人の横瀬兼元(ペンネーム)です。

    各トピックに対するコメントは各記事のコメント欄にお願いします。それ以外のご質問、ご相談などは
    infoあっとfxantenna.com
    まで
    私の偽物がいるらしいので偽物にご注意ください。
no image
【MQL4】外部ソフトなしで稼働するコピートレードツールを作る。その⑨

このシリーズは前回の投稿から1年以上あいている訳ですが、結構問い合わせ

no image
【一覧】外部ソフトなしで稼働するコピートレードツールを作る。

【MQL4】外部ソフトなしで稼働するコピートレードツールを作る。その1

no image
スマホから稼働中のEAを操作、チェックするアイディア【RDP以外で】

自動売買システムはVPSなどに設置することで24時間稼働させられますが

no image
【初心者向け】VPSでWebサーバー構築 (さくらVPSxUbuntu16.04)

今回はサーバーの構築について扱ってみようと思います。VPSを使った一般

no image
2018年中盤~の仮想通貨(ビットコイン)アービトラージの相場について

ちょくちょく「最近、ビットコインのアービトラージどうですか」という質問

→もっと見る

PAGE TOP ↑