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のアプリのような為替トレード用アプリを作って役立てていければなと思います。