按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
hotels are not ripping you off; they are hedging themselves on the safe side。
Consider the following example of a spread:
EUR。USD 1。4686 1。4687
The EUR。USD term means you are converting one euro (EUR) into a number of US dollars
(USD)。 The first number is the bid; which means that a trader is willing to give 1。4686 US dollars
for every euro。 The second number is saying a trader wants 1。4687 US dollars for every euro。
Essentially; the buyer and seller are 0。0001 US dollars apart。 The exchange spread is normal;
and it moves around because some might be willing to sell at a lower conversion rate; and others
might be willing to buy at a higher conversion rate。
Let’s say one day you enter a hotel in Austria on a skiing holiday。 In your hand; you have
1;000 US dollars; but Austria belongs to the European Union (EU)。 To buy anything in the EU
zone; you need euros。 Being clever; you decide to go on the Internet and check out the going
spread。 It turns out to be the one you’ve just seen。
Standing in the hotel foyer; you have US dollars in your pocket and you need to buy euros。
Thus; you will need to go in the direction USD。EUR。 The way to do that is to divide one by the
posted spread values。 This calculation gives the following conversion rates:
USD。EUR 0。6809 0。6808
The numbers are a bit wrong; because the buyer is willing to give a higher value than the
seller。 Granted; this happens at times on the forex markets; but here; it’s because we used a raw
conversion of EUR。USD。 The market might be a bit higher and lower; but generally speaking;
you have a feeling of what to expect。
You advance to the hotel desk; and you kindly ask what the going rate is for US dollars to
euros。 The concierge gives the following exchange rate:
…………………………………………………………Page 159……………………………………………………………
CH A PT E R 6 ■ L E A R N I N G T HE B AS IC S O F O B J E CT OR I E N TE D P R O G R AM M IN G 137
USD。EUR 0。65120
EUR。USD 1。5010
Doing your calculations; this rate doesn’t seem right。 The hotel is giving you 651。20 euros
for your 1;000 US dollars; but the forex market clearly says the traders would be willing to give
you 680。91 euros。 The hotel appears to be ripping you off by approximately 29 euros。 But the
hotel is not ripping you off; rather; it is hedging its risks。 The spot conversion rates will go up
and down during the day; and the hotel is not in the business of exchanging money。 The hotel
is in the business of giving you room and board。 The hotel managers need to make sure that
when they go to the bank to exchange your dollars for euros; they don’t lose money in the
process。 They ensure this by giving you less money。
Whenever you exchange monies; you should always look at the spreads。 Sometimes the
spreads are good; sometimes they are horrible。 I have found the best spreads are at the banks。
It is a bit more work to get money from your home bank; but usually worth the effort。 Another
option is to pull the money from your credit card; however; sometimes credit cards charge
interest on the money you withdrew。
Now that you have an idea of what’s involved in currency exchange; let’s see what our
sample application will do。
Organizing the Currency Exchange Application
The currency application takes a number of currency units and converts it to a number of other
currency units。 The application will implement the following features:
o Accept and store a currency exchange rate
o Store the currency unit identifiers
o Convert to a currency and back to the original currency
o Distinguish between active currency traders and hotel currency traders
o Implement a spread for hotel currency traders
As in the examples in the previous chapters; the project structure of the currency applica
tion will consist of two projects: a console testing application; named TestCurrencyTrader; and
a library ponent; named CurrencyTrader; which contains the functionality of the hotel
trader and the active trader。
Writing Tests for the
Currency Exchange Application
Since we don’t know exactly how the implementation will appear; let’s start by writing some
tests that will use our implementation。 We want to build the application incrementally; so we’ll
write some tests; write some code; test the code; and continue。 The overall big picture is to be
able to convert from one currency to another。
…………………………………………………………Page 160……………………………………………………………
138 CH AP T E R 6 ■ L E A R N IN G T HE B AS IC S O F OB J E CT OR I E N T E D P R O G R AM M IN G
Getting Started with Structural Code
At the heart of the application are an exchange rate; currency units; and a calculation that
bines the exchange rate with the currency units。 Thus; a logical first step would be to write
test code that bines these elements; something like this:
Dim cls As CurrencyTrader = New CurrencyTrader()
cls。ExchangeRate = 1。46
Dim haveUSD As Double = 100。0
Dim getEUR As Double = cls。Convert(haveUSD)
Console。WriteLine(〃Converted 〃 & haveUSD & 〃 USD to 〃 & getEUR)
This code is unique in that the test code has all of the responsibility of making sure the
correct data is assigned to the structure。 To clarify this; here is the same code with random vari
able names used instead of the identifiers for the currency variables: