Jak uzyskać Kursy wymiany walut za pośrednictwem interfejsu API, takiego jak Google Finance? [zamknięte]

Teraz znalazłem Google Finance API i zacząłem przeglądać to, ale znalazłem wiele informacji na temat portfeli, transakcji, pozycji i innych rzeczy, o których nic nie wiem.

Czy patrzę na nie te dokumenty? Co muszę zrobić, aby uzyskać feed kursów walut z GF? Czy to w ogóle możliwe?

EDIT

Żeby było jaśniej. Nie interesują mnie sprawy techniczne ani nie chcę żadnego kodu.

Author: George Stocker, 2010-06-29

10 answers

Dzięki za wszystkie odpowiedzi.

Free currencyconverterapi:

  • stawki aktualizowane co 30 min
  • nie wymaga konta

Przykładowy adres URL konwersji to: http://free.currencyconverterapi.com/api/v5/convert?q=EUR_USD&compact=y


Dla potomnych oto one wraz z innymi możliwymi odpowiedziami:

  1. [[26]} Yahoo finance API wycofane 2017-11-06

    2017-11-06 with message

    Okazało się, że usługa ta jest wykorzystywana w naruszenie Warunków Świadczenia Usług Yahoo. W związku z tym usługa jest przerwane. Dla wszystkich przyszłych rynków i akcji badania danych, prosimy o zapoznanie się z finance.yahoo.com.

    Zapytanie: http://finance.yahoo.com/d/quotes.csv?e=.csv&f=sl1d1t1&s=USDINR=X
    Ten plik CSV był używany przez wtyczkę jQuery o nazwie Curry. Curry ma od (2017-08-29) przeniesiony do użytku fixer.io zamiast tego ze względu na problemy ze stabilnością. Może się przydać, jeśli potrzebujesz czegoś więcej niż tylko pliku CSV.

  2. (Dzięki Keyo) język zapytań Yahoo pozwala uzyskać całą masę walut na raz w XML lub JSON. Dane aktualizowane są o sekundę (podczas gdy Europejski Bank Centralny ma dane sprzed dnia) i zatrzymują się w weekend. Nie wymaga rejestracji.

    Http://query.yahooapis.com/v1/public/yql?q=select * od yahoo.Finanse.xchange gdzie para in ("USDEUR", "USDJPY", "USDBGN", "USDCZK", "USDDKK", "USDGBP", "USDHUF", "USDLTL", "USDLVL", "USDPLN", "USDRON", "USDCHF", "USDNOK", "USDHRK", "USDRUB", "USDTRY", "USDAUD", "USDTRY usdbrl", "USDCAD", "USDCNY", "USDHKD", "USDIDR", "USDILS", "USDINR", "USDKRW", "USDMXN", "USDMYR", "USDNZD", "USDPHP", "USDSGD", "USDTHB", "USDZAR", "USDISK")&ENV=Store://DataTables.org/alltableswithkeys

    Oto YQL query builder , gdzie możesz przetestować zapytanie i skopiować adres url: (nie jest już dostępny)

    http://developer.yahoo.com/yql/console/?q=show%20tables&env=store://datatables.org/alltableswithkeys#h=select%20*%20from%20yahoo.finance.xchange%20where%20pair%20in%20%28%22USDMXN%22%2C%20%22USDCHF%22%29

Tutaj wpisz opis obrazka

  1. Open Source kursy walut API

    Darmowe do użytku osobistego (1000 odsłon miesięcznie)
    Zmiana "base" (Z "USD") nie jest dozwolona za darmo konto
    Wymaga rejestracji.
    Zapytanie: http://openexchangerates.org/latest.json
    Odpowiedź:

    {
      "disclaimer": "This data is collected from various providers ...",
      "license": "all code open-source under GPL v3 ...",
      "timestamp": 1323115901,
      "base": "USD",
      "rates": {
          "AED": 3.66999725,
          "ALL": 102.09382091,
          "ANG": 1.78992886,
          // 115 more currency rates here ...
      }
    }
    
  2. Currencylayer API

    Darmowy Plan dla 1000 miesięcznych odsłon
    Zmiana "źródła" (Z" USD") nie jest dozwolona na darmowym koncie [38]} Wymaga rejestracji.
    Dokumentacja: currencylayer.com/documentation

    Odpowiedź JSON:

    {
      [...]
      "timestamp": 1436284516,
      "source": "USD",
      "quotes": {
          "USDAUD": 1.345352401,
          "USDCAD": 1.27373397,
          "USDCHF": 0.947845302,
          "USDEUR": 0.91313905,
          "USDGBP": 0.647603397,
          // 168 world currencies
          }
      }
    
  3. Fixer.io API (Europejski Bank Centralny dane)

    Darmowy Plan na 1000 miesięcznych odsłon
    Zmiana "source" (Z" USD") nie jest dozwolona na darmowym koncie Wymaga rejestracji.

    Ten punkt końcowy API jest przestarzały i przestanie działać 1 czerwca 2018. Więcej informacji na stronie: https://github.com/fixerAPI/fixer#readme)


    Strona internetowa: http://fixer.io /
    Przykładowe zapytanie : http://api.fixer.io/latest?base=USD
    Pobiera tylko jedną wartość na każdą dzień

  4. Europejski Bank Centralny Feed

    Docs: http://www.ecb.int/stats/exchange/eurofxref/html/index.en.html#dev
    Zapytanie: http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml

    Odpowiedź XML:

    <Cube>
      <Cube time="2015-07-07">
      <Cube currency="USD" rate="1.0931"/>
      <Cube currency="JPY" rate="133.88"/>
      <Cube currency="BGN" rate="1.9558"/>
      <Cube currency="CZK" rate="27.100"/>
    </Cube>
    
  5. Google Exchange rate query (parsed) obecnie niedostępne:

    Zapytanie: http://rate-exchange.appspot.com/currency?from=USD&to=EUR
    Odpowiedź:

    {"to": "EUR", "rate": 0.76911244400000001, "from": "USD"}
    


    Oto kolejny JSON (P) API oparty na Google API (źródło: ten komentarz):
    http://rate-exchange.appspot.com/currency?from=USD&to=EUR&q=1

    Original answer by Ryan .

 723
Author: Frank,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-12 06:48:07

Europejski Bank Centralny (EBC) ma również najbardziej niezawodny darmowy feed, jaki znam. Zawiera około 28 walut i jest aktualizowana co najmniej codziennie.

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

Więcej formatów i narzędzi znajduje się na stronie referencyjnej EBC: http://www.ecb.int/stats/exchange/eurofxref/html/index.en.html

 52
Author: Ryan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-08-23 17:37:42

Yahoo ma funkcję YQL, aby uzyskać całą masę walut na raz w XML lub JSON. Zauważyłem, że dane są aktualne przez minutę, gdy EBC ma dane z dnia poprzedniego, i zatrzymuje się w weekend.

Http://query.yahooapis.com/v1/public/yql?q=select * od yahoo.Finanse.xchange where pair in ("USDEUR", "USDJPY", "USDBGN", "USDCZK", "USDDKK", "USDGBP", "USDHUF", "USDLTL", "USDLVL", "USDPLN", "USDRON", "USDSEK", "USDCHF", "USDNOK", "USDHRK", "USDRUB", "USDTRY", "USDAUD", "USDTRY usdbrl", "USDCAD", "USDCNY", "USDHKD", "USDIDR", "USDILS", "USDINR", "USDKRW", "USDMXN", "USDMYR", "USDNZD", "USDPHP", "USDSGD", "USDTHB", "USDZAR", "USDISK")&env=store://datatables.org/alltableswithkeys {]}

Oto ich konstruktor zapytań, w którym możesz przetestować zapytanie i skopiować url:

Http://developer.yahoo.com/yql/console/?q=show%20tables&env=store://datatables.org/alltableswithkeys#h=select%20*%20from%20yahoo.finance.xchange%20where%20pair%20in%20%28%22USDMXN%22%2C%20%22USDCHF%22%29

 52
Author: Keyo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-06 22:31:14

Jeśli potrzebujesz darmowego i prostego API do konwersji jednej waluty na inną, spróbuj free.currencyconverterapi.com .

Disclaimer, jestem autorem strony i używam jej do jednej z moich innych stron internetowych.

Usługa jest bezpłatna nawet do zastosowań komercyjnych, ale nie oferuje gwarancji. Ze względu na wydajność, wartości są aktualizowane tylko co godzinę.

Przykładowy adres URL konwersji to: http://free.currencyconverterapi.com/api/v5/convert?q=EUR_PHP&compact=ultra który zwróci wartość w formacie json, np. {"EUR_PHP": 60.849184}

 34
Author: Manny,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-06 07:20:17

Otrzymałem tę treść od http://www.scriptarticle.com/2012/05/03/get-live-currency-rates-and-currency-conversion-using-php-and-apis/

<?php

function get_currency($from_Currency, $to_Currency, $amount) {
    $amount = urlencode($amount);
    $from_Currency = urlencode($from_Currency);
    $to_Currency = urlencode($to_Currency);

    $url = "http://www.google.com/finance/converter?a=$amount&from=$from_Currency&to=$to_Currency";

    $ch = curl_init();
    $timeout = 0;
    curl_setopt ($ch, CURLOPT_URL, $url);
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);

    curl_setopt ($ch, CURLOPT_USERAGENT,
                 "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)");
    curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    $rawdata = curl_exec($ch);
    curl_close($ch);
    $data = explode('bld>', $rawdata);
    $data = explode($to_Currency, $data[1]);

    return round($data[0], 2);
}

// Call the function to get the currency converted
echo get_currency('USD', 'INR', 1);

?>
 26
Author: Lokesh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-06 18:29:44

Oto kilka Exchange API z PHP przykład.

[ Open Exchange Rates API ]

Zapewnia 1000 żądań miesięcznie za darmo. Musisz się zarejestrować i pobrać identyfikator aplikacji. Waluta bazowa USD dla DARMOWEGO konta. Sprawdź obsługiwane waluty i dokumentację .

// open exchange URL // valid app_id * REQUIRED *
$exchange_url = 'https://openexchangerates.org/api/latest.json';
$params = array(
    'app_id' => 'YOUR_APP_ID'
);

// make cURL request // parse JSON
$curl = curl_init();
curl_setopt_array($curl, array(
    CURLOPT_URL => $exchange_url . '?' . http_build_query($params),
    CURLOPT_RETURNTRANSFER => true
));
$response = json_decode(curl_exec($curl));
curl_close($curl);

if (!empty($response->rates)) {
    // convert 150 USD to JPY ( Japanese Yen )
    echo $response->rates->JPY * 150;
}

150 USD = 18039,09015 JPY

[ Currency Layer API ]

Zapewnia 1000 żądań miesięcznie za darmo. Musisz się zarejestrować i odebrać dostęp Klucz. Niestandardową walutą bazową jest , a nie obsługiwane na darmowym koncie. Sprawdź dokumentację .

$exchange_url = 'http://apilayer.net/api/live';
$params = array(
    'access_key' => 'YOUR_ACCESS_KEY',
    'source' => 'USD',
    'currencies' => 'JPY',
    'format' => 1 // 1 = JSON
);

// make cURL request // parse JSON
$curl = curl_init();
curl_setopt_array($curl, array(
    CURLOPT_URL => $exchange_url . '?' . http_build_query($params),
    CURLOPT_RETURNTRANSFER => true
));
$response = json_decode(curl_exec($curl));
curl_close($curl);

if (!empty($response->quotes)) {
    // convert 150 USD to JPY ( Japanese Yen )
    echo '150 USD = ' . $response->quotes->USDJPY * 150 . ' JPY';
}

150 USD = 18036,75045 JPY

 13
Author: Madan Sapkota,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-01 17:19:32

Możesz spróbować geoplugin

Poza geolokalizacją wykonaną przez IP (ale IP to IP dostawcy, więc nie tak dokładne), zwracają również waluty i mają przelicznik walut: patrz przykłady.

Mają zaktualizowane 111 walut.

 1
Author: user3227746,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-04 11:56:35

Jeśli szukasz rozwiązania opartego na ruby dla tego problemu, polecam użycie metody Google Calculator rozwiązanie podobne do następującego: http://j.mp/QIC564

require 'faraday'
require 'faraday_middleware'
require 'json'

# Debug: 
# require "pry"


country_code_src = "USD"
country_code_dst = "INR"
connection = Faraday.get("http://www.google.com/ig/calculator?hl=en&q=1#{country_code_src}=?#{country_code_dst}")

currency_comparison_hash = eval connection.body #Google's output is not JSON, it's a hash

dst_currency_value, *dst_currency_text = *currency_comparison_hash[:rhs].split(' ')
dst_currency_value = dst_currency_value.to_f
dst_currency_text = dst_currency_text.join(' ')

puts "#{country_code_dst} -> #{dst_currency_value} (#{dst_currency_text} to 1 #{country_code_src})"
 0
Author: ylluminate,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-06 18:32:17

Oto jeden prosty skrypt PHP, który otrzymuje kurs wymiany między GBP i USD

<?php
$amount = urlencode("1");
$from_GBP0 = urlencode("GBP");
$to_usd= urlencode("USD");
$Dallor = "hl=en&q=$amount$from_GBP0%3D%3F$to_usd";
$US_Rate = file_get_contents("http://google.com/ig/calculator?".$Dallor);
$US_data = explode('"', $US_Rate);
$US_data = explode(' ', $US_data['3']);
$var_USD = $US_data['0'];
echo $to_usd;
echo $var_USD;
echo '<br/>'; 
?>

Kursy Walut Google nie są dokładne samo google mówi = = > Google nie może zagwarantować dokładności kursów walut stosowanych przez kalkulator. Należy potwierdzić Aktualne Kursy przed dokonaniem jakichkolwiek transakcji, na które mogą mieć wpływ zmiany kursów walut. Kursy walut obcych oferowane przez Citibank N. A. są wyświetlane na licencji. Stawki mają charakter wyłącznie informacyjny i są może ulec zmianie bez powiadomienia. Stawki za rzeczywiste transakcje mogą się różnić, A Citibank Nie oferuje zawierania żadnych transakcji po wyświetlanym kursie.

 0
Author: mohamed nur,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-06 18:33:19

Dla wszystkich nowicjuszy szukających podpowiedzi na temat przeliczania walut, spójrz na ten link. Datavoila

To bardzo pomogło med odnośnie mojego własnego projektu w C#. Na wypadek gdyby strona zniknęła, dodam poniższy kod. Wystarczy dodać poniższe kroki do własnego projektu. Przepraszam za formatowanie.

const string fromCurrency = "USD";
const string toCurrency = "EUR";
const double amount = 49.95;
// For other currency symbols see http://finance.yahoo.com/currency-converter/
// Clear the output editor //optional use, AFAIK
Output.Clear();

// Construct URL to query the Yahoo! Finance API
const string urlPattern = "http://finance.yahoo.com/d/quotes.csv?s={0}{1}=X&f=l1";
string url = String.Format(urlPattern, fromCurrency, toCurrency);

// Get response as string
string response = new WebClient().DownloadString(url);

// Convert string to number
double exchangeRate =
    double.Parse(response, System.Globalization.CultureInfo.InvariantCulture);

// Output the result
Output.Text = String.Format("{0} {1} = {2} {3}",
                            amount, fromCurrency,
                            amount * exchangeRate, toCurrency);
 -1
Author: Emperor 2052,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-06 18:25:17