On 11 Feb 2020, at 3:59, Edward d'Auvergne wrote:
F::Q uses this URL for all queries:
https://www.alphavantage.co/query?function=GLOBAL_QUOTE&datatype=json&symbol=IDRUSD&apikey=$MY_KEY
The result I see is:
{
"Global Quote": {
"01. symbol": "IDRUSD",
"02. open": "0.0001",
"03. high": "0.0001",
"04. low": "0.0001",
"05. price": "0.0001",
"06. volume": "0",
"07. latest trading day": "2020-02-10",
"08. previous close": "0.0001",
"09. change": "0.0000",
"10. change percent": "0.0000%"
}
}
It doesn't use that URL for currency exchange rates. It uses
https://www.alphavantage.co/query?function=CURRENCY_EXCHANGE_RATE&from_currency=IDR&to_currency=USD&apikey=xxx
which returns
{
"Realtime Currency Exchange Rate": {
"1. From_Currency Code": "IDR",
"2. From_Currency Name": "Indonesian Rupiah",
"3. To_Currency Code": "USD",
"4. To_Currency Name": "United States Dollar",
"5. Exchange Rate": "0.00007297",
"6. Last Refreshed": "2020-02-12 06:30:18",
"7. Time Zone": "UTC",
"8. Bid Price": "-",
"9. Ask Price": "-"
}
}
It looks like this code then kicks in, from the "currency" subroutine
in lib/Finance/Quote.pm:
"""
if ( $exchange_rate < 0.001 ) {
# exchange_rate is too little. we'll get more accuracy by using
# the inverse rate and inverse it
my $inverse_rate = $this->currency( $to, $from );
{
local $^W = 0;
return undef unless ( $exchange_rate + 0 );
}
$exchange_rate = int( 100000000 / $inverse_rate + .5 ) /
100000000;
}
"""
That code should be removed. It actually gets the same accuracy and it
gets a different answer. The reverse quote is 13683.5. This inverts to
a rate of 0.00007308 which is not the same as 0.00007297. That's a
trivial difference, but F::Q should really return the quote it was asked
for if possible.
I noticed that there was some action on my pull request after you
rattled their cage. Thanks for doing that. That may make this
discussion largely irrelevant.
Mike
_______________________________________________
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel