May 22, 2016 · Unity OANDA API

UnityからOANDA APIを叩いて為替レートを取得する

伊勢志摩サミット,6月FOMC,Brexitの行方,ゴールドの買い時, 色々気になる今日この頃ですね。

そんなこんなでシストレで有名なOANDAが公開している為替トレーディング用APIを、学習がてらUnityから叩いてみました。

準備

OANDA APIを叩けるようにする

OANDAでデモ口座(無料)を作成してトークンを取得すればSandbox環境を叩けるようになります。

手順

http://www.oanda.jp/api/ にアクセスしてデモ口座を開設

https://www.oanda.jp/trade/practice/login.do?success にアクセスしてログイン

APIアクセスの管理 から personal access token を発行

APIの動作確認ツールで疎通の確認を行なう

一番わかりやすいので /accounts を選択

リクエストヘッダーに personal access token を設定して叩く

これで200が返ってくれば開通済みです。

※詳しくは http://www.oanda.jp/api/ ページ下部に記載されている「お手続きの流れ」を確認

Unity側準備

今回は叩けるかどうかを確認したいだけなので、シーン上に空のGameObjectを生成し実装対象のスクリプトをアタッチしておきます。

それと、Jsonのパース用にSimpleJSONをダウンロードしてpackageも追加しておきます。

APIを叩いてみる

ユーロポンド,ドル円,豪ドルドルの現在レートを取得しようと思います。以下のエンドポイントを指定してGETで叩きます。

https://api-fxpractice.oanda.com/v1/prices?instruments=EUR_GBP%2CUSD_JPY%2CAUD_USD

成功すれば以下のようなレスポンスが返ってきます。

{
  "prices": [
    {
      "instrument": "EUR_GBP",
      "time": "2016-05-20T20:59:58.466984Z",
      "bid": 0.77345,
      "ask": 0.77445,
      "status": "halted"
    },
    {
      "instrument": "USD_JPY",
      "time": "2016-05-20T20:59:58.466604Z",
      "bid": 110.065,
      "ask": 110.165,
      "status": "halted"
    },
    {
      "instrument": "AUD_USD",
      "time": "2016-05-20T20:59:58.464942Z",
      "bid": 0.72203,
      "ask": 0.72242,
      "status": "halted"
    }
  ]
}

実装していきます。

UnityWebRequest で エンドポイントを指定し、ヘッダーにアクセストークンを追加するだけの簡単なスクリプトです。

※コード内のトークンは適宜変更

using UnityEngine;  
using System.Collections;  
using UnityEngine.Networking;  
using UnityEngine.Experimental.Networking;  
using System.Text;  
using SimpleJSON;

public class HTTPRequest : MonoBehaviour {

    private JSONNode jsonData;
    private string accessToken = "insert personal access token";

    void Start () {
        StartCoroutine(Fetch());
    }

    void Update () {

    }

    public IEnumerator Fetch() {
        // ユーロポンド,ドル円,豪ドルドル を取得
        string url = "https://api-fxpractice.oanda.com/v1/prices?instruments=EUR_GBP%2CUSD_JPY%2CAUD_USD";

        using (UnityWebRequest request = UnityWebRequest.Get (url)) {

            request.SetRequestHeader("Authorization","Bearer " + accessToken);

            yield return request.Send ();

            string jsonText = request.downloadHandler.text;

            if (request.responseCode == 200) {
                jsonData = JSONNode.Parse(jsonText);
                // 銘柄名
                string instrument = (string)jsonData["prices"][0]["instrument"];
                // bid
                string bid = (string)jsonData["prices"][0]["bid"];

                Debug.Log ("Success");
            } else {
                Debug.Log ("Error");
            }

        };
    }
}

デバッガで取得が確認できました。

まとめ

OANDA APIは Jiji というオープンソースのシストレフレームワークで使われていたり、日本語ドキュメント等もあったり色々面白そうです。

目指すはCityが発表したHoloLensのアプリのような為替トレード用アプリを作って役立てていければなと思います。

  • LinkedIn
  • Tumblr
  • Reddit
  • Google+
  • Pinterest
  • Pocket