こんなのを作ってみました。これ自体がそのまま直接役立つとは思ってませんが、cron などのスケジュールジョブと合わせて使うことで時系列データを簡単に入手できるので、「生の解析用サンプルデータを用意する」のが比較的容易にできちゃうと思っています。
文字通りの「為替取得 REST API」です。エンドポイント URL はこちらです:
http://fx.mybluemix.net/
https://dotnsf-fx.herokuapp.com/
REST API なので、何らかの(機械的な)HTTP クライアントからアクセスされることを想定しています。とりあえずデータ・フォーマットを確認する目的で、ウェブブラウザでアクセスしてみると、このような JSON テキストが得られるはずです:
JSON テキストを整形するとこんな感じの内容です:
status が API の実行結果(true/false)で、成功した場合は result がその結果です。result.datetime が取得したタイミングの GMT 日時です( API を実行した瞬間の日時になっているはずです)。そして result.rate 内にそのタイミングでの(リアルタイムの)各通貨ペアの為替情報が格納されています。例えば上の例では result.rate.USDJPY = 109.961 となっていますが、これはこのタイミングで「1米ドル(USD)=109.961日本円(JPY)」だったことを表しています。同様にして result.rate.EURJPY = 133.339 なので「1ユーロ(EUR)=133.339日本円(JPY)」です。他の通貨表記についてはこのあたりを参照してください:
https://www.gaitame.com/gaitame/gaika/gaika_index.html
このように上記 URL に GET リクエストを発行するだけでリアルタイムな為替情報 20 ペア分が取得できるものです。後はこれを1分おきとか1時間おきに取得して、その結果を RDB なり、JSON DB なりに格納する、という処理を1~10日くらい動かしっぱなしにしておけば、それなりにまとまったデータが取得できるはずです。一応数値は本物の為替情報で、深く考えなくてもただ GET リクエストを実行すれば結果が取得できるので、解析元となるデータを集める上では比較的便利かな、と思っています。
これはあくまで一例ですが、Node-RED のインジェクションノードを定期実行する設定にした上でこんな感じのフローを作るだけで定期的な為替情報を集めて DB に格納するまでが(簡単に)できちゃいます:
後はここで集めたデータを使って解析学習時のデータにするもよし、予測機能を作るもよし、ご自由にお使いください。
文字通りの「為替取得 REST API」です。エンドポイント URL はこちらです:
https://dotnsf-fx.herokuapp.com/
(2022/04/23 追記 上記 URL を変更しました)
REST API なので、何らかの(機械的な)HTTP クライアントからアクセスされることを想定しています。とりあえずデータ・フォーマットを確認する目的で、ウェブブラウザでアクセスしてみると、このような JSON テキストが得られるはずです:
JSON テキストを整形するとこんな感じの内容です:
{ "status":true, "result":{ "datetime":"2021-06-16 14:48:27+0", "rate":{ "USDJPY":109.961, "EURJPY":133.339, "EURUSD":1.21255, "AUDJPY":84.707, "GBPJPY":155.129, "NZDJPY":78.49, "CADJPY":90.334, "CHFJPY":122.216, "HKDJPY":14.158, "GBPUSD":1.4107, "USDCHF":0.89958, "ZARJPY":7.99, "AUDUSD":0.77031, "NZDUSD":0.71376, "EURAUD":1.57405, "TRYJPY":12.872, "CNHJPY":17.186, "NOKJPY":13.116, "SEKJPY":13.137, "MXNJPY":5.465 } } }
status が API の実行結果(true/false)で、成功した場合は result がその結果です。result.datetime が取得したタイミングの GMT 日時です( API を実行した瞬間の日時になっているはずです)。そして result.rate 内にそのタイミングでの(リアルタイムの)各通貨ペアの為替情報が格納されています。例えば上の例では result.rate.USDJPY = 109.961 となっていますが、これはこのタイミングで「1米ドル(USD)=109.961日本円(JPY)」だったことを表しています。同様にして result.rate.EURJPY = 133.339 なので「1ユーロ(EUR)=133.339日本円(JPY)」です。他の通貨表記についてはこのあたりを参照してください:
https://www.gaitame.com/gaitame/gaika/gaika_index.html
このように上記 URL に GET リクエストを発行するだけでリアルタイムな為替情報 20 ペア分が取得できるものです。後はこれを1分おきとか1時間おきに取得して、その結果を RDB なり、JSON DB なりに格納する、という処理を1~10日くらい動かしっぱなしにしておけば、それなりにまとまったデータが取得できるはずです。一応数値は本物の為替情報で、深く考えなくてもただ GET リクエストを実行すれば結果が取得できるので、解析元となるデータを集める上では比較的便利かな、と思っています。
これはあくまで一例ですが、Node-RED のインジェクションノードを定期実行する設定にした上でこんな感じのフローを作るだけで定期的な為替情報を集めて DB に格納するまでが(簡単に)できちゃいます:
後はここで集めたデータを使って解析学習時のデータにするもよし、予測機能を作るもよし、ご自由にお使いください。
コメント
コメント一覧 (8)
為替の情報取得を探しており、こちらにたどり着きましt。
勉強になります、外為APIが有名ですが、こちらはどちらから取得をされていますか?
もしよろしければ、教えていただけますと、幸いです。
こちらの為替api使わせていただいていたのですが、1か月(もしかしたら2か月)前ごろから、アクセスできなくなっているようです
もしお手すきでしたら、修正いただけますと非常に助かります!
色々事情(?)があり、URL を変えて運用することにしました。記事内でも修正しましたが、今後はこちらの URL を使ってください。なお取得結果もこれまでのテキストから JSON オブジェクト形式に変わっています:
https://dotnsf-fx.herokuapp.com/
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta charset="utf-8">
<title>Application Error</title>
<style media="screen">
html,body,iframe {
margin: 0;
padding: 0;
}
html,body {
height: 100%;
overflow: hidden;
}
iframe {
width: 100%;
height: 100%;
border: 0;
}
</style>
</head>
<body>
<iframe src="//www.herokucdn.com/error-pages/application-error.html"></iframe>
</body>
</html>
アプリケーションエラーになる
おそらく10月になると制限がリセットされてまた動き出します。使い勝手はよくないと理解していますが、無料提供の限界もあり、現状はこのような条件での提供とさせてください。
コメント失礼します。
こちらのAPIとても助かります。
こちらのAPIはどこのデータを使っていますか?
教えていただけると幸いです。
この API ですが、私が(個人で)契約して使っている FX 会社のデータを API 化しています。社名や取得方法についてはご迷惑がかかる可能性があるので伏せさせてください。