プログラムで為替レートにアクセスする[終了]


112

オンライン注文システムをセットアップしていますが、オーストラリアにいます。海外のお客様の場合は、米ドルまたはユーロで価格を表示したいので、オーストラリアドルから換算するために精神的な労力を費やす必要がありません。

PHPスクリプトからアクセスできる解析しやすい形式で、ネットのどこかで最新の為替レートを取得できるかどうか誰かが知っていますか?


更新:これを実装するPHPクラスを作成しました。コードは私のウェブサイトから入手できます


1
@ケリー:Googleは無料であり、予見可能な将来にまだ存在する可能性が高いため、非常に良い提案です。回答として送信することをお勧めします。
エリックOレビゴット

1
コメントを編集できないようです。新しいリンクjarloo.com/exchange-rate-api
Kelly

1
@Adam Pierceを共有してくれてありがとう!過去のレートも取得する方法はありますか?
アリス

このリンクも使用できます。その無料。登録してAPIキーを取得するだけです。 jsonrates.com/docs
Gajendra K Chauhan

currencylayer.comを使用します -それらは、いくつかのPHPの例(currencylayer.com/documentation)とともに、JSON形式でリアルタイムおよび過去のレートを提供します
Frank

回答:


71

あなたはyahooから単純なフォーマットで通貨換算を得ることができます:

たとえば、GBPからEURに変換するには: http://download.finance.yahoo.com/d/quotes.csv?s=GBPEUR=X&f=sl1d1t1ba&e=.csv


これは最新で、解析が簡単です。これは私が求めているものです。
アダムピアース

4
私もこれに興味があります、パラメータが何を表すのかについての情報はありますか?特に「f」パラメータ。どこにも情報が見つかりません。
フィッシュケーキ

9
商用ウェブサイトを持っている場合、このデータを読むことは合法ですか?
ジュニアメイヘ2010年

4
さらに実験を行うと、「s」パラメータの記号をカンマで区切ることで、一度に複数のコンバージョン率をリクエストできることが
わかり

3
日付を指定する方法はありますか?
Maxim Egorushkin 2012

40

この回答は非常に遅いですが、上記の回答には欠けている重要な情報があります。

正確な価格を顧客に示したい場合は、外国為替レートの仕組みを理解することが重要です。

ほとんどのFXサービスは、スポットレートのみを提示します(ビッドとアスクの中間)。スポットは為替レートの一種の省略形ですが、ビッドで売りまたはアスクでしか購入できないため、誰もスポットを得ることはできません。あなたは通常それらの間の少なくとも1%の広がりを見ているので、スポットレートは顧客にとって0.5%オフです。

しかし、それだけではありません。お客様はほぼ確実にクレジットカードを使用しており、Visa / Mastercard / Amexはすべて外国為替手数料を請求しています。私の経験では、これらは少なくとも2.5%と重要です。たとえば、シティバンクオーストラリアは3.3%を請求します。これらはカードごとに異なるため、顧客に請求される最終的な価格を予測する方法はありません。

為替レートに基づいて顧客に「正確な」価格を見積もる場合は、上記を考慮に入れて、見積りよりも多く請求されないようにバッファーを提供する必要があります。

FWIW、そうでなければF / X変換が示すものに4%を追加しています。


また、為替レートは常に変化し、銀行は現地時間の午前0時のレートのみを考慮する場合があります。1日のボラティリティー最大2%であり不確実性があります。
Alexandre C.

1
それは素晴らしい点です。ある通貨を表示し、別の通貨を請求する場合、ある種のバッファの必要性を確実に強化します。価値があるのは、4%のパディングで、チャージバックをした人がいないことです。
フィロワ2010年

すべての銀行が請求するわけではありません。たとえば、メキシコのクレジットカードやデビットカードは、通貨の売りに使用した日の価格でのみ通貨を変換します。
フランシスコサラボソ2017年

26

追加するといいかもしれません

  http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml

リストに。

欧州中央銀行が提供する公式参照レートシステムの内外の中央銀行間の定期的な毎日の調整手順に基づいてます。

フィードはXMLであり、 その他の形式です。
更新は通常、午後2時15分(14:15)ECB時間(=フランクフルト時間)に行われます。


4
チェックしたところ(コメントの20分後)、それが利用可能になりました。
ジャッコ2010年

私はこれを使用しようとしましたが、VB.NETは適切にXPathを拒否します。名前空間を定義するURLが両方とも404ingであるためですか?
リッキ

このリンクには、今日ではなく、常に昨日のレートが表示されます。
erkanyildiz 2013

12

最近同じことを実装しましたが、GoogleのAPIを使用しています。クエリURLは次のようになります。

http://www.google.com/ig/calculator?hl=en&q=1GBP=?USD

それは3つのパラメータを取ります。最初のパラメーターは金額で、その後に変換元のISO 4217通貨コード、等号と疑問符、および変換先の通貨コードが続きます。Googleがサポートするコードのリストは、こちらで確認できます。クエリに対する応答は次のようになります。

{lhs: "1 British pound",rhs: "1.6132 U.S. dollars",error: "",icc: true}

これはかなり自明ですので、ここでは詳細には触れません。これがクエリ応答の処理方法です。

function convert_currency($amount, $from_code, $to_code){
    ini_set('max_execution_time', 60);
    $temp = 'http://www.google.com/ig/calculator?hl=en&q=' . $amount . $from_code . '=?' . $to_code;

    $response = file_get_contents($temp);
    $result_string = explode('"', $response);

    $final_result = $result_string['3'];

    $float_result = preg_replace("/[^0-9\.]/", '', $full_result);

    return $float_result;
}

これを行う最もエレガントな方法からは程遠いはずですが、PHPはかなり初めてです。それが役に立てば幸い!


2
信頼性を高めたい場合は、explodeの代わりにjson_decodeを使用できます。
diolemo 2012年

このサービスには制限がありますか?
サイト

これは
言い

5
「iGoogleは2013年11月1日に廃止されました」、アプリは動作しなくなりました
yegor256

私はYahoo quotes.csvメソッドを使用するように変更された同様のコードを使用しましたが、コードは2行だけ変更されています。
Marcus

12

別の非常に優れた無料のオープンソースリンクは次のとおりです。

https://raw.github.com/currencybot/open-exchange-rates/master/latest.json
(私はそれについてここで見つけました:http : //josscrowcroft.github.com/open-exchange-rates/

[更新] :
Open Exchange RatesプロジェクトデータはGitHubから移動されました。
現在、 http //openexchangerates.org/
で入手できます。JSON形式のデータは、 http //openexchangerates.org/latest.jsonで入手できます

アクセス料金なし、レート制限なし、醜いXMLなし- 時間単位で更新される無料の為替レート(JSON形式)。
現在、これは「完全に」無料ではありません。新しいライセンスでは、1か月あたり最大1000件のヒットが許可されているため、料金を支払う必要があります。単一通貨のコンバーター(基本機能)を使用する場合も、支払いが必要です。

[注:この回答もご覧ください。]


1
多分それはもう機能していません
shasi kanth

1
思い出させてくれて@dskanthに感謝します。リンクと情報を更新しました。:)
zeFree

1
無料のOpenExchangeRatesプランはここで利用可能で、1か月に1000のリクエストがあります..小さなリンクなので、ほとんどの場合は見つけられません.. openexchangerates.org/signup/free
TheFlash

6

YQLにOpen Dataテーブルを追加しました。これを使用して、yahoo.financeから為替レートデータを取得できます。

YQLコンソールでお試しください

カンマ区切り形式は「where pair in( 'EURUSD'、 'GBPUSD')」よりも望ましいですが、いずれにせよ、両方を使用したり、それらを混在させることもできます。


ありがとう、相棒。これをPHPのYQLドキュメントと組み合わせると、非常に役立ちました。
miCRoSCoPiC_eaRthLinG 2011

こんにちは、過去の為替レートを取得したい場合など、日付パラメーターを追加できますか。
Elisa



3

この RESTfulを試してください(これが本当にRESTであるかどうかはわかりません。これはもともとSOAPから取得したため、HTTP GETを使用してアクセスしようとしただけです)。


変換する「金額」をどこに指定したかわかりませんが、数値が返されます...説明していただけますか?
SpokaneDude、2011年

1
金額は受け付けません。これは、fromCurrencyの量が常に1である場合に、fromCurrencyをtoCurrencyにのみ変換します。次に、金額を変換するアルゴリズムを作成するかどうかはあなた次第です
Kevin

ありがとう...それは理にかなっています。now ...
SpokaneDude、2011年

3

iGoogleは2013年11月1日に廃止されました。このAPIは機能しなくなりました。

為替レートを取得するには、次のようなものを使用できます。

function get_exchange_rate($from, $to){
    $data = file_get_contents("http://www.google.com/ig/calculator?hl=en&q=1{$from}=?{$to}");
    preg_match('/rhs\:\s?"([0-9\.]+)/', $data, $m);
    return $m[1];
}

そこにDBキャッシュを追加して、スロットルなどが発生しないようにすることができます。

他の投稿/コメントで述べたように、このレートを使用して通貨を計算します




1

coinnill.comには、一種のWebサービスがあります。

http://coinmill.com/rss/AUD_USD.xml

たとえば、AUD-> USDレートが得られます。返されるXMLを解析する必要があるだけです。


そのデータは古くなっているようです。AUDは0.77と書かれていますが、今日は0.69です。
アダムピアース

また、有用なデータ(為替レート)は、XMLでエンコードされていない唯一のビットです!それはCDATAの単なる平文です...
リッキ

1

追加せざるを得ない:

http://www.exchangerate-api.com/

クリーンなRESTful APIで簡単に使用でき、サインアップには5秒かかります。ほとんどの主要言語のコーディング例が含まれ、ほとんどが2〜3行です。

料金は1時間ごとに更新されるので、ほとんどの場合は問題なく、月額$ 7で30000の月次クエリを取得できます。それ以上必要なことは一度もありませんが、量が多い場合のレートは非常に妥当です。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.