BitflyerのRealtime APIとHTTP APIのスピード確認
自分用メモ
アビトラ仲間とRealtime APIとHTTP APIどっちが有利(早い)?って話題になり簡単に調べてみました。
※CFD関連のやり取りの中でAkagamiさんのコードがHTTPのコードで0.2秒間隔で調べていたのが理由だったかな。
■結論
Realtime APIの方が有利
計測したタイミングではRealtime APIの調子が良かった可能性もあります。
継続して調べないとですが、今後はRealtime APIで行うかなーと。
個人的にはHTTP APIの方が有利と考えていたのですがね。
Realtime APIは
BF=>pubnub=>私
で一度pubnubが入るので遅くなるのかなーと考えたのですが関係ないのかな。面白い。
●HTTP APIのコード 0.2秒で回してます。
require 'json' require 'open-uri' def bitflyer_ticker bitflyer_content = open("https://api.bitflyer.jp/v1/getticker?product_code=FX_BTC_JPY").read bitflyer_json_data = JSON.parse(bitflyer_content) puts bitflyer_json_data end loop do bitflyer_ticker sleep(0.2) end
●Realtime APIのコード Threadで回してます。
require 'pubnub' pubnub = Pubnub.new( subscribe_key: :'sub-c-52a9ab50-291b-11e5-baaa-0619f8945a4f' ) callback = Pubnub::SubscribeCallback.new( message: ->(envelope) { puts envelope.result[:data][:message] }, ) pubnub.add_listener(callback: callback) pubnub.subscribe( channels: :lightning_ticker_FX_BTC_JPY )
同一tick_idを取得した時の時間で判断しています。
比べてみると値も違う。。。うーん。よく分からん。
timestamp => Realtime APIの方が細かい(分かる)
volume => HTTP APIの方が大きい(何でだ?)
●Realtime API : 2018-02-27T00:22:49.522197+09:00 {"product_code"=>"FX_BTC_JPY", "timestamp"=>"2018-02-26T15:22:49.4725577Z", "tick_id"=>5709931, "best_bid"=>1167756.0, "best_ask"=>1168307.0, "best_bid_size"=>0.3, "best_ask_size"=>0.192, "total_bid_depth"=>7076.31794998, "total_ask_depth"=>7217.54367532, "ltp"=>1168307.0, "volume"=>212517.22922876, "volume_by_product"=>212517.22922876} ●HTTP API : 2018-02-27T00:22:49.752111+09:00 {"product_code"=>"FX_BTC_JPY", "timestamp"=>"2018-02-26T15:22:49.473", "tick_id"=>5709931, "best_bid"=>1167756.0, "best_ask"=>1168307.0, "best_bid_size"=>0.3, "best_ask_size"=>0.192, "total_bid_depth"=>7076.31794998, "total_ask_depth"=>7217.54367532, "ltp"=>1168307.0, "volume"=>241860.53936067, "volume_by_product"=>212517.22922876} ●Realtime API : 2018-02-27T00:22:49.740460+09:00 {"product_code"=>"FX_BTC_JPY", "timestamp"=>"2018-02-26T15:22:49.6913048Z", "tick_id"=>5709941, "best_bid"=>1167756.0, "best_ask"=>1168307.0, "best_bid_size"=>0.3, "best_ask_size"=>0.191, "total_bid_depth"=>7074.57794947, "total_ask_depth"=>7216.65467463, "ltp"=>1168307.0, "volume"=>212516.73022876, "volume_by_product"=>212516.73022876} ●HTTP API : 2018-02-27T00:22:50.282736+09:00 {"product_code"=>"FX_BTC_JPY", "timestamp"=>"2018-02-26T15:22:49.69", "tick_id"=>5709941, "best_bid"=>1167756.0, "best_ask"=>1168307.0, "best_bid_size"=>0.3, "best_ask_size"=>0.191, "total_bid_depth"=>7074.57794947, "total_ask_depth"=>7216.65467463, "ltp"=>1168307.0, "volume"=>241859.98336067, "volume_by_product"=>212516.73022876} ●Realtime API : 2018-02-27T00:22:52.435204+09:00 {"product_code"=>"FX_BTC_JPY", "timestamp"=>"2018-02-26T15:22:52.3318326Z", "tick_id"=>5710051, "best_bid"=>1167001.0, "best_ask"=>1168297.0, "best_bid_size"=>2.0, "best_ask_size"=>0.128, "total_bid_depth"=>7088.98601025, "total_ask_depth"=>7221.5526761, "ltp"=>1168297.0, "volume"=>212519.53022876, "volume_by_product"=>212519.53022876} ●HTTP API : 2018-02-27T00:22:52.609640+09:00 {"product_code"=>"FX_BTC_JPY", "timestamp"=>"2018-02-26T15:22:52.333", "tick_id"=>5710051, "best_bid"=>1167001.0, "best_ask"=>1168297.0, "best_bid_size"=>2.0, "best_ask_size"=>0.128, "total_bid_depth"=>7088.98601025, "total_ask_depth"=>7221.5526761, "ltp"=>1168297.0, "volume"=>241863.29742067, "volume_by_product"=>212519.53022876} ●Realtime API : 2018-02-27T00:22:54.955391+09:00 {"product_code"=>"FX_BTC_JPY", "timestamp"=>"2018-02-26T15:22:54.8942429Z", "tick_id"=>5710222, "best_bid"=>1167360.0, "best_ask"=>1167546.0, "best_bid_size"=>0.001, "best_ask_size"=>0.085, "total_bid_depth"=>7096.42533749, "total_ask_depth"=>7227.9853132, "ltp"=>1167546.0, "volume"=>212477.26625105, "volume_by_product"=>212477.26625105} ●HTTP API : 2018-02-27T00:22:55.408496+09:00 {"product_code"=>"FX_BTC_JPY", "timestamp"=>"2018-02-26T15:22:54.893", "tick_id"=>5710222, "best_bid"=>1167360.0, "best_ask"=>1167546.0, "best_bid_size"=>0.001, "best_ask_size"=>0.085, "total_bid_depth"=>7096.42533749, "total_ask_depth"=>7227.9853132, "ltp"=>1167546.0, "volume"=>241820.94944296, "volume_by_product"=>212477.26625105}
今回比較してみて感じたのはRealtime APIの方が細かく取得出来ているのでガチで行うのであればRealtime APIですかねーBitflyerサーバにも優しいでしょうし。
binanceの3点アビトラを行ってみました。
キッカケはこの記事"仮想通貨の3通貨間アービトラージ戦略って?裁定取引が出来るバイナンスで稼ぐ方法"
もしBinanceのアカウントもってない人は作成してみる事をお勧めします。
https://www.binance.com/?ref=15639009
私もBinanceで取引している時にうっすら出来るかなーって考えはしましたが実行していませんでした。
普通の二点間のアビトラと違って、同じ取引所で取引を行うので資産を分散させたくない人にはお勧めかもしれません。
※後で知ったのですが以前お打ち合わせをした方がブログを運営しておりました。
早速検証してみました。(現在検証中ですので途中経過報告とお考え下さいませ。)
結果からお伝えするとブログに書いてある方法そのままでは利益が出ないと考えた方が良いです。
※以下キツイ書き方になっていますが、他意はなく行おうとしている事及び発想は素晴らしいと考えていますのでご安心下さい。
1.価格取得の仕方がダメ
通常アビトラを行う上で重要なのがbidとaskの価格になり、その価格取得を一切行っておりません。
2.手動(エクセル)で計算していてはダメ
エクセルダメって事ではなく手動では利益出にくいと考えます。
データコピペして貼り付けて、通貨選定して購入して、ETHで売ってBTCに売る。どんなに早くしても10秒程度掛かるのかなーと。
その他にもブログ内で書かれているアビトラで誤解を招く様なメリットデメリットが書かれていますが、まぁ気にせずで。
データコピペの部分だけでもAPIを使えば多少は早くなるかもです。
例えばコレとか=> https://api.binance.com/api/v1/ticker/allPrices
ダメ出しばかりしていても建設的ではないので利益出る可能性として。
1. bid, askの価格で計算を行う。
2. プログラムで動かす。
になるかと。
って事で3点アビトラの取引プログラムを作成してみました。
結論から言うと利益でません。 手数料で死にます。
検証で2日行い数時間程しか動かしていないのでまだ可能性が0ではないのですが光が見えないかなーと。。。誰か光が見えた人こっそり教えて欲しいです。
状況としては0.01BTCでテストしています。 注文は成行です。
ruby + mongodbを利用しています。
ローカルのMacで動かし。
https://api.binance.com/api/v3/ticker/bookTicker
↑でザクッと通貨ペアのbid, askを取得してどの通貨で最大化になるのかを計算してその通貨で注文って感じです。
例えばこの様なルート(BTC=>草コイン=>ETH=>BTC)を行う場合は1秒以内に完了します。
利益に関してはETHなどで最低注文量などがあるので必ず最後のBTCでプラスになるとは限らずETHとBTC両方の合計でみてやる必要があります。
取引自体は利益が出るのですが、手数料込で計算するとマイナスになるかと。
手数料込で計算して注文すりゃいいんじゃね?と思うのですが、そのタイミングが殆どないんですよねー
何でも注文しているわけではなく利益の出やすい目安を設定してその目安以上のタイミングのみ注文している感じです。
私のテストが深夜なので時間帯が悪いのかな。。。
利益がでる指値で調整して注文すりゃいいんじゃね?とも考えるのですが指値の場合、約定出来ないと次の通貨ペアの注文が出来ないのでアビトラの機会が失われる可能性が高いので宜しくないかと。
※binanceの仕様なのか指値で注文が出来ない場合もあるので。。。
上手に行えば利益が出そうな気がするのですが、現状だとアビトラしないで普通にトレードした方が利益が出る可能性の方が高い様な気がします。
しばらく検証を続けてみて最終どうするか判断します。
CoincheckのXEMの事件について思うこと
本ブログは1月28日書いているのでその後の情報などは分かりませんのでご了承下さい。
今後同じ様な事が起こった時の自分へのメモ的な感じです。
1. 若者と年上との意見が分かれた。※若者と書いていますが実年齢って感じではなく気持や考え方が若者といった感じでしょうか。
若者=> CCは大丈夫。 根拠はコレでこんだけあるから。
年上=> CCはダメ。倒産する又は彼らは逃げるだろう。
仮想通貨界でも意見が色々あったので見ていて面白かった。
今回スピード解決が行われそうなので今後この議論は終息していくのかと思うと残念。もう少しみてみたかった。
落合さんのツイートが一番しっくりきたかな。
それそれ.あと,アホな失敗があったとしてもそれを叩くに終始して,建設的な意見でなすぎ. https://t.co/oYKtkWVGX8
— 落合陽一/Dr.YoichiOchiai (@ochyai) 2018年1月27日
2. 対象通貨(今回はXEM)は値が下がると考えたが思ったよりも下がらない。
XEMは20-30%程度下がるかと考えたのですが思ったよりも下がらなかった。
意外とみなさん冷静だったて事なのかな。。。又は取扱している取引所も限られているので影響がそこまで無いのかかな。
3. 解決へのスピードが仮想通貨の値段を左右する
CCの全額補填への対応は素晴らしいと考えます。この発表後に主要仮想通貨、特にBTCの値が上がった。
上昇局面だったので発表が無くても値が上がっていたかと考えますが発表によって他の通貨の値も釣られた形になったのかと。
以下自分メモ2
■個人的な考えとして(後出しみたいでカッコ悪いのですがアビトラ仲間にも同じような事を言っていたので当時の自分メモ)
↓以下CCの補填発表前の考えですのでご了承下さいませ。
CCは潰れる事はないとは無いと思うけど買収される可能性はあるかも。
XEMの配分によっては潰れる。
XEMで運用していたとかになってくるとムリゲー。
実はXEMの9割自社(1円以下の時に用意したやつ)で、1割お客さんでしたーとかでしたら大丈夫。
```[–]CarlOGsan 3 ポイント 6ヶ月前
How were they able to buy so many without causing any spike in the price?
[–]deconsys 1 ポイント 6ヶ月前
I think maybe a combination of direct buying from a big party of NEM
and possibly partly from exchanges. Because both Coincheck and NEM
have mutual interest, I would not be suprised if the NEM foundation
offered them large quantities of XEM for a certain price. Could be a
bit lower or a bit higher than the market price. This coincides with
the 40 million dollar NEM recently published.
```
もし本当に580億円必要って事であれば生き残るにはICOでCC独自の通貨を発行して取引費用又は取引所の成長に対しての値上がり又は配当に使える様な感じで行えば数百億は返せる。
BinanceのBNBとかcrypto bridgeのBCOとかの機能持たせておけばいいのかと。
これらは会社の事で代表の方々はどうなるのかなーと。。。刑事訴追されてドナドナかなー
↑これらはCCの補填発表前に考えた事です。
■この時にとった私の行動
XEMを売りました。全額ではないですが。※zaifで
※言い訳するとCC関係なく売ろうと検討していたのでいいタイミングかなーって事で。
同時にBTC/ETHが暴騰の時の値段を超えそうだったのでETHに。国内外複数の取引所でも通貨の20-30%程を売ってETHに。
■CCを包む空気の違和感
与沢翼を始めとするCCへの信者化が気持ち悪いかなーと。CC祭りになっているので分からなくもないのですがCCチャット内ではCCを応援しなくては!!男気を感じた!!とか分けわかんない感じになってます。
CCの解決解は素晴らしいと考えますが出金が完了したわけでもないし、いつ実施されるかも分からない状況で興奮しているのは違うかなーと。
■その他
CCの出金停止及びサービス対応のスピードは良かった気がする。
発覚して半日程度で諸々対応していると考えているので。また記者会見へのスピードも良かったかな。
大企業だと一週間とか平気で掛かってそうですし、隠すかもしれないので。。。
記者会見はひどかった。
記者のレベルも酷かったのですがCCも対応は良くなかった様な気がする。
記者に対してはもっと技術的な質問をして状況の詳細を確認する及びまともな質問をしてほしかった。
仮想通貨及び技術系の人からするとイライラした会見になったのかと。
またCCももう少し詳細を出してもよかったのかなーと。彼らの戦略などもあるので全てとは言わないにしても多少はコチラ側に安心を与える様な材料を発表してほしかったかなー
仮想通貨で運用するメンタルについて
最近調子にのって変な取引を乱発してしまった行ってしまった自分への戒めメモ
・自分の失敗を認める。
・ナンピンしまくるとどツボにハマる。
・自分の中でダメなライン(ポリシー)を考え、そのルールを守る。
・自分の想像を超えた場合は止めたほうがいい。
・他の人との競争ではない。
・ガチの草コインはバルブ弾けた時はマジでヤバイから買わない。
にた様な事をいっていたのが与沢翼だった。
取引しながらyoutubeを見ていたらレコメンドされたので何気なく見たら意外と良いこと言ってたw
その動画
【仮想通貨大暴落について】1月16日ツイッターライブ配信録画
※私はセミナーや本及び一度も与沢翼と関わった事がないので勝手な偏見で抱いていましたが他の動画も意外と投資の本質を丁寧に説明されており、興味がわいてきました。
現在は短期で稼いだ金を長期運用のしているようですね。素晴らしい。
いくつか動画見ましたが私も実践しようとしている内容はこんな感じ。
1時間位しゃべりっぱなし。凄いです。
個人的には彼の場合はリスクへのコントロールが本当に素晴らしいと考えます。といいますかどんなマインドで考えているのか教えて欲しいですねーセミナーとか塾とかに参加する気は全くないですがw
イケダハヤトもこの辺り関心しているご様子。
ドバイ行ってくるかなー
アルトコイン買い増し、マイニングなどなど
アルトコインのマイニングを始めました。
種類はCPUマイニングの一種類とだけ。
■やってることは2つ
1.秋葉原でcorei7の中古買う(約1.5万円) => プログラム突っ込む => CPU100%で回す 以上!!
現在は4台程で回していますが国内では100台程度までを想定しています。
↑これらを設置出来る場所を神田、秋葉原、日本橋でオフィスを探しているのですが誰か良い条件といいますか一緒にやる人いませんかw?
先週は4-5件ほど物件を内覧しています。
自宅で回してもいいのですが場所+家族もいるのでね。。。
国内で様子をみて問題なければ韓国かカナダにお引っ越しかなー
理論上は利益でてますが実際の電気代を確認するまで確証出来ませんので少しドキドキ。
本体代(corei7)とかは約半年程度で回収出来る予定。今の価格だったらね。
価格は常に変わるものだしどうなるか分からないからまぁリスクあるねー
※GPUマイニングは初期投資+電気代など色々考えると難しいかなーと。
Akagamiさんも同じことしてるみたい。
BitZeny $ZNY ゼニーマイニング用に発注した15,000円くらいのi7中古PC4台の開梱完了。UbuntuのLTSをインストールして掘っていく。GPUもクソ余ってるから同時にMONAも掘るかな。私の住み処は電気代定額なので容量MAXまで掘る😇
— AKAGAMI (@kanakagami1978) 2017年12月17日
2. 海外VPSでマイニングする
core数に対して安いVPS契約 => プログラム設定 => CPU70%で回す 以上!!
海外でマイニングする理由は安いのと管理が緩い気がします。
国内のcohonaやkagoyaの12coreやその他いくつか試しましたが価格とハッシュレートが合いませんでしたねー
conohaにはCPUの継続的な負荷が理由で停止させられました。
CPU70%で動かす様にしていても管理画面だと80%と表示されたり、逆にどれぐらいだったらいいのかを確認してもお答えは頂けませんでした。
(SSHのtopコマンドで見る限りでも60-70%辺りなんですがねー)
↑悪く書いていますが通常のVPSでの利用はお勧め出来るVPSの一つです。時間単位で利用出来るしruby on railsもボタンポチーで構築完了なのでね。マイニングに合わなかったってだけ。
海外VPSをいくつも契約していると中には当たりのVPSもあったりするので楽しかったりする。
サイト上ではcoreは2と案内してあるのですがsshで実際のサーバ確認するとcoreが4個あったりw
残念ながら通常のVPSとしての利用は日本からだとお勧め出来ないのですがね。レスポンスが。。。
その他マイニングとはまったく関係ないのですがアルトコインを6種類ほど数十から数百万円分を買い増ししたり新規で購入してみました。
基準はその通貨のコミュニティが活発な事とtwitterなどで話題になってる通貨で。しばらくガチホかなー
バンドルカードのBitcoinチャージの価格差について
バンドルカードのBitcoinチャージの各社の差について
■結果から書くとCoincheckでチャージする方がお得。
バンドルカードでbitcoinチャージを提供しているのはcoincheckとbitflyerなのですがBitcoinのチャージの金額差があります。
別の日などでも確認しましたがCoincheckの方がお得にチャージ出来てます。
30000円をチャージ Coinchek=>0.02417BTC, Bitflyer =>0.02465BTC
CoinchekはCoincheckのカードとして出していないのでバンドルカード直接申込みが必要だったかと。
Bitflyerの方はBitflyerの方から申込みする感じです。
※チャージは同日同時間に確認しております。
Coinchekの場合
Bitflyerの場合
AKAGAMI @kanakagami1978さんのロジック実行結果(検証)
AKAGAMI @kanakagami1978 さんがロジックを公開していたので検証してみました。
最終ツイートがてら、botのコアロジックを公開しておく。いなごFlyerの直近20秒のBuy/SellボリュームをPhantomJSでスクレイピング。BuyVolが強ければロング、SellVolが強ければショート、Buy/Sell反転した時が利確、兼、損切りっていうシンプルロジック。価格は一切見ていない。見ているのはVolだけ。 https://t.co/IgJ0txcN7c
— AKAGAMI (@kanakagami1978) 2017年11月30日
非常にシンプルですね。
簡単に書かれていますがコレだけの条件ではないと考えています。
私以外にも検証した方がいました。
akaGAMI氏のコピーbot、昨日の昼過ぎから回し始めて夜からパフォーマンス劣化したので賞味期限切れたかな、と思っていたらなぜか今日は調子いい。アリ様の言ってた通り、強化される方向になったんだろうか?確かにロジック上はポジティブループになる。従って椅子取りゲームなのかもしれない。 pic.twitter.com/Ht4r51bFPF
— UKI (@blog_uki) 2017年12月2日
UKIさんは成果が出ている様なのですが私のバックテストでは上記条件だとbuy側で約40%程で勝ち60%で負けます。取引回数は約2000回程です。
sell側だと35%の勝ちで65%の負けです。取引回数は1500回程。
ちょこっと条件を加えてやると50%程の勝ちになりましたがうーん。取引回数は200回程になり微妙。。。
アビトラ仲間でも検証した方がいたのですが上記を素直に動かすと利益はでなかったそうです。
って事で私は素直に受け取らずに自分なりの条件などを加えて検証してみました。
結果は約20%/日程の利益。
検証って目的でしたので大きな金額で動かしてませんで毎日証拠金30万円前後にセットして検証しています。
約6万円程利益が出ています。
朝の5時頃から夜中の23時頃まで放置してます。時々うまく処理出来いない注文を手動で解消させたりはありますが基本は放置ですw
検証した際の条件を簡単に書いておきます。
一回の取引量は0.01BTCです。
イナゴフライヤーは利用していません。判断データはAPIから取得しています。やってる事はイナゴフライヤーさんと同じかとは考えています。直近20秒は同じ。
(Akagamiさんがなぜイナゴをスクレイピングしているのか謎なんですよねー複数の取引所のデータを確認しているのかなー)
Akagamiさんは価格は一切みていないとの事でしたが私は指値で注文している関係上一応見ています。成行注文は価格がズレるので何か嫌で。。。(正確には指値でも価格がズレる時があります。指値の意味がないBFさんの不思議な仕様です。)
価格確認している時点でワンテンポ時間が掛かってしまうので注文ロジックとしてはよろしくないと考えますが、まぁ検証だしいっかって事で。
※値段がどうこうで注文しないとかはないです。
Akagamiさんはロングとショート両方取引を行っているのかと考えますが私はどちらか一方の取引しか行っていません。
数日動かして分かったのはロングでもショートでも利益を出すことが出来たのですが何か気持ち悪くて片方の取引しかしていませんねー
取引回数は約900回/日です。なので一回辺の取引利益は66円程ですかね。
実際取引を行ってみて改めて感じた事は価格はさほど重要ではないって事。
良い成果にはなりましたが、時間帯にによっては損失が出ましたので万能でも完璧でもないです。
今回は少額(0.01BTC/回)でしたので0.1BTCや1BTCでの検証もしてみると面白いかと考えます。
私は少額でグルグル回すのが好きなので現状だと0.2-0.4BTCが上限になってくるかなーと。単純計算すると約100-200万円/日の利益になる計算。(そんなあまかーないかー)
って書いてて思いましたがこれって検証じゃないですね。私独自の判断なども入ってますのでw
まぁベースの考えはAkagamiさんのをリスペクトしているって事で。