LoginSignup
12
17

More than 1 year has passed since last update.

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

Last updated at Posted at 2016-05-21

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

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

追記: デモ口座の利用期限30日間になりました

【重要】デモ口座の利用期限およびオーダーブックインジケーター、APIの利用条件変更について

準備

OANDA APIを叩けるようにする

OANDAでデモ口座(無料)を作成してトークンを発行すればSandbox環境を叩けるようになります。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 OANDAClient : 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のアプリのような為替トレード用アプリを作って役立てていければなと思います。

12
17
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
17