*

使用言語と方向性 仮想通貨の自動売買開発

公開:2017/6/21

今ならAPIの仕様の改良により、
CoinCheck、ZAIF、bitFlyer、POLONIEXの現物取引、信用取引のアービトラージ、スキャルピング、コピートレードシステムなどが作れると思いますが、基本的にはアービトラージの開発を想定しています。

それぞれの取引所で仕様やプログラミングがまったく変わってくるので、アービトラージをやるなら2社以上のAPIの理解が必要です。スキャルピングだけであれば一社をマスターすればOKです。

前提としては、
・トレードの知識がある(成行注文、指値注文、現物、信用、約定拒否、スリップ、板などが分かる)
・PHPが分かる(連想配列、変数、関数などの基本)
方を想定しています。

「WEB API? JSON? Hash? 何それおいしいの?」という方は安心してください。何とかなると思います。

仮想通貨の自動売買プログラムを書く前に、そもそもどうやってプログラムと取引を連動させるのか、という問題があります。

その問題は知っているか知らないかだけの話で、最近のイケてるWEBサービスはWeb APIというものを出しています。これを使えば、そのWEBサービスの機能を一部間借りすることができます。

基本的に出力はJSONで吐き出されますが、簡単に言えばRSSやXMLのようなやつで、何かのリクエストに対して特定の形式でレスポンスを返してくれます。

JavaScriptが一番相性がいいらしいですが、基本的にはどの言語でもいじりやすいようなフォーマットとして新しく登場しました。

JSONを処理する言語としては、個人的にはPHPが一番慣れているので、(Javascriptは何となくいけ好かないので)、PHPでWEB APIを触ってみようと思います。

さて、
コインチェックのWEB APIにはPUBLIC APIとPRIVATE APIというものがあります。その名の通り、PUBLICの方は、現在のレートや最新の約定情報などで、PRIVATEの方は、自分の残高や実際の取引などを扱えます。

コインチェックのドキュメントを見ると、サンプルのような例のようなものがあるのですが、
https://coincheck.com/ja/documents/exchange/api
PHP単体で完結できるようには書いてありません。

PHPのサンプルはなぜかハッシュを生成するところで終わっていて、
HTTPのリクエストのPHPのサンプルは掲載されていません。(「それぐらいエンジニアならできるでしょ?」ってことなのかな)

そこで、「コインチェック API サンプル」とかで検索する人が多いと思いますが、GithubにPHPのコインチェック専用ライブラリ(オブジェクト指向)があります。しかし、これもところどころ不備があって、正常に動きません。

というわけで、仕方なく自力でWEB API x PHPをいじります。

流れとしては、
PUBLIC APIでレートを取得して、PRIVATE APIで取引を行う、というシンプルなモデルです。業者間アービトラージを想定しているので、コインチェックだったり、ZAIFだったり、bitFlyerだったりすると思いますが、勉強のためと思ってください。

必要な知識としては、PHPの基本的な記述方法とトレード系プログラミングに関する注意すべきことが頭にあれば良いです。(リクオートとか約定拒否とか指値・逆指値とか)

 

 

APIでアービトラージのためのレートの比較&トレード

PUBLIC APIで取得したデータからbidとaskを抽出し、それぞれを比較します。
Private APIに比べると超簡単です。

WEB APIで取得したデータはJSON形式で返ってくるので、(いらない情報てんこ盛りで)、必要な情報だけを連想配列に格納します。

 

あとはこれをPHP上で比較するだけです。

 

ひとつ注意しなければならないのは、PUBLIC APIの取得に失敗すると、それぞれの値が0になってしまう可能性があるということです。

比較する場合は、その前に0ではないこと(取得に成功していること)を条件に入れましょう。

また、例ではメッセージを表示するだけですが、PHPなのでメール送信が可能です。

 

単位時間当たりの大量取引を防ぐ

お察しの通り、これだけの条件文では、ある一定時間に大量にトレードする可能性が発生します。

EA(為替の自動売買プログラム)の場合、public変数やグローバル変数で、「前にトレードした時刻」を記録することが可能ですが、PHPの場合、基本的にアクセスする度にデータは消えてしまいます。

ではどうするかというと、会員制サイトでよく使う”セッション”を使います。

アクセスする元のIPが常に一緒であるからこそ、できる方法です。もしPHPの起動方法がDDosチックなやり方の場合、この手法は使えません。(そんな人いないか)

つまり、
ローカルPCのブラウザ → PHPサーバー → 各取引所APIサーバー
という図式です。

PHPをXAMPPなどでローカルで稼働させ、UWSCか何かで連打する方法もありだと思います。

私は海外VPS(仮想デスクトップ)が一つ余っているので、上の方法をとりますが、将来的に自動売買させて放置するのであればVPS上でやるのが一番いいと思います。

(VPSは余力がある場合にレンタルすればOKです。)

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。

Message

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

CAPTCHA


関連記事

ビットコインアービトラージシステム※ただ使いたい人用

ここまで業者間アービトラージシステムのプログラミングの考察?をしてきましたが、 中には「中身がどう

記事を読む

[API]アルトコインのアービトラージの作り方[Poloniex Binance]

国内の取引所のAPIではアルトコインのアービトラージができない たまに「アルトコインの自動アービト

記事を読む

bitFlyerのAPIの使い方[PHP]と注意事項

APIを使ってbitFlyerからレートを取得したり、残高を確認したり、オーダーを出す方法まとめです

記事を読む

POLONIEXのAPIでビットコインのヒストリデータを取得するやり方 仮想通貨の自動売買開発

公開:2017/9/4 国内の取引所でもAPIを発行している取引所はいくつかありますが、 ビット

記事を読む

ビットコインの取引所間アービトラージの特徴と性質

現物取引のアービトラージと信用取引のアービトラージは別物 仮想通貨からトレードの世界に入ってきた方

記事を読む

 
  • fxfx.work

    (↑広告です。このサイトの管理者の運営ではありません)

     


  • 横瀬兼元(ペンネーム)です。

    プロフィール
    商材を買わせようとする偽者がいるらしいのでご注意ください。(商材販売は今も昔も一切していません。)

    ツイッター
    https://twitter.com/FxantennaC
    (埋め込みするとページ表示が極端に遅くなるので、リンクでご容赦を)
  • fxfx.work

    (↑広告です。このサイトの管理者の運営ではありません)

Translate »
ページトップへ