Monday, 20 June 2011

Update exchange rate using Yahoo Web Service

In this example I am using Yahoo's online currency converter to update the exchange rates table. An idea would be to put this code in a batch class, which you can schedule to run daily.

static void YahooCurrencyUpdate(Args _args)
{
    Currency                    currency;
    ExchRates                   exchRates;
    str                         uri;
    str                         exchRate = "";
    str                         fromCurrency, toCurrency;

    System.Net.HttpWebRequest   httpRequest  = null;
    System.Net.HttpWebResponse  httpResponse = null;
    CLRObject                   clro         = null;
    System.IO.Stream            stream       = null;
    System.IO.StreamReader      streamReader = null;
    ;

    while select currency
    {
        fromCurrency    = CompanyInfo::find().CurrencyCode;
        toCurrency      = currency.CurrencyCode;

        uri = "http://finance.yahoo.com/d/quotes.csv?e=.csv&f=l1&s=" + fromCurrency + toCurrency + "=X";

        try
        {
            new InteropPermission(InteropKind::ClrInterop).assert();
            clro         = System.Net.WebRequest::Create(uri);
            httpRequest  = clro;
            httpResponse = httpRequest.GetResponse();
            stream = httpResponse.GetResponseStream();
            streamReader = new System.IO.StreamReader(stream);
            exchRate = streamReader.ReadToEnd();
            info(exchRate);

            if (str2num(exchRate) > 0)
            {
                exchRates.initValue();
                exchRates.CurrencyCode = toCurrency;
                exchRates.FromDate = systemdateget();
                exchRates.editExchRate(true, str2num(exchRate) * 100);
                exchRates.insert();
            }

            CodeAccessPermission::revertAssert();
        }
        catch(Exception::CLRError)
        {
            throw error(AifUtil::getClrErrorMessage());
        }
    }
}

Additional information:
Microsoft provides a simple example on how to consume a web service. In their example they take a currency converter too.
http://www.microsoft.com/downloads/details.aspx?FamilyID=ef3a50d2-61c8-4ffc-bce8-2caf038f98cd&displaylang=en
The Microsoft whitepaper was written to illustrate on how to consume web services using references.

There are a lot of online services that provide exchange rates and methods to consume. Yahoo provides the days rates via the web services but not historical rates.

Other online services:
www.thomsonreuters.com,
www.oanda.com,
www.xe.com

2 comments:

Blogger said...

eToro is the #1 forex broker for beginning and established traders.

Blogger said...

ForexTrendy is a state of the art software capable of recognizing the most profitable continuation chart patterns. It scans through all the forex pairs, on all time frames and analyzes every potential breakout.