注目の投稿

今まで作成したエクセルツールまとめ

2018/05/22

第1回 仮想通貨取引所BitmexからOHLCVデータを取得するVBAプログラム -Excel VBA

仮想通貨取引所、Bitmexから価格と取引高の情報であるOHLCVデータを取得するVBAプログラムを公開したいと思います。
他のプログラミング言語でもデータを取得できますが、このブログでは硬派にVBAを使っていきたいと思います。



・Bitmexについて


BitMEX(ビットメックス)とは?

BitMEXはどこの国にあって/誰が運営していて/安全なのか

【レバレッジ最大100倍】BitMEX(ビットメックス)の使い方


登録はこちらからどうぞ!1分で登録できます!
https://www.bitmex.com/register/oDtFNI




・OHLCVとは


始値(OPEN)、高値(HIGH)、安値(LOW)、終値(CLOSE)、出来高(VOLUME)の頭文字をつなげたものです。

ローソク足では、1日、1週間、1ヶ月などの期間を定め、期間の開始時に付いた値段を始値、期間中の最も高い値段を高値、最も安い値段を安値、期間の最後に付いた値段を終値としています。

株式投資や、暗号通貨投資などで過去のOHLCVデータから将来の価格を予想するために使われたりします。




・Excel VBAでAPIからExcelにデータを読み込む

多くの仮想通貨取引所でAPIを公開しています。当ブログでは今まではbitbankからデータを読み込んできましたが、今回は人気のBitmexを利用したいと思います。

VBAではありませんが、こちらのnoteにBitmexからOHLCVデータの取得の仕方について詳しく書かれてます。色々と勉強になると思います。
APIで取得したOHLCVデータから任意の時間足を作成する



それでは、Bitmexの公式APIからOHLCVデータを取得するプログラムをお伝えします。


VBAコード

まずは、心臓部分である1番大事なデータ取得処理のところからいきましょう。


url = "https://www.bitmex.com/api/udf/history?symbol=XBTUSD&resolution=" & resolution & "&from=" & from & "&to=" & toend

        Set HttpReq = CreateObject("MSXML2.XMLHTTP")
        HttpReq.Open "GET", url, False
        HttpReq.send
 
        TradeJSON = HttpReq.responseText
        Set HttpReq = Nothing

    Set js = CreateObject("ScriptControl")
    js.Language = "JScript"

    js.AddCode "function jsonParse(s) { return eval('(' + s + ')'); }"

    Set CryptoJSON = js.CodeObject.jsonParse(TradeJSON)



それでは部分ごとに見ていきましょう。

まず、任意のデータを取得するためのAPIのURLを指定します。
リクエストURLは、trade/bucketedからもデータを受け取れますが、Excel VBAだと長い期間のデータを取得する時に途中でエラーが出ます。下記のudf/historyからだとエラーが出ずにスムーズに処理が進みます。


url = "https://www.bitmex.com/api/udf/history?symbol=XBTUSD&resolution=" & resolution & "&from=" & from & "&to=" & toend



sendメソッドでリクエストを送信し、responseTextでレスポンスを受け取ります。CreateObjectでオブジェクトを作成します。

     
        Set HttpReq = CreateObject("MSXML2.XMLHTTP")
        HttpReq.Open "GET", url, False
        HttpReq.send
 
        TradeJSON = HttpReq.responseText
        Set HttpReq = Nothing

      Set js = CreateObject("ScriptControl")
      js.Language = "JScript"

 

jsonにパースする関数を追加します。

     js.AddCode "function jsonParse(s) { return eval('(' + s + ')'); }"


追加した関数を実行して結果を変数に格納します。

     Set CryptoJSON = js.CodeObject.jsonParse(TradeJSON)



BitmexからVBAでOHLCVデータを取得する方法をググっても出てきませんでした。そのため、この短いプログラムでもいくらか苦労したところがあります。しかし、データを取得さえできれば後は普通にVBAを記述するだけです。
次回は配列を使ってセルにデータを格納するプログラムをお伝えします。


次回に続く
第2回 仮想通貨取引所BitmexからOHLCVデータを取得するVBAプログラム -Excel VBA




他にもエクセルツールを作成しています!

ビットバンクからOHLCVデータを取得&表示するExcelツール  読取太郎





どんなに小さな額でもチップをいただけると嬉しいです!

Donate BTC: 1LcULwCQPjxLGXdpEJkhNkPpqCwG5csasU

Donate LTC: LSXEG7tjeCCGWuzvf5eFvJUZM6Xpvsdc4f




当エクセルツールから表示される情報は、
内容の正確性、信頼性等を保証するものではありません。
これらの情報に基づいて被ったいかなる損害についても、当サイトは一切の責任を負いません。
投資・投機に関するすべての決定は、利用者ご自身の判断でなさるようお願いいたします。


bitFlyer ビットコインを始めるなら安心・安全な取引所で