為替レートを取得するサンプルです。
「Yahoo Finance」、「Google Finance」が廃止となったので、外為オンラインから取得してみました。
為替レート取得クラス
public class ExchangeUtil : PublicWebApiUtil {
public enum CurrencyPairCode : int {
//英ポンド/NZドル
GBPNZD = 1,
//カナダドル/NZドル
CADJPY,
//英ポンド/AUドル
GBPAUD,
//AUドル/円
AUDJPY,
//AUドル/NZドル
AUDNZD,
//ユーロ/カナダドル
EURCAD,
//ユーロ/米ドル
EURUSD,
//NZドル/円(jsonString);
return ds.Tables[0];
}
// 指定した貨幣コードの始値を取得
public Decimal GetOpenPrice(CurrencyPairCode currencyPairCode) {
Decimal price = -1;
DataTable exchangeTbl = GetExchangeRateTable();
DataRow[] rows = (
from row in exchangeTbl.AsEnumerable()
let qOpenPrice = row.Field(EnumUtil.GetLabel(RateTableColIdx.Open))
let qCurrencyPairCode = row.Field(EnumUtil.GetLabel(RateTableColIdx.CurrencyPairCode))
where qCurrencyPairCode == EnumUtil.GetName(currencyPairCode)
select row).ToArray();
price = Decimal.Parse(rows[0][(int)RateTableColIdx.Open].ToString());
return price;
}
}
親クラス
public class PublicWebApiUtil {
public PublicWebApiUtil() {
}
/// WebAPI呼び出し
protected string GetResponseString(string url) {
HttpWebRequest req = null;
HttpWebResponse res = null;
StreamReader sr = null;
string jsonString = "";
try {
//サーバーからデータを受信する
req = (HttpWebRequest)WebRequest.Create(url);
res = (HttpWebResponse)req.GetResponse();
sr = new StreamReader(res.GetResponseStream());
//すべてのデータを受信する
jsonString = sr.ReadToEnd();
} finally {
sr.Close();
res.Close();
}
return jsonString;
}
}
使い方
public void GetPriceRate() {
ExchangeUtil eu = new ExchangeUtil();
//始値のレートを取得
Decimal d = eu.GetOpenPrice(ExchangeUtil.CurrencyPairCode.USDJPY);
}
0 件のコメント:
コメントを投稿