Automated Trading Machine (ATM) makes it simple to remove fear and greed from your trading. Automated trading is no longer just for the rich or nerdy. Our revolutionary software runs on your computer, using your trading rules, but none of your emotions. There's just one requirement - you know how to use a mouse. Learn more...
ATM
Default Broadcast Settings
There are 4 default Broadcast Settings:
- All messages show up through a popup-notifier. This shows up temporarily, for 30 seconds (setting on the Options window).
- All messages show up as an icon in the system tray. The icon shows permanently, or at least until you click it.
- Error messages are sent to us via Notify.io, but only if you said that was okay when you created the settings file.
- "Settings File Opened" messages are sent to us via Notify.io, but only if you said that was okay when you created the settings file.
Deleting or changing these defaults
Deleting / enabling / disabling these 4 default Broadcast Settings is fine. They are normal Broadcast Settings just as if you had created them.
If you did not give us permission to send ourselves the error messages or "settings file opened" messages, you might be surprised to see those Broadcast Settings there. But rest assured they would be disabled. Feel free to delete them if you want.
- Login to post comments
Scheduled Processes
Scheduled process run from the Command Centre. Some run at recurring intervals of your choosing, such as every minute, every 5 minutes, every 30 seconds, every 24 hours, or whatever. Others are "streaming" in that it's more like flicking a light switch on or off.
These scheduled processes do various things. Some download price bars from a broker, some create price bars, one kicks off automated trading, another alerting, another downloads events from the Forex Factory calendar and converts them to holidays. And so on.
Scheduled processes for downloading price bars
There are streaming downloads, recurring downloads, special recurring downloads, backfills, and historical prices.
Streaming downloads lets ATM receive prices from the broker as soon as the broker sends them. The brokers are always broadcasting the new prices, and by turning on the streaming process what you're telling ATM to do is log in to that broker and start saving the prices it receives. Mostly brokers offer tick prices in this way, and then you would need to also run the recurring process for that broker that creates price bars.
Recurring downloads lets you grab a few bars at regular intervals. Special recurring downloads target only those price bars that are needed for trading systems that are auto-trading right then at that time (and active alerts).
Backfill refers to trying to get price bars you might have missed, had your computer been turned off, disconnected from the internet, or crashed.
Historical prices are those going back potentially many years.
Not all brokers offer all options. But yet there are all of these scheduled processes for all the brokers. The ones that don't actually work have an explanatory note, telling you what to use instead. If having those that don't work still appear in the list is a bit strange, you can filter the list to only those that can be run.
- Login to post comments
Messaging Overview
ATM is automated trading software. Often you'll start it and go and do other things. But yet you will probably also want to be alerted when important events happen. ATM gives you a variety of ways to be notified.
What you do is create Broadcast Settings (Admin > Broadcast Settings). This is where you tell ATM what kind of messages you want to be notified of, and how you want to be notified. For example, you may choose to be notified by email for all kinds of messages. And, in addition, you want any error messages to be sent to your phone.
With the appropriate Broadcast Settings in place, you then just go about your business using ATM as normal. Backtesting, automated trading, alerts, etc, send out messages, and these messages are broadcast (or not) as per the Broadcast Settings.
To your email address
Email messages can be sent to any email address.
However, you have to first set up an email address to be used as the sending address. That is, the address that goes in the "From:" field. And this sending address must be a Gmail account (from Google). Read more here.
Gmail allows 500 messages to be sent per day from a single account. If we simply used our Gmail account to send the messages, we can reach 500 messages easily. But everyone using their own Gmail accounts would make it very difficult to reach 500.
To notification handlers
There are a couple of free notification handlers out there which aim to standardise your messaging experience. The theory is that other software sends their messages to these handlers, and the handlers show them to you on your computer, or not, or send the messages to you (via email, SMS, etc), or not, based on your settings.
In short, you can get ATM to send messages to these notification handlers, and the handlers work out what to do with the messages based on your settings.
Growl
Mac users will be very familiar with Growl, which has a Windows equivalent suitably called Growl For Windows. From their website:
Growl gives you full control over how you are notified and what action (if any) you want to take in response to the notification. You can choose to be alerted with a visual indicator or an audible alert, both, or neither. You can choose the type of display that is shown, whether the display remains on the screen, the importance of the notification, and even if the notification should be forwarded to another computer. You can have notifications that trigger an email, run a script, launch a program, or are read out loud.
Snarl
Snarl is very similar to Growl. It's up to your personal preference as to which you install. No harm in using both.
Notify.io
Notify.io is another notification handler, but is slightly different in that you don't need to install anything on your computer. Rather you just create an account on the Notify.io website. (Be warned that at time of writing, Notify.io was in the alpha stages of development).
To your mobile/cell phone
There are two different SMS providers (or "gateways") that can be connected to directly by ATM. One is free with limited coverage, and the other (Clickatell) is not free but covers most of the planet. It's pretty cheap though. See here for more info.
In addition, there is at least one more SMS provider available indirectly. You can get ATM to send messages to Notify.io, and in your Notify.io account you can set up TextAuth as your SMS "outlet". Messages would be sent from ATM > Notify.io > TextAuth > your mobile/cell phone. Most likely there are other options available through Growl and/or Snarl.
And that's just the possibilities for traditional SMS messages. ATM can also connect to Notifo, which can push messages to your iPhone, Android or Blackberry.
Via Twitter
Twitter has 2 kinds of messages - tweets and direct messages (DMs). Tweets are public for all to see. DMs go to an individual and are similar to email. However, DMs only work for people that are already following you. Luckily, you can DM yourself (and we imagine this is how people would use Twitter for notifications).
Other
If you are normally in front of your computer, the popup-notifier and/or icon in the system tray might be of use.
Setup Instructions
Some broadcast methods need a sending address, some need the receiver to first "allow" them to send messages, and so on. Setup instructions are all on the "Messaging" tab of the Options window (Admin > Options).
See also:
- Login to post comments
Command Line Arguments
ATM can be started from the command-line (DOS prompt). All arguments below are optional, except that specifying /scriptargs= without /script= will have no effect. The ordering of the arguments is not important.
Remember that spaces are used to delimit command-line arguments, so if an argument has a space in it then you need to use double-quotes. In fact it's safest just to always use double-quotes.
/file=
When you start ATM normally, it either tries to automatically open the last file you had open, or shows the New File Wizard. If you do not use /file= then ATM reverts to that default behaviour. If you do use the argument then ATM opens the settings file you specify instead.
C:\>"C:\InstallDir\tsatm.exe" /file="C:\User\Bob\Settings File 1.tsatm"
/title=
Prefixes your text to the ATM title (which is normally "Thinking Stuff's ATM vX.Y.Z").
C:\>"C:\InstallDir\tsatm.exe" /title="My ATM 1"
Using the arguments above the title becomes:
My ATM 1 - Thinking Stuff's ATM vX.Y.Z
/script=
Runs a script / executable / batch file of your choosing after ATM has finished opening a settings file.
C:\>"C:\InstallDir\tsatm.exe" /script="C:\SomeDir\SomeProgram.exe"
/scriptargs=
Passes the arguments to the script specified by /script=. But there are some hoops to go through to get the right arguments passed to your script. DOS first parses what you type at the command-line, and then opens ATM with the command-line arguments you give it, and then ATM parses those arguments and forwards anything in /scriptargs= to the script. Here's an example:
C:\>"C:\InstallDir\tsatm.exe" /script="C:\SomeDir\SomeProgram.exe" /scriptargs="arg1 arg2 arg3"
That passes these 3 arguments to SomeProgram.exe:
- arg1
- arg2
- arg3
It's especially important to wrap those script arguments in double-quotes, otherwise only the first one will be treated as an argument to be passed to the script (the other two being considered arguments being passed to ATM due to the spaces).
Scriptargs that contain spaces
For example, you might want to pass a filename that has spaces through as an argument to the script. Now it starts to get a little tricky. This is the wrong way:
C:\>"C:\InstallDir\tsatm.exe" /script="C:\SomeDir\SomeProgram.exe" /scriptargs="arg1 with spaces arg2 arg3"
That passes 5 arguments to SomeProgram.exe:
- arg1
- with
- spaces
- arg2
- arg3
So you might try to wrap "arg1 with spaces" with double-quotes. Like this:
C:\>"C:\InstallDir\tsatm.exe" /script="C:\SomeDir\SomeProgram.exe" /scriptargs=""arg1 with spaces" arg2 arg3"
But that wouldn't work either. Those first two double-quotes in /scriptargs="" would cancel each other out, and much like having no double-quotes at all, only arg1 would make it to SomeProgram.exe.
In this case what you need to do is, while remembering to wrap the entire thing in double-quotes, put a backslash before every double-quote in-between those surrounding double-quotes:
C:\>"C:\InstallDir\tsatm.exe" /script="C:\SomeDir\SomeProgram.exe" /scriptargs="\"arg1 with spaces\" arg2 arg3"
Now 3 arguments will be passed to SomeProgram.exe:
- arg1 with spaces
- arg2
- arg3
All good. Notice those double-quotes don't make it into SomeProgram.exe per se - they are just used to indicate that the first 3 words are all part of the first argument. More than likely "arg1 with spaces" would actually be a filename with spaces, so that's how you'd do it.
Scriptargs that contain double-quotes
First I have to ask, ok, why? But it's possible. And ugly. Luckily this should be a very rare case.
C:\>"C:\InstallDir\tsatm.exe" /script="C:\SomeDir\SomeProgram.exe" /scriptargs="\"arg1 \\"\"with\\"\" spaces\" arg2 arg3"
That's right - you need to type \\"\" for each double-quote that you want to make it into SomeProgram.exe. Here are the arguments that will be passed now:
- arg1 "with" spaces
- arg2
- arg3
%title% and %file%
These two placeholders (or tokens, or whatever) will be converted by ATM into the application title and the settings file full path, respectively, and then passed on to the script. The values used are simply whatever file was opened regardless of method, and whatever application title is visible regardless of it being customised or not:
C:\>"C:\InstallDir\tsatm.exe" /script="C:\SomeDir\SomeProgram.exe" /scriptargs="%file% %title%"
Now the 2 arguments are:
- C:\User\Bob\Settings File 1.tsatm
- Thinking Stuff's ATM vX.Y.Z
(Assuming of course that "C:\User\Bob\Settings File 1.tsatm" is the file opened and you didn't use a custom title).
These placeholders can only be used in the /scriptargs= argument. ATM will put double-quotes around them individually, so you don't need to. But you still need to wrap the entire /scriptargs= setting with double-quotes as per the example above.
Entering this information in the Options window
/file= aside, all of these settings are also available in the Options window in ATM. Two points to note about that:
- If you run ATM from the command line, the arguments above will override the settings in the Options window.
- Entering the values in the Options window is much easier with respect to spaces and double-quotes (because we no longer need to worry about the DOS level of parsing). You don't need to wrap the entire thing in double-quotes. But you do still need double-quotes for arguments with spaces. Forget about the backslashes though:
In DOS prompt: /scriptargs="\"arg1 with spaces\" arg2 arg3"
Field on Options window: "arg1 with spaces" arg2 arg3And to enter an argument which contains a double-quote, now you use the backslash:
In DOS prompt: /scriptargs="\"arg1 \\"\"with\\"\" spaces\" arg2 arg3"
Field on Options window: "arg1 \"with\" spaces" arg2 arg3
%title% and %file% can also be used in the arguments field of the Options window.
Testing
We provide a simple exe file which can use to test your argument settings. Located in the ATM installation directory is a sub-directory called "testargs". In there you will find a file called TestArgs.exe. All that file does is show a message telling you the arguments you passed to it.
Set the script to that TestArgs.exe file, and play around with your argument settings until you get it right. Then change the script to be the actual script you want to use.
TestArgs.exe was written using AutoHotKey (AHK). TestArgs.ahk, also in the testargs sub-directory, is the AHK code. It's mostly a direct copy-paste from an example in the AHK help file.
Why would you want you want to do any of that?
See automating ATM.
- Login to post comments
Getting Started
We guess that if you are using ATM then you have one or more of these goals in mind. Follow the links...
- Download historical prices, e.g. from FXCM - video #1, video #2, wiki
- Load historical prices from text files, e.g. from Gain Capital - video, text tutorial, wiki
- Backtest - video, wiki
- Price and Indicator-based alerts - wiki
- Automated trading - wiki
And some other things which aren't end-goals themselves, but which feed into some of the above:
- Login to post comments
Video: Creating A Custom Indicator
This tutorial demonstrates how to create a custom indicator, which is then charted.
It assumes:
- You started ATM and opened a settings file.
- That settings file already has some price bars in it.
- ATM is sitting there ready to go.
This tutorial does these things:
- Charts some price bars.
- Adds an indicator to the chart - the LOW minus 0.3%
- Creates a custom indicator implementing the Chandelier Stop.
- Adds the Chandelier Stop indicator to the chart.
It's probably better NOT TO WATCH this video tutorial if you are new to ATM, and especially if you're not good with computers. Custom indicators are the hardest things to understand, and you are totally going to get the wrong impression about this software. ATM comes with a whole number of pre-made custom indicators, so most likely you will not need to create one of your own.
On the other hand, if you can understand this then the rest of the software will be a cinch.
Click here to watch the video, and use the browser's back button to come back. Or click here to open in a new window.
Video: Backtesting
This tutorial demonstrates how to create a trading system, and then backtest that system using historical price bars.
It assumes:
- You started ATM and opened a settings file.
- That settings file already has some price bars in it.
- ATM is sitting there ready to go.
This tutorial does these things:
- Creates a trading system.
- Creates a backtest configuration entry.
- Runs the backtest.
- Views the chart. We decide how the system might be made better.
- Edits the trading system.
- Runs the backtest again.
- Views the chart again to see if we did actually make it better or not.
There are several objective ways of determining if a price is trending or ranging, and the trading system we create in this tutorial was inspired by the Two Bollinger Bands method. For a stop loss we use the Chandelier Stop described in more detail here.
Click here to watch the video, and use the browser's back button to come back. Or click here to open in a new window.
See also:
- Login to post comments
Video: Loading Text Files And Creating Price Bars
This tutorial starts from a brand new settings file, loads a text file of historical tick prices, creates price bars from those ticks, and charts the price bars. The file in question was obtained from Gain Capital, but the theory is the same for text files from any source.
Note, however, that the file we used in this particular case was an older one. Gain Capital's newer files are slightly different. See the settings to use on the File Loader window.
This tutorial assumes:
- You started ATM, created a new settings file, opened it, and ATM is sitting there ready to go.
- You downloaded some text files containing historical prices.
This tutorial does these things:
- Loads the historical tick prices from the files.
- Creates 10-Minute bars from the ticks.
- Creates Hourly bars from the 10-Minute.
- Charts the 10-Minute bars.
A very similar process is described (in words) in this post.
Click here to watch the video, and use the browser's back button to come back. Or click here to open in a new window.
See also:
- Login to post comments
Video: Downloading Historical Prices From FXCM (Reverse Order)
This tutorial starts from a brand new settings file and goes through to downloading historical prices from FXCM.
It assumes:
- You installed the FXCM bits when you installed ATM.
- You started ATM, created a new settings file, opened it, and ATM is sitting there ready to go.
- You used this information to go and open an FXCM demo account, and also you logged in to that account using the FXCM trading platform and got your account number.
In this tutorial:
- Try to download prices, but realise you need to create a Data Manager entry first.
- Try to create a Data Manager entry, but realise you need to create a User first.
- Enter the FXCM demo user and account details.
- Create the Data Manager entry for EUR/USD, Daily, FXCM.
- Start the download.
This is the opposite order to that demonstrated in this video tutorial. But actually the method on this current page is more intuitive and also works out to be a bit quicker.
Anyway... let's download some EUR/USD Daily bars...
Click here to watch the video, and use the browser's back button to come back. Or click here to open in a new window.
See also:
- Login to post comments
Video: Downloading Historical Prices From FXCM
This tutorial starts from a brand new settings file and goes through to downloading historical prices from FXCM.
It assumes:
- You installed the FXCM bits when you installed ATM.
- You started ATM, created a new settings file, opened it, and ATM is sitting there ready to go.
- You used this information to go and open an FXCM demo account, and also you logged in to that account using the FXCM trading platform and got your account number.
This tutorial does these things:
- Enters the FXCM demo user and account details.
- Creates the Data Manager entry for EUR/USD, Daily, FXCM.
- Starts the download.
We, as creators of the software, know the pre-requisites and create them first. However, a normal person just knows that they want to download prices, so they might try that first without entering any of the pre-requisite information. There's a sister video tutorial doing it that way as well.
Ok, so... let's download some EUR/USD Daily bars...
Click here to watch the video, and use the browser's back button to come back. Or click here to open in a new window.
See also:
- Login to post comments
Recent blog posts
- New Release: v3.0.3 - Everything Except Autotrading
- Mid July 2010 Update
- Start of June 2010 Update
- New Release: v3.0.2 - Copy, better error message, more options
- New Release: v3.0.1 - The Stabilise-ening
- Ah, The First Bug [Fixed in v3.0.1]
- New Release: v3.0.0 - The Rewrite
- Start of February 2010 Update
- End Of 2009 Update
- New Release: v2.0.10

Recent comments
21 weeks 1 day ago
36 weeks 3 days ago
42 weeks 1 day ago
42 weeks 1 day ago
48 weeks 4 days ago
49 weeks 6 days ago
1 year 4 weeks ago
1 year 4 weeks ago
1 year 7 weeks ago
1 year 12 weeks ago