If traders are positive on the prospects for the Yen, they would expect the number on the right to go down – i.e. the Yen would be getting stronger against the Dollar. Traders would be buying less Yen with a Dollar as the Yen got stronger. Similarly, if the Yen was expected to weaken, forex traders would expect the Yen number to go up, reflecting the fact that the dollar could buy more yen.
Robust Strategies - I have only demonstrated some simple random signal generating "toy" strategies to date. Now that we are beginning to create a reliable intraday forex trading system, we should start carrying out some more interesting strategies. Future diary entries will concentrate on strategies drawn from a mixture of "technical" indicators/filters as well as time series models and machine learning techniques.
Margin requirements for futures and futures options are established by each exchange through a calculation algorithm known as SPAN margining. SPAN (Standard Portfolio Analysis of Risk) evaluates overall portfolio risk by calculating the worst possible loss that a portfolio of derivative and physical instruments might reasonably incur over a specified time period (typically one trading day.) This is done by computing the gains and losses that the portfolio would incur under different market conditions. The most important part of the SPAN methodology is the SPAN risk array, a set of numeric values that indicate how a particular contract will gain or lose value under various conditions. Each condition is called a risk scenario. The numeric value for each risk scenario represents the gain or loss that that particular contract will experience for a particular combination of price (or underlying price) change, volatility change, and decrease in time to expiration.
Free Margin – Your free margin represents your total equity minus any margin used for leveraged trades. For example, if your equity is $1,000 and your used margin is $100, your free margin would amount to $900. Following your free margin is extremely important, as it is used to withstand negative price fluctuations from your open trades and to open new leveraged trades. It’s important to understand that your free margin increases with profitable positions, but decreases with your losing positions. Once the free margin drops to zero or below, your broker will activate the so-called margin call and close all your open positions at the current market rate, in order to prevent your equity from falling below the required margin.
Note also that when we begin storing our trades in a relational database (as described above in the roadmap) we will need to make sure we once again use the correct data-type. PostgreSQL and MySQL support a decimal representation. It is vital that we utilise these data-types when we create our database schema, otherwise we will run into rounding errors that are extremely difficult to diagnose!
Trading on margin is extremely popular among retail Forex traders. It allows you to open a much larger position than your initial trading account would otherwise allow, by allocating only a small portion of your trading account as the margin, or collateral for the trade. Trading on margin also carries certain risks, as both your profits and losses are magnified.
For those of you who are new to source version control you will probably want to read up on how git (and version control in general) works with the fantastic free ebook Pro Git. It is worth spending some time learning about source control as it will save you a huge amount of future headache if you spend a lot of time programming and updating projects!

Free Margin – Your free margin represents your total equity minus any margin used for leveraged trades. For example, if your equity is $1,000 and your used margin is $100, your free margin would amount to $900. Following your free margin is extremely important, as it is used to withstand negative price fluctuations from your open trades and to open new leveraged trades. It’s important to understand that your free margin increases with profitable positions, but decreases with your losing positions. Once the free margin drops to zero or below, your broker will activate the so-called margin call and close all your open positions at the current market rate, in order to prevent your equity from falling below the required margin.
Multiple Currency Pairs - Similarly we need to support the major currency pairs beyond "Cable" (GBP/USD). There are two aspects to this. The first is to correctly handle the calculations when neither the base or quote of a currency pair is equal to the account denomination currency. The second aspect is to support multiple positions so that we can trade a portfolio of currency pairs.
Let's presume that the market keeps on going against you. In this case, the broker will simply have no choice but to shut down all your losing positions. This limit is referred to as a stop out level. For example, when the stop out level is established at 5% by a broker, the trading platform will start closing your losing positions automatically if your margin level reaches 5%. It is important to note that it starts closing from the biggest losing position.
Forex trading, also known as foreign exchange trading or currency trading, is where an investor tries to make money by buying and selling currencies on the foreign exchange market. Most investors will follow trends and use strategies to optimise their return. This is a very basic definition that does not reflect the full complexity of Forex trading; our free workshops are ideal for people who are unfamiliar with the concept and want to quickly achieve an in-depth insight into how this all works.
Local Portfolio Handling - In my opinion carrying out a backtest that inflates strategy performance due to unrealistic assumptions is annoying at best and extremely unprofitable at worst! Introducing a local portfolio object that replicates the OANDA calculations means that we can check our internal calculations while carrying out practice trading, which gives us greater confidence when we later use this same portfolio object for backtesting on historical data.
×