1. Trading Systems Coding: Introduction
  2. Trading Systems Coding: System Design
  3. Trading Systems Coding: The Coding Stage
  4. Trading Systems Coding: The Coding Process
  5. Trading Systems Coding: Testing, Troubleshooting and Optimizing
  6. Trading Systems Coding: Using Your System
  7. Trading Systems Coding: Conclusion


By Justin Kuepper
Contact Justin

Now that we have a design document in hand, we can look at how these rules are put into code that a computer can understand. In this section, we'll break down a section of code and look at it piece by piece. For this example, we will use MetaTrader's programming language MetaQuotes II to build a very simple moving average trading system.

Defines: MATrendPeriod(100);

Var:MaCurrent(0),MaPrior(0);

If Bars < 100 Then Exit;

If FreeMargin < 1000 then Exit;

maCurrent =iMA(MATrendPeriod,MODE_SMA,0);

maPrior =iMA(MATrendPeriod,MODE_SMA,1);

If maCurrent > maPrior then

{SetOrder(OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,RED); Exit;};


If maCurrent < maPrior then

{SetOrder(OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,RED); Exit;};

The If/Then Format
After taking a brief look at this code, you should recognize a few elements that we touched on in the design phase. For example, you should recognize the If/Then format that we used when constructing our design. To get a better understanding of this code, let's break it down and analyze each part:

Defines: MATrendPeriod(100);

Var: MaCurrent(0),MaPrior(0);


Here, we're simply defining the moving average that we are using by saying that we want it to be an average of the last 100 bars. The Defines function here lets us do that for any type of data we want. After that, we simply invent two variables (items which we create to hold data) MaCurrent(0) and MaPrior(0). These two variables will hold the data that we will set in a later step.

If Bars < 100 Then Exit;

If FreeMargin < 1000 then Exit;

Here we see the If/Then format that we used in the design phase put to work. These two statements tell the computer to exit if certain conditions aren't met. Let's translate these two commands into English:

If Bars < 100 Then Exit; à "If there are fewer than 100 bars (data points) on the chart, then exit the program without doing anything.''

If FreeMargin < 1000 then Exit; à "If my account has less than $1,000 in available funds, then exit the program without doing anything.''

You can translate any criteria you want into this format and put it at the beginning of your program in order to adapt to certain situations.

Buy and Sell Signals

maCurrent =iMA(MATrendPeriod,MODE_SMA,0);

maPrior =iMA(MATrendPeriod,MODE_SMA,1);

Now let's make use of the two variables we described above. Let's take these statements apart to see what they are doing:

maCurrent = à Here we are telling the computer to assign the following information to "maCurrent''.

iMA(MATrendPeriod,MODE_SMA,0); à Here we are using a simple statement, which uses the following basic format: Study(TimePeriod,Mode,Start).

Note that you can replace iMA with MACD, RSI or any other studies your trading system may be using. You can also replace the parameters to suit your own system.


If maCurrent > maPrior then

{SetOrder(OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,RED); Exit;};

Now we are getting somewhere! Here is the part of the code that tells the computer when to buy. Notice that we are making use again of the If/Then format that we used in the design document. Let's translate this to English to see what's happening:

If maCurrent > maPrior then { à "If the current Moving Average is greater than the prior Moving Average, then…''

SetOrder( à "Create an order entry to …''

OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,RED à "Buy my defined number of lots at the ask price plus my take profit point, and mark it as a red point on the chart.''

); à "End the order.''

Exit; à "Exit the trading strategy.''

}; à "End the If/Then statement.''




Note that the Take Profit Point is something that is defined by users when they add the trading system to their charts. Also notice that we are buying at the ask price and selling at the bid price - this is a key feature, especially when creating a system for stocks.

If maCurrent < maPrior then

{SetOrder(OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,RED); Exit;};

Finally, we have our code that tells the computer when to take a short position. Note that this statement is almost identical to the "buy'' statement, aside from the OP_SELL instead of OP_BUY as well as the usage of the bid price as opposed to the ask price.

Conclusion
And there you have it - the bare bones of what a trading system code looks like. Please note that the above code is not a complete trading system, as it does not include any commands to close open positions. Such additional aspects can be implemented using a format similar to the code we've shown.

In the next section of this tutorial, we will go into greater depth regarding the specific ways in which your trading system can be converted to code.

Trading Systems Coding: The Coding Process

Related Articles
  1. Trading

    Trading Systems Coding: Introduction

    By Justin Kuepper Contact Justin Trading systems are simply sets of rules that traders use to determine their entries and exits from a position. Developing and using trading systems can help ...
  2. Trading

    Trading Systems Coding

    Automate your trades by translating your strategy into a language your computer can implement in this hands-free approach to investing.
  3. Trading

    Code Climate: How it Works and Makes Money

    Learn more about Code Climate and its suite of static program analysis tools used by software developers to produce and maintain high-quality software code.
  4. Trading

    Catching A Falling Knife: Picking Intraday Turning Points

    Trying to pick the absolute top and bottom points can lead to excessive losses. This strategy allows you to hedge your risk.
  5. Markets

    Can Japan's Stewardship Code Turn Passive Funds Into Active Managers?

    Institutional investors in Japan have been criticized for being too cozy with corporates. Can a code force them to focus on the needs of beneficiaries?
  6. Trading

    How To Start Trading: Trading Plan Development

    A trading plan should including rules about how and when to place trades that includes: the markets to be traded, primary chart intervals, indicators and settings, rules for position sizing, ...
  7. Trading

    FX Exit Strategies: Keeping Your Profits

    There are several useful methods for exiting a position, all which are easy to execute and can be implemented into a trading plan.
  8. Trading

    Day Trading Strategy Steps

    Five trading strategy steps for building your own day trading strategies, managing risk, finding entry and exit points and testing for profitability.
  9. Investing

    Protect Your Gains From Volatility With These 3 Rules

    It's been said that trading is the hardest way to make easy money. And after more than two decades in the markets, I wholeheartedly agree. The vast majority of investment advisors, brokers and ...
  10. Trading

    10 Steps To Building A Winning Trading Plan

    It's impossible to avoid disaster without trading rules - make sure you know how to devise them for yourself.
Trading Center