NOTE: Wherever you see the logo, it indicates a feature which is only available in FCharts Pro.
The information in this help file is current up to FCharts version 1.5.23v. Because the program changes so quickly, there may be new and/or changed features in more recent versions. However, features discussed in this help file will still work in newer versions, and usually work better or more intuitively.
Disclaimer
FCharts SE and FCharts PRO come with no warranty. Use these programs at your own risk. I can't check every combination of data that you might feed into this software, and therefore I can't be held responsible for what comes out. If you are uncomfortable with that, please don't use this program.
Although I have tested this software, I do not guarantee the accuracy, integrity or quality of the information given by this software. Any reliance upon the information shall be at your sole risk.
Information presented by these programs is not suitable to be used as investment advice. You should seek professional advice before making any investment decisions relying on the information provided.
FCharts will import price data and display it in a graphical format. If you choose, you may enter variables in the formula boxes and view indicators on the current chart, BUT these programs do not make guesses or judgements, they just present factual data on charts. What you read into those charts is your business.
Finally, Trading is inherently risky. You should always seek professional advice before buying and selling stocks.
From this point on, I shall refer to the software as 'FCharts' unless discussing a feature specific to FCharts PRO.
Before you get to the rest of the manual, let me explain about the inbuilt auto-updater. By default, this feature is switched off, but if you'd like to know when a new release of this program is available you should manually 'Check for Update' and then ensure that 'Disable automatic checking' is un-ticked. See the image below for a reference:

If this option is unticked, the program will perform a check for a new update once a week. Assuming you run the program, that is. This feature is not something which runs in the background all the time.
Back to main menu
Terms of Use
"FCharts Pro" is a commercial product, and may not be distributed. All rights to "FCharts Pro" remain the property of Spacejock Software.
"FCharts SE" is a licensed Freeware product and may be freely distributed and used provided full credit is given to Spacejock Software, and no fee is charged for its use. All rights to "FCharts SE" remain the property of Spacejock Software.
It is strictly forbidden to reverse engineer, attempt to reverse engineer, decompile, or otherwise make use of any part of the core code that constitutes FCharts. Any such activity will result in criminal prosecution and the pursuit of damages.
Spacejock Software retains all rights to change or modify the terms of use and distribution for this program at any time.
Back to main menu
IT WON'T RUN!
Or 'what to do if things go wrong'
First, there is little that can go wrong... go wrong... go wrong... Actually, the installer is self-contained, the program only uses standard Microsoft components and it uses as few of those as possible. It's been tested and proven on a huge range of systems, but there are still a couple of things to check if you can't get the program to run:
If you install an FCharts 'Update' package without first having installed the full package, several system files may not be present on your system. The fix is to download and install the full FCharts package from www.spacejock.com. Then try running FCharts again.
If you get an 'Error 75' when starting the program: This one will occur if you back up your FCharts folder to CD and then copy the files back to your computer and try to run them. Copying to CD makes all files read-only, so after copying them off you have to do one of the following:
Windows XP or 2000. Right-click the FCharts program folder and choose properties, then untick the 'Readonly' box and click Apply.
Other versions of Windows. Open a command prompt (Start - Programs - Command Prompt) and type the following:
attrib -r /s "C:\program files\fcharts\*.*"
(Note the space after the '-r' and the '/s'.) You should modify the C:\program files\fcharts\ path to suit your installation.
When you press enter it will change all the files back to read/write and the program will work.
If you have done all the above and it still doesn't run, visit www.spacejock.com and see whether there is an updated version available. The very latest version will always be available as an update file from the Freecharts page on www.spacejock.com. (FCharts Pro uses the same installer) You can also check the following page: Updates page
If you've tried everything and it still doesn't work, visit the contact page on my website and submit a bug report.
You can also check the FCharts Forum where you will find a FAQ and discussion amongst other users and the programmer.
Back to main menu
Using the Program
When you look at the main screen you will see a number of buttons surrounding the chart windows.

In the top left corner you will see a small coloured label containing the letters 'ASX'. Click this label and you will be able to enter a code to describe the current database. (e.g. NYSE) This is useful if you work with several copies of the program each for a different stock market.
Right-click this label and you can add additional databases, each with their own name, tickers and price data.
Across the top of the main screen you will see five drop-down list boxes. The first drop-down list is the Ratings list. This is where the results of a market scan are displayed. When you select one of these ratings, the PREV and NEXT buttons will be restricted to movement within this narrow range of stocks. See the Market Scanner section for an explanation of what the entries mean.
The second drop-down list is the Watch list. When you add or move companies to a watchlist, you are telling the program to show those companies when the watch list is selected. When you choose a watch list, you are restricting the current range of stocks to those which are included in said list. When you click NEXT and PREV you will be able to cycle through the stocks in this watchlist.
Note that choosing an entry in BOTH lists (Ratings and Watch) will further restrict your current range of stocks to those which MATCH both lists. E.g. if you select (1) in the left-hand list and 'Owned' in the right, NEXT and PREV will take you through stocks which matched Condition (1) during a scan AND are in the 'OWNED' list.
The next drop-down is the title list. This is where you will see the range of stocks matching the Ratings and/or Watch lists. If you only see stock codes, you need to import a titles file for your database (these are the CSV files supplied with the program, the ones in the Symbols folder with 'Titles' in the filename.) See Importing Other for details.
If you click on this drop-down, start typing a title, and press the Down arrow on your keyboard, the list will jump to the first matching stock. E.g. Start typing Tel, press the down arrow, and the first stock beginning with 'Tel' will be highlighted.
You can also select the current chart source by clicking the required company in the drop-down list.
The next list selects the length of time visible in the chart windows. Choose an option and the charts will immediately be redrawn to show the new information.
The final drop-down lists selects the frequency of price data. You can choose Intraday, Daily, Weekly, Monthly or Yearly prices. When you select intraday this list will then change to show time frequencies instead (E.g. one minute, five minutes and so on)
A note about intraday. FCharts was designed primarily to use one minute data. If you have (for example) five minute data you should use 'View Raw' to see the actual price bars stored in the database because all the other intraday options generate bars on the fly. E.g. a five minute chart is generated from the available one minute data. However, you can view a ten (or higher) minute bar chart from five minute data without problems - the next highest value will always work. e.g. 30 min from 15 min data is fine, but a 15 or 30 minute bar chart from 30 minute data won't work.
There's also a check box between the last two drop-downs. Tick this and the chart display will change to a scrollable, zoomed view. Click and hold the left mouse button to drag the charts to the left and right.
That's the top of the window dealt with. Now for the options down the left hand side.
[EDIT COMPANY] Button
Once you have a valid stock code in the CODE field you can click Edit Company and you will see a company details screen for the current stock. For a description of the Edit Company options, see this screen
SHOW PORTFOLIO [Button]
This button will display a summary of all the stocks for which you have entered stock holdings.
You will see warnings next to stocks that have fallen below your programmed stop loss value, or risen above your sell value. Note that this is just a simple report, there's a full transaction editor on the Edit Company Details form.
The Import/Export button is described in detail here.
Code Box This is where you enter the stock code for which you would like to see a chart. Type in the code and click the SHOW button (or press Enter) and the charts will appear. If the code is unknown, you will be asked whether you want to create a new company record. Pressing Next and Prev will move between stocks in the current range (selected with the Ratings and Watch Lists, as mentioned above).
"<<" and ">>" buttons. Enter a number in the Sec: (Seconds) box and click one of these buttons and the program will scroll through the stocks in the current watchlist automatically, pausing 'n' seconds between each one. (This does not include the time taken for computation.) If you tick the small checkbox the program will automatically save a screenshot for every chart displayed.
In the center of the screen you will see two long, white boxes and a grey one. The grey box is a status bar which will show information about a price bar when you move the mouse over it. If the text within goes beyond the right margin, just use the left mouse button to drag the contents of the bar left and right.
The two white bars are for formula entries. Left-click the (1) or (2) to open the formula builder or right-click them to clear the list of previously entered formulae. In the Pro version there are two additional formula entry boxes for formulae (3) and (4). Clicking the button with a '^' on it will hide the formula entry boxes. If they are hidden, click the 'v' logo to display them.
SCANNER [Button] Opens the Market Scanner (stock screening) window.
Intraday [Button]
This will enable you to link up FCharts with QuoteTracker, an adware-supported live price streamer. You can find a link to Quote Tracker on the Freecharts page Spacejock.com Just click the Links button and look for the QuoteTracker green dollar icon.
SETTINGS [Button]
For more information on the Settings menu, click here
HELP [Button]
Opens this help file.
Print [Button]
Select your printer and you will get a hardcopy of the displayed charts, all on one sheet of paper. If it's a colour printer, you get colour charts.
About [Button]
This will show the splash screen with the current version number. For F-Charts PRO it will show the registered owner's details.
Exit [Button]
Closes the program.
Back to main menu
Keyboard Shortcuts
On the main chart window:
PAGEUP - jumps to previous stock in watchlist
PAGEDOWN - jumps to next stock in watchlist
SHIFT-PAGEUP - jumps to first stock in watchlist
SHIFT-PAGEDOWN - jumps to last stock in watchlist
CTRL-P will change the main chart to Point & Figure 
CTRL-K will change the main chart to Candlesticks
CTRL-O will change the main chart to OHLC
CTRL-L will change the main chart to a Line chart
CTRL-B will toggle coloured or black and white price bars
Shift-F11 reduces the number of lower charts (down to one)
Shift-F12 increases the number of lower charts (up to six in Pro)
Shift-F1 decreases the height of chart 1
Shift-F2 increases it.
Shift-F3/F4 does the same for small chart 1
Shift-F5/F6 does the same for small chart 2
Shift-F7/F8 does the same for small chart 3
Shift-F9/F10 does the same for small chart 4
NOTE: still working on this - it's possible to go over the bottom of the window, and if that happens hit Shift-F11 to remove a window or two, then Shift-12 to put them back.
Ctrl + will set OHLC bars to double thickness
Ctrl - will set OHLC bars to normal thickness
You can zoom in on a specific portion of any chart. In the main window, just hold Ctrl & Shift and then left-click on a price bar. With Ctrl & Shift still held, click another (later) price bar. The chart will zoom in and display only the prices between those clicks. (Alternatively, just left-click and drag over a selected portion of the chart.) If you change ticker, it will still keep the same setting. If you change to weekly or monthly bars, ditto. If you change to another time frame (e.g. from 6 months to 12 months) it will remove the zoom. You can also click the Reset Zoom button, or press Esc.
Example: Show 'All Data' for a stock. Assuming it goes back to 1995, you can Ctrl+Shift click on 1/1/1996 and Ctrl+Shift click on 30/1/1996 and you will see a chart of January 1996.
This also works on the zoomed windows (With those, it doesn't remember the dates when you change charts)
Ctrl-click a price bar to hide all prices after that date.
When zoomed, Shift-click the main chart to display future price bars one by one
When zoomed, Alt-click the main chart to reset the view back to showing right up to the last price.
Note that while you are zoomed, the ticker entry box will be dark blue with white text, as a visual cue.
Shift plus left and right arrows adds and removes prices from the chart. Shift plus up and down adds and removes 10 at a time
You can now hit Ctrl-1 to Ctrl-0 at any time on the main screen to add the current stock to watchlist 1 to 10. Use Ctrl+Shift+ 1 - 0 to remove the current stock from watchlist 1 to 10.
Back to main menu
The Chart Windows
Once you've imported some data you'll want to look at a chart or two. First thing you should do is enter a stock code into the 'Code' box halfway down the left side of the screen. After you've typed in a valid code, click Show. (The alternative is to pick a company from the drop-down Titles list.)
By default, three charts will appear - the main window will show a bar chart, while the two lower charts will show volume and MACD charts.
The two lines of text displayed in the upper window are actually contained in their own floating box, which you can drag around the main window using the left mouse button. If you right-click the box you can set the width and height, and also whether the contents are shown in bold or not.
To select the style of chart displayed in a window, just right-click on the window and choose the chart from the popup menu. On the main chart this popup menu also allows you to choose the overlay type plus a number of other options.
The options are different in the lower window - here you can not only select indicators but also which User Defined Indicators you wish to view as charts. You can also display any of the upper-window charts. If you want to display a lower-window chart as an overlay, just put the relevant variable name into a user-defined indicator and plot that. E.g. Set UDI1 to 'MFI' and plot UDI1 as an overlay on the main chart.
These are the chart types you can select in the FCharts upper window (More are added all the time, so this information may be outdated):
OHLC - A bar chart of the selected period.

Candlesticks - The classic candlestick chart.

Point and Figure charting.

Hollow Candlesticks.

Heikin-Ashi Candlesticks

Line Chart - Shows a line representing the closing price.

Gann swing chart

The numbers above the chart are read as follows: Example:
2B 2.99
20/Jun
R:0.120
2B = number of bars in the swing. 2.99 = high (or low)
20/Jun = start of swing
R:0.120 = range of the swing (low to high)
Scale Note that with FCPro you can select whether you want Linear or Semi-Log scale charts. (Semi-log scale means the date is the same but the gaps between prices decrease as you go up the chart. The idea is that a 5% increase on $1 is 5c, but a 5% increase on $5 is 25c - so on a linear chart where a stock increases from $1 to $5 at a steady 5% over a period of time you'll find that the curve gets steeper and steeper, making it look like the price has been going up faster and faster. It's still 5% year on year though. (Alternatively, a chart which appears to rise in a nice, steady line on a linear chart may be increasing at a smaller and smaller percentage)
Take a look at a 3-year weekly chart of WOW with linear scale. Draw a trendline through it. Now go back to the main chart and change to Log scale, and you'll see that a large part of the chart was at a slightly higher percentage increase, and then it falls back to normal, then flattens out a lot more.
It's really of use on very long-term charts, or charts with a large variation between the highest and lowest prices.)
Apart from the chart itself, you'll notice some data in the upper left corner. O is the Opening price for the last day in your database. It will be red if the open is lower than the previous day's open (Note: NOT the previous day's close!). H is the high, and again it's compared to the previous day's high. Green for same or above, red for lower. L is the low, and C is the close. Next is the Change. This refers to the change from yesterday's close to today's, not the change from today's open to today's close.
You might also see a 'Close Rqd for MA1>MA2' followed by a value. This is an extrapolation - the program is telling you what price the stock will have to close above for MA1 to cross above MA2. It will only display if MA1 is currently lower than MA2. The same applies to MA2>MA3. To enable these items you must tick 'Estimate EMA Crossovers' in the 'Special Overlays' section of the right-click menu.
Parabolic Stop and Reverse
A complex indicator to program, but easy enough to use. Assumes a long position is taken when +DI crosses above -DI, and then tracks the price movement. As time passes, the increment decreases, hence the 'Parabola' title. Like an artillery shell fired into the air, the momentum gradually dies off. The long position is closed when +DI falls below -DI, and a short position is then assumed. You can access the variables with SAR, InLong and InShort. See a complete description of the indicator for possible uses of these.
Guppy MMA
I read about this overlay in Daryl Guppy's Trading Tactics book. (Highly recommended, and you can order it from http://www.wrightbooks.com.au) It consists of two separate strands of moving averages - one strand with six averages of between 3 and 15 periods, and the other strand with six averages of between 35 and 60 periods. I thoroughly recommend reading the book before using this overlay.
Countback Lines
Countback lines automatically pick out likely support and resistance points, based on recent highs and lows. There are now two kinds in the program - support and resistance lines plus a single dual-mode line which displays either support or resistance depending on the current trend.
The difference between cbl res/sup and the regular cbl? For the regular cbl:
For support lines, unless the current bar is the highest high in (countback) periods, the previous support value is carried forwards.
For resistance lines, unless the current bar is the lowest low in (countback) periods, the previous res value is carried forwards.
However, with the cbl sup/res indicator the previous value isn't carried forwards, so it just uses the highest high or lowest low in (countback) periods.
Pivot Points
Pivot lines are based on recent lows and highs.
Trend Lines
If you draw trend lines on the zoomed view they will be stored on disk and displayed on both the zoomed view AND the main chart window.
HiLo moving Average
Instead of an exponential moving average of the closing price, this overlay uses the low and high prices as its data source.
Compare with Sector
In order to use this feature you will need to have daily price values for the sector itself, and you must have allocated all companies to their sectors.
The comparison works by overlaying the two charts on the same area. Since both have completely different price axis (axes? axises?) they will both be scaled so the extreme points touch at top and bottom (like all charts). This means that it's the direction the charts are moving in that counts, rather than whether one line appears above the other. To get a decent view you can pull back to a longer timeframe.
Compare with another stock
When you select this overlay you can enter any valid stock code. The second stock will be charted as a dotted red line chart over the top of the current chart. NOTE When using the new User Defined Indicators, the value of the overlaid stock can be accessed with the variable 'SecondClose'
Bollinger Bands
Places bollinger bands around the current price chart. You can use BollUpper, BollMiddle and BollLower in your formulae.
On balance volume
Displays the OBV in the same chart window.
Trading Bands (With variable upper and lower percentage)
User Defined Indicators (Write your own...)
Lower window charts:
Momentum
Momentum bars show the difference between the current close price and the close price x days ago. (X being 10, usually, but you can change it) If the bars are above the black line the closing price is higher than it was ten (or rather, x) days ago.
MACD
The blue line is the difference between two exponential moving averages of unequal lengths, the red line is the exponential moving average of the blue line. The current number of days for each line is shown in the relative colour.
MACD (Zero Center)
As above, but drawn around a zero-based center line.
MACD using coloured histogram bars
As per the two MACD charts above, but a histogram bar is drawn in red (default colour) when it has a lower value than the previous bar. It will appear in blue (default) when it's a higher value or equal to the previous bar.
Note that two bars might be 0.0014 (and seemingly equal) but the second will show in red if the value is actually 0.00139999 for example. Displayed values are rounded (e.g. in the status bar) but internally no rounding occurs.
Volume
Shows historical volume, with 0 at the bottom. The bars show the actual volume, while the line is an exponential moving average. By default it is 21 days, but you may change this in the settings screen. If the day is an 'up day' (close higher than open) the volume bar will be green. If it's a down day the bar will be red. You can change these colours on the settings form.
RSI
Relative Strength Index shows the RSI plus a moving average.
Accumulation/Distribution index
Fast Stochastics
This is a Fast Stochastic chart. You can access the values in your formulae with PercentD and PercentK keywords. EG.
close = lowest_low[30] and percentd > lowest_percentd[30]
That will tell you the price hit a 30-day low, but the percentD didn't.
Slow Stochastics
This is a Slow Stochastic chart. You can access the values in your formulae with PercentDSlow and PercentKSlow keywords. EG.
close = lowest_low[30] and percentdSlow > lowest_percentdSlow[30]
That will tell you the price hit a 30-day low, but the percentDSlow didn't.
You can also use %K, %D, Slow%D and Slow%K instead of the full names.
3-way momentum
Instead of using 1 range to display momentum, this chart uses three: one of 10 periods, one of 15 and one of 21. The result is a chart which displays more information about the trending of this stock. You can access momentum values 2 and 3 in your formulae with the variables MOM2 and MOM3.
DT3/DT7 Oscillator
This is based on the close price minus a 3-period simple moving average of the close and the same again for a 7-period SMA.
Wilder's DMI
You can plot the +DI, -DI and ADX of the current stock by selecting this chart. You can access the variables in your formula with +DI, -DI and ADX. Make sure there are no spaces between the + and the DI.
Average True Range
You can display the Average True Range in the lower chart windows. This is a measure of volatility, and the variables are ATR for the 14-day moving average and TR for the raw 'True Range'
Elder Rays
As explained in Dr Alexander Elder's book, Trading for a Living
Force Index
Also explained in Dr Alexander Elder's book, Trading for a Living
Chaikin Money Flow Oscillator
You can display the Chaikin oscillator in the lower chart windows. The variable is 'CMFO'
Money Flow Index
You can display this in the lower chart windows. The variable is 'MFI'
Commodity Channel Indicator
You can display this in the lower chart windows or overlaid on the upper window. The variable is 'CCI'
Moving Avg of Candlestick Shadows
This chart shows a moving average for the upper candlestick shadow plotted against a moving average of the lower candlestick shadow. Why? Well, if the upper shadows are mostly long and the lower shadows are mostly short this indicates that prices are rising then falling back again before the close. The Upper MA line will therefore be above the Lower MA line. If the lower shadows are longer it means the price keeps falling then recovering. The Lower MA will then be shown above the Upper MA. Some people use this indicator to determine whether a stock has bottomed.
On Balance Volume
Displays the OBV and a moving average of the OBV in the same chart window. The green line is the OBV, the solid red is the moving average and the dashed blue line is a moving average of the solid red. If the blue line is above the red, obv is trending down. If the red line is above, OBV is trending up. By messing with the periods you can make it more or less responsive to short-term moves.
Williams Percent R
NOTE:
You can also export the current chart as an image, view the raw data which went into making the chart and double-click any chart to open a zoom window where you can draw lines with built-in tools. (See here for details)
Back to main menu
Importing Data
A charting program without data is not much use, so in order to get some figures into FreeCharts you need to perform an import. First I'll explain HOW to import, and then I'll explain WHAT to import.
All data importing is handled through the Import form, which you can access by clicking the Import/Export button on the main screen.
Options. 'Do NOT add new companies when importing data' is self-explanatory. If you've cleared a load of stocks out of your database, this stops them coming back as soon as you import more data. 'Do NOT overwrite prices when importing data' allows you to protect splits/renames/etc that you've spent time putting in when you import some older data.
Maximum Code Length is a cut-off for when you do data importing. If you want to exclude codes of more than 4 characters, then set this to 4. To allow all codes up to 6 characters, set this to 6. I don't need to tell you what to put here if you want to exclude codes of more than 3 characters. To be effective you should set this before you import all your data.
Number of Periods to scan is used by the market scanner - the higher the number, the further back the scanner will go when examining each company.
Import Date Cutoff. This option will prevent old price data getting into your database.
Display Settings. You can reverse the background and foreground colours, select whether tips will be displayed when you hold the mouse over a chart window, and choose whether you can click the left mouse button to draw a vertical line across all three charts.
Automatically recalculate the stoploss for all companies. This will use whatever custom formula you have entered on the Edit Company form, or the default where none is specified. It WILL NOT change the stop-loss to a lower value, which would make the stoploss less than useful. It won't set the stoploss for companies where it's already 0. In other words, when you first get interested in a company, set the stoploss manually. After that, the importer will maintain or recalculate the value. The major use is to move your stoploss up behind a rising price.
There are many ways to import data. Check the following, and if you're online you can also view the FCharts Importing tutorials
1) Click the Import button, navigate to the directory on your hard disk containing your ascii data files and select one or more files to import.
2) Drag one or more data files onto the drop-target frame.
3) You can also import data from Justdata's Bodhi Freeway application. Click the Import Bodhi button.
4) You can import directly out of an MS binary database. Click the Import MS Binary button. It must be 255-file format.
5) There's a 'PSM' import button on the Import/Export screen. Personal Stock Monitor is a commercial program by DT Link software, www.dtlink.com. It will maintain US stocks with intraday and eod price data.
There's another import method which is currently available on the Settings form:
6) Import from Yahoo. First you need to be aware that each country has its own suffix in the Yahoo system (except for US stocks, where you just use the ticker as-is) Therefore you need to modify the defauly Yahoo prices URL to get prices for your country: Go to the settings screen. As an example, let's use the ASX stock market. You would put .AX after each of the two @@@ codes in the Yahoo url. Now, save and close the settings screen. You can find a list of supported market codes here
Enter a ticker code on the main chart window, something you know exists in your stock exchange. We'll use TLS. Click Show, and it'll complain that it doesn't know that ticker. Click OK (or yes) to add it.
Now right-click the main chart window (the larger of the three). Choose the 'Data' submenu, then 'Download and backfill 12 months data from Yahoo'
That'll fill the current stock. Then you can enter another ticker and repeat the process.
Now, you're not going to want to do that for hundreds or even thousands of stocks. So, instead of backfilling one by one, you can use the special 'Downloader' underneath the Yahoo URL on the settings screen. First you have to have a list of ticker codes for all the stocks in your chosen market, and there's a zip file containing a selection of tickers on the Spacejock web page (See the DATA FAQ page)
Some example Yahoo suffixes:
Australian ASX = .AX
Italian Milan exchange = .MI
To find your country code just check the Yahoo Market Page. You can also check for supported indices here:
USA http://finance.yahoo.com/indices?u
World http://finance.yahoo.com/intlindices?u
A note on proxies
If your computer is connected to the internet via an authenticated proxy, open Internet Explorer and ensure you set up the connection so that it uses 'HTTP 1.1 via Proxies'. Then, in FCharts, you need to set the proxy option to 'System Default'. (FCharts doesn't use Internet Explorer at all, but it does use the IE internet settings. Also, if you set Internet Explorer to offline browsing mode, FCharts will be unable to connect to the internet to download price data or updates.)
Now you know HOW to import, it's time to find out WHAT you can import. Before you can import anything into the program, the data must be in the correct format. In other words, the data coming from the files must be in a certain order so that the program can put the High, Low, Close, etc into the right fields in the database. E.g. if you try and import a file which just has
1.2
1.4
1.5
etc
the program doesn't know the date, whether that's a closing price, what ticker it's for and so on.
The most common EOD format is known as Metastock Ascii. This is a comma-delimited file with one line per ticker laid out as follows. (It may also have a header row):
ADU,20010720,0.135,0.135,0.135,0.135,50000
ADUO,20010720,0.04,0.04,0.04,0.04,25000
ADX,20010720,0.16,0.165,0.16,0.165,80000
ADXO,20010720,0.001,0.001,0.001,0.001,0
ADZ,20010720,2.22,2.22,2.15,2.22,802724
Note that each line consists of the ticker and the date, followed by the open, high, low and close for the day. The last value is the volume. The date can be in any format BUT the program will use the international settings on your computer to decide whether a date is DD/MM/YYYY or MM/DD/YYYY. If you are in the US and are trying to import a DD/MM/YYYY file you will need to edit the date field before you can do so. Same if you're in Australia or Europe, and wish to import a file with US dates. In the example above (YYYYMMDD) there is no confusion, and this is the preferred date format.
The program will work with 2-digit years, by calculating whether to add a 20 or a 19 in front. (If the year is less than 50, it assumes it's a 2000 date)
You can also use a header row (as detailed below) to explain exactly how the date is to be interpreted.
If you want to be certain of your import, you can provide a header row. This is a line in the import file which tells the program which field each column of data must be imported into. It allows you to provide fields out of order, or leave some out altogether. E.g.
<ticker>,<date>,<open>,<high>,<low>,<close>
So where do you get these Metastock Ascii files? Links come and go, so the best bet would be to check the Data Sources page on the Spacejock web site.
Another common data format is the 'Tickerless' data from Yahoo (finance.yahoo.com). It looks like this:
20010720,0.135,0.135,0.135,0.135,50000
20010721,0.135,0.135,0.135,0.135,50000
20010722,0.135,0.135,0.135,0.135,50000
20010723,0.135,0.135,0.135,0.135,50000
20010724,0.135,0.135,0.135,0.135,50000
Now, in order to import THAT file it has to contain the ticker code in the filename. For example, you would have to call it MSFT.CSV if you wanted that data imported as MSFT.
Further to that, if you download Index data (eg ^DJI) then it doesn't have the volume field:
20010720,0.135,0.135,0.135,0.135
20010721,0.135,0.135,0.135,0.135
FCharts will now import that correctly, setting the volume to 0.
You can also import the 'Macquarie market picture' (MarketPicture.csv) as a price data file. It will be recognised correcly, despite not being in a standard format. Useful to clients of Macquarie, naturally.
Open Interest Common in commodity markets, Open Interest has not been available in FCPro until now. To import a file with Open Interest there has to be one of two things: Either the file extension must be "ALL" or the first row in the file should contain field codes. Of these field codes, the one identifying the Open Interest column must be "Open Interest", "Open_Interest" or "Open_Int"
To display Open Interest, just edit UDI1 or UDI2 and enter the word 'OpenInterest'. Then plot it on the main chart.
Intraday Importing
You can also import intraday data via the 'Single Import' and 'Bulk Import' buttons. Just make sure the format is like this:
A first row with a header identifying the fields, eg:
<TICKER>,<PER>,<DTYYYYMMDD>,<TIME>,<OPEN>,<HIGH>,<LOW>,<CLOSE>,<VOL>
Then the data:
TICKER, I, 20010720, 11:30, 0.135,0.135,0.135,0.135,50000
etc
Futures Data The CBOT has futures data which you can download and import into FC. (See the Data FAQ page on www.spacejock.com for the current link). The data format which CBOT use isn't one of the recognised ones, but I've added support for their file. The problem is, you'll need to edit each file before importing, to put a header row like this at the top:
,,,,,,
FC will then join the ticker and code together, making a combined ticker.
NOTE: If you import the same file twice, FCharts will simply replace existing data with new data from the second file. Data is indexed by ticker symbol and date, so two prices with the same date and ticker cannot exist in the database at the same time. If you tick 'Do not overwrite prices when importing' it will preserve existing prices and only add new ones.
Fields in the header row can be enclosed with angle brackets (< >) or quotes (" ") E.g. "open", "close", etc
Back to main menu
The Import/Export form also allows you to deal with other data required by the program:
'Import Company Data' (Feature only available in F-Charts PRO)
This button will import fundamental company data from a comma-delimited file. The file layout is not important as long as there's a column with "ticker" at the top (identifying the stock code to import that row to)
As of version 1.5.95E you can now import the CSV data files from Shares Magazine (Australia) - these are available to Shares Mag subscribers, and as an added bonus they will also set up company sectors for you.
The header row can contain any or all of the following fields. The only one you MUST have is the Ticker
Ticker
DebtEquity
Dividend
Earnings
EPSGrowth
ExDivDate
Held
ImportFile
IssuedShares
LastImported
LastNTA
NTA
OptionsExercise
OptionsExpiry
OptionsIssued
PE
ROE
Sector
SizerPositionSize
Title
Yield
Newnote
AddNote
e.g. a suitable header row would look like this:
Ticker, Title, Sector
Unrecognised columns in fundamentals files are ignored and logged. E.g. if you have a file with ticker, title and something else you don't need, put
ticker, title, dunno
in the header row. Dunno isn't a known header, so that column will be ignored. Previous versions would exit with an error message, forcing you to edit the file.
Underneath the header row you can have any number of lines containing the data. Each data field must be separated with a comma or tab, must be in the relevant column, and must not contain a comma within the data. e.g.:
Ticker, Title, Sector
TLS, Telstra, xyz
WBC, Westpac, abc
If you import ex-dividend dates for your stocks database you can activate the ex-div marker on the main chart window. Just right-click the upper chart, select 'Special Overlays' and tick 'Ex-Dividend'. A blue vertical line will appear on the chart where the ex-div date occurs. If it's in red, then you don't have a price bar for the ex-div date (e.g. if it happens to be listed as a Saturday) In this case, the bar will be shown on the next available price bar.
At time of writing there's a fundamentals file for ASX companies on www.ascii-data.com. This file can be downloaded and imported directly into FCharts Pro using 'Import Company Data'
Using 'NewNote' will replace any existing comment with the one in the import file. Using 'Addnote' will add the imported note to the top of any existing notes. e.g.
Ticker, Newnote
AAC,A comment
AAU,Another comment
Ticker, Addnote
ABB,Some new comment
ABC,Another comment
Don't put commas in your comments.
Import Titles
This button will allow you to select a SYM or CSV file, which should be laid out as follows:
ANGLO AUSTRALIAN RESOURCES NL,AAR,Australia
The title comes first, followed by the ticker symbol, followed by the market name. The latter is not used, but there must be a dummy field at the end of the row. (This is to maintain compatibility with a format which has been around for years). For more information about Importing Titles, see here
Import Sectors
This button will allow you to select a CSV or TXT file, which must be laid out like this:
SECTORCODE, STOCKCODE
SECTORCODE, STOCKCODE
SECTORCODE, STOCKCODE
SECTORCODE, STOCKCODE
SECTORCODE, STOCKCODE
... etc
For example, you could have:
XAO,XAI
XAO,XAR
XAO,XAM
XAI,XAT
Note how the fourth line creates another 'depth' by putting XAT in XAI, which in turn is in XAO. You will get a file with all these sectors laid out for the Australian Stock Exchange with your FCPro delivery.
For more information on creating a sectors file, see here
Export Tickers. This button will create a text file called 'AllCodes.txt' in the program directory. You can edit this list by hand, removing all the codes you DON'T want in your database, and then use the 'Clear Unwanted Stocks' button on the 'Price Cleanup' tab to delete everything NOT in this list. (See below)
Back to main menu
How to delete a ticker
There are three ways to remove a single ticker:
1. Display the chart, right-click and choose 'Prices - Delete this ticker and all prices'
2. Display the chart and press Ctrl-D (for Delete)
3. Click Settings - Price Cleanup and enter the ticker into the box next to the 'Delete this ticker and all its prices' button. Then click the button.
Back to main menu
Edit Company Details

This set of tabs allows you to add or edit information on any company in your database.
On the first tab, you can change the title. Just enter a new title in the box at the top of the screen.
You can enter the number of shares held.
You can enter the total amount paid (including brokerage, if you like) FCharts will show your percentage gain or loss, and price paid per share. It will also show the current value of these shares.
You can enter a Stop-loss price and projected Sell price, and F-charts will not only show you the potential profit/loss from the stock if sold at these prices, it will display the values on the main chart window as colour-coded lines. You will also see a line on the main chart labelled 'Paid' - this is the average buy price for the stock you are viewing. After entering a stop loss and sell price, PRO will display a calculated 'projected profit' and 'projected loss' for that stock, should you sell at either of these prices.
Also added recently is a ‘Target Buy’ price. This will show on the price chart as a purple dotted line.
On the Fundamentals tab you can change several fields including the Yield, P/E, Dividend and Earnings per Share values.
On the transactions tab you can enter your sales and purchases with dates, amounts and comments. You can export them to CSV files, and you can now import transactions as well.
You can import a CSV file (as exported from FCPro, or any spreadsheet program) containing your buy and sell transactions. The layout of the import file is:
Ticker, date, quantity, price each, Duty, Broker code, Type, Brokerage, Description
Notes:
You can import a file with multiple tickers, FCPro will save them to the right place.
Date should be your local system format. E.g. DD/MM/YYYY. If you export with your computer set to MM/DD/YYYY and then import with it set to DD/MM/YYYY you'll get in a mess.
Price each is the amount paid per share
Duty is the total stamp duty/govt tax/gst/etc on the transaction.
Broker code isn't used. Use 0 or 1.
Type is 1 for Buy and 2 for sell.
Brokerage is the total brokerage on this transaction.
Description is a short string of text. Too long, and it will be chopped off.
Don't create a CSV with the values enclosed in quotes ("")
Make sure each row has the right number of fields. Too few, and it'll go haywire.
In FCPRO there is also a button to open a company announcements screen and a button to open the 'List View'.
Clicking 'Company Announcements' will open a browser window with the URL from the 'Company Announcements URL' box on the settings screen, only it will replace the @@@ placeholder with the current company code.
Clicking 'List View' will bring up a form which allows you to rank sectors and companies by their percentage gain/loss over a given number of trading periods. You can read about the list view here: List View
On the WatchList tab you can tick the watch lists you want this company to belong to. (To see how you can edit the watchlist descriptions, click here
In the PRO version you can use the Indexes tab to select which custom indexes this company is a part of. (To see how you can edit the index descriptions, click here)
On the 'Comments' tab you can enter anything you like here. It will be saved for later, and the first 60 characters of the first line will be shown on the main chart window.
Position Sizer tab
Note: This feature is just a convenience for traders, not an actual suggestion of what you should buy or sell. Many trading books will tell you that you should fix a maximum loss based on a percentage of your total capital, and that's what the sizer is for.
First enter your total capital and check the percentage loss figure. This is usually 2%, but you can alter it to whatever you like (1 to 50). Next, you can enter the number of shares you want and the price to buy them at, and the system will calculate your minimum stop-loss in order to maintain the x% of total capital as a maximum loss. You can also enter your stoploss value and buy price, and the system will show you the position size. Finally, you can enter a total order value and a buy price, and the system will show a stop loss. You can also get a risk:reward ratio once the parameters are configured.
Down the bottom of the Company screen there are a couple of other buttons:
'Import Tickerless' button
Expects a data file with no ticker codes in, and assumes that all the incoming data is for the current company. Don't import IBM prices when viewing Microsoft! Yahoo finance offers data in this format.
If you tick ‘Enable Auto-Import of Tickerless Data’ on the Program Options screen (In the settings dialog box) you will be asked whether you want FCPRO to ‘Remember’ the imported filename here. If you say yes, FCPRO will import the same file every day. All you have to do is keep adding new price information to the import file, and your database will be up to date when you start the program. If you change an import file and want to force a reload BEFORE the following day’s check, just go into the settings screen and click ‘Perform Auto-Import’
This is not practical for maintaining price information for thousands of stocks (or you’d have thousands of import files, and it would take thousands of seconds to start the program each day!) It’s eminently suitable for a dozen or so, perhaps containing data from finance sites such as Yahoo. Grab the price data for the month, paste it into a text file and save it out. As long as the filename and location is the same, FCPRO will import any new prices in the file automatically. (Remember, this is for tickerless data only:
date, open, high, low, close, volume
[Previous] and [Next] buttons
Jump to the next company with stock holding information, allowing you to page through your portfolio and edit stocks at will.
Back to main menu
The Settings Menu
Clicking the settings button brings up a menu which allows you to change how the program works and perform housekeeping tasks on your database.
Indicator Settings allows you to set the number of days used by each of the indicators in the program, and the colours of many of the indicator lines when drawn on charts. The defaults are set when the program is first loaded, and you can experiment with any numbers you like. If you mess up, click 'reset to defaults'.
The program tab lets you control program-specific settings. E.g. You can set the display precision for all numbers in the program. The options are 0 for auto, and 1-4 for 1 to 4 decimal places.
Convert to Binary DB / Convert to Access DB: See the databases help section.
The price cleanup form has a number of options which will allow you to tidy up your database now and then, from deleting stocks with no prices to removing companies which haven't traded for a given amount of time.
There are also two files you can create manually to help maintain your database. If you put a file called autoinclude.txt in the FCharts folder, any tickers not listed in this file will be deleted when you start the program. (So, if you put one ticker in it you'll lose the entire database. Be careful.) If you're just tracking the asx200 then you can put the 200 tickers into the file (one per line) and nothing else will be imported.
Autoexclude.txt does the opposite - tickers listed in this file will be deleted every time you start the program.
The Split/Rename tab allows you to adjust stocks. To consolidate, just put a higher figure in the right hand box. E.g. 1 for 3 will convert 3 shares into 1.
The Stock Rename feature lets you change all occurrences of one code into another. Just enter the original code and the new code and click 'Do It'.
The Downloads screen is a time-saver. Just enter the URL and FILENAME for a data file and click 'Retrieve and Import'. The program will download the file and import it for you. Obviously you need to be connected to the internet. I've provided space for up to three data sources, but unfortunately they are becoming harder to find. (www.float.com.au works, for one.) If you put unzip32.dll into the FCharts program path (where the EXE is located) then you can specify filenames ending in ZIP, and FCharts will unzip them and import the contents automatically. Unzip32.dll is a third-party freeware file which can be located and downloaded off the internet. (Try a search on www.google.com)
Watchlists/Indexes tab. On FCPRO you can delete & manage your stocks using the options on this screen.
For example, if you enter close < .05 in the formula box then click 'Delete all matching' everything in your database with a close under 5c is gone.
I used 'mavol < 5000 and close < .05' to get rid of a load of rubbish I'm never going to be interested in. Using an MA means you won't accidentally delete something which was suspended for 1 day.
This scanner operates with a 'Number of periods to scan' setting equal to 14.
If you have lots of warrants to deal with, you'll like the new 'CODE' variable. Just enter 'Code = 'CBA*' as the formula, and all codes beginning with 'CBA' will be moved.
The Other URLS tab lets you enter a URL for backfilling data and a URL for company announcements. This is how you build a backfill URL:
1) visit http://finance.yahoo.com/
2) bring up a ticker (anything in the actual market you're interested in)
3) Click 'Chart'
4) Click 'Historical Quotes' - daily
5) Scroll to the bottom and right-click 'Download Spreadsheet Format'
6) Paste the link somewhere:
http://table.finance.yahoo.com/table.csv?a=2&b=5&c=2002&d=5&e=9&f=2002&s=tsco.l&y=0&g=d&ignore=.csv
Now we have to edit this URL into a friendly FCPro usable string. The way it's laid out, a b and c are the start date (MM, DD, YYYY) and the d, e, f are the ending M, D, Y. Replace the numbers with sMM, sDD, sYYYY and eMM, eDD and eYYYY:
http://table.finance.yahoo.com/table.csv?a=sMM&b=sDD&c=sYYYY&d=eMM&e=eDD&f=eYYYY&s=tsco.l&y=0&g=d&ignore=.csv
Now replace each ticker code with @@@ (Don't use 4 x @@@@, even if the ticker is 4 letters)
http://table.finance.yahoo.com/table.csv?a=sMM&b=sDD&c=sYYYY&d=eMM&e=eDD&f=eYYYY&s=@@@.l&y=0&g=d&ignore=.csv
Then paste the entire two lines back into the Yahoo download URL in Pro. It'll work until next time.
The downloader
Enter a URL and filename and FCharts will retrieve the file and import it. For ASX stocks, put http://www.float.com.au/downloads/ into the URL and the date as YYYYMMDD plus the .txt extension in the filename box.
You can also import ZIP files into FCharts if you put the freeware unzip32.dll into the FCharts program folder. (By import ZIP files I mean when using 'download and import', which works with float.com.au)
You can get the correct unzip32.dll file by installing my yBook reader which contains the file. Once yBook is installed you'll find the unzip32.dll file in C:\Program Files\yBook, and then you can simply copy it across to C:\Program Files\FCharts
One the dll is in place, you can use the same float.com.au URL in the download and import screen, but you can now use .zip as the file extension instead of .txt. Your download time will be cut by 1/3, and float.com.au also allows filenames like 200610.zip (oct 2006), 200505.zip (May 05) and so on. What you put in the filename dictates which price data will be downloaded.
If you download an entire year expect it to take a while to import.
The NEWS tab. You can import suitable news files like so:
You can specify a ticker symbol on each line of the import file. Each line must have 3 items, and if you want a news item to show on all charts just leave the first item blank. E.g:
,20011228,Half day trading
BHP,20020210,Spike
TLS,20020210,Something else
,20020214,Valentines
Then import the file through News Import as usual. You can also directly edit the News.DAT file in the Prices folder if you prefer)
Back to main menu
How to feed and care for your program
Although FCharts is pretty quick, there are settings you can tweak to make sure you're always getting the best speed possible:
Program Speedups:
1) Turn off the UDI overlays when you don't need them. Calculating the UDI values will slow down chart refreshes, especially more complex formulae.
2) Turn off the (1) - (4) indicators when you don't need them. The formula parser is another feature which requires intensive calculations.
3) If you set one of the internal variables to a long-term value (e.g. 200 for the MA of Volume) you'll force the program to calculate more data when you view a chart, even when you no longer need that longer-term value. In other words, if you mess with an indicator once and never look at it again, set that indicator's 'number of periods' value on the Settings form to a small number (e.g. 5)
4) Don't put 15 years of data into every stock. (Unless you actually need/look at it) You can always run 2 databases, one with your quick charts and the other with longer-term data.
Data Import Speedups:
Historical data may contain thousands of warrants, options, delisted companies and so on. The more company records in your database, the slower the importing. Here are my suggestions for building a streamlined database:
1) If you are importing bulk data, try and import in lots of 20 files or more.
2) Set the minimum ticker length to 3 and the maximum ticker length to 4 (This will vary depending on your stock market. These settings are for the ASX)
3) Set the date cutoff to something like 19990101
4) In the settings form, delete all stocks which haven't traded since 20020101 (for example)
5) In the same form, delete all companies with 5 or more letter tickers. (ASX only)
6) In the settings form, check 'Do not add new companies when importing'.
For an ASX database, that should reduce your system to about 1600 stocks, which will import & scan 2-3 times faster than the default 6000 you get when importing from most data sources.
Back to main menu
Shares and share codes
How do I match up codes with names and in what format do I create them?
These are the first few lines from UK.SYM:
Anglo American,AAL,U.K.
Alpha Airport,AAP,U.K.
Aberdeen Asian Sml Co,AAS,U.K.
AEA Technology,AAT,U.K.
Alba,ABA,U.K.
Abbey Ord Ir#0.25,ABBY,U.K.
The format is:
title, code, market
(although the 'market' field isn't used, it must be present)
How do I import this into FCPro?
Use the 'Import Company Titles' button on the settings form, then choose your file. Make sure it has a SYM, TXT or CSV extension. NOTE: If you have cleared any unwanted stocks from your database, MAKE SURE YOU HAVE TICKED 'DO NOT ADD NEW COMPANIES WHEN IMPORTING' on the settings screen. Otherwise you'll get them all back again.
How do I update or overwrite or delete this file?
Just import it again. All existing names will be overwritten.
Back to main menu
Renaming Watchlist Titles
You can rename the 20 built-in watchlists through the Settings menu. Just select ‘Rename Watchlists’ and on the subsequent form you will be able to type in the new titles.
After you have entered the new headings, just click Save to store them. If you wish to cancel your changes, click Exit
If you want to set up watchlists for ASX50, ASX100 and so on, this is the procedure:
First, download the file Gics.zip from www.metastocktools.com
Unpack this file to an empty folder.
Open Top-500.dat with a text editor (wordpad or notepad are ideal) If you can't open it, just rename it to Top-500.txt and try again.
Select everything from the first ticker to the end. (If you set the cursor before the first ticker and hold Ctrl+Shift then press End it'll select what you need.)
Open the Import/Export screen in FCharts, select the Other tab, then paste the tickers into the white box.
Click 'Add Multiple Tickers' (This just ensures that your database contains any new listings.)
Close that screen and click Settings - Watchlist/Index settings
Click Rename Watchlists
Pick half a dozen unused watchlists and rename them to 'ASX50', 'ASX100' and so on. Once done, close the rename form. (You'll only need to do this once.)
Now, open Top-050.dat, copy the tickers, and paste them into the white box on the 'Watchlist and Index Setup' form.
Select the 'ASX50' watchlist from the drop-down to the right.
Click 'Clear selected watchlist' (ensures it's really empty.)
Click 'Add to selected watchlist'
Clear the white box and paste in the contents of Top-100.dat (minus the first row.)
Select 'ASX100' from the drop-down.
Click 'Add to selected watchlist.
Repeat for each of the dat files, making sure you clear the white ticker box first. The best way is to set the cursor, press home, then hold shift and keep hitting page down until the contents are all selected. Then hit DEL.
Sounds involved, but it works fine.
Back to main menu

Shares and share sector
How do I match up shares with their sector?
This is a piece from a suitable sectors.txt file:
XDI,ANY
XBF,ANZ
XTU,AOC
XEY,AOE
In effect, it has to be:
Sector code, stock code
OR
Sector Code, another Sector code
Shares and index:
How do I match up share with their index e.g. ftse 100, ftse 250 etc?
Not currently supported. Well, it is but you would have to choose between
sector and index. You can't group in both yet.
I have noticed shares can be grouped into sub sectors. How do I do this in FC?
As above. The sectors file does all the work, you simply have to provide the structure.
E.g. Company 1 (Code: C1) is in Sector 'Transport' (Code: T)
Company 2 (Code: C2) is in Sector 'Utilities' (Code: U)
Sectors U and T are a subgroup of Sector INDUSTRIALS (Code: IND)
Your sectors file should look like this:
T, C1
U, C2
Z, U
Z, T
This means that C1 is in 'T', C2 is in 'U' and both U and T are in Z.
Why do this?
In the new 'Sector View' (Button is on the Company Details screen) you can sort the sectors by their performance over a given timeframe, then sort the companies (or sub-sectors) within the first sector the same way. You can get a listing of all the sectors in 'INDUSTRIALS' then get a list of stocks in 'Transport', enter a number of trading periods (e.g. 30) then get a sorted list of best to worst performers over that time.
NOTE: If you want your sectors to have titles, just add them to the bottom of your company titles file.
Back to main menu
The Market Scanner
(Feature only available in F-Charts PRO, although FCharts SE now has a sample to show you how it works)
The market scanner will use a pair of formulae to pick out stocks which match your requirements. For example, a simple formula like 'Close > Open' will pick out stocks where the close is greater than the opening price. It's a bit more complicated than that, but with a bit of thought and some examples to follow it's possible to look for all kinds of technical and fundamental occurrences.
The Scanner button is located in the bottom left corner of the main chart window. Clicking it will open the Scanner form.
The options work as follows:
You can select the type of price bars to scan (1 minute to 1 hour for intraday, 1 day to 10 years for End of Day) using the drop-down list.
Advanced Settings
Allows you to modify the levels used to sort the market into Big, Medium, Small and Tiny shares. This has nothing to do with market capitalisation, it is just a value calculated by multiplying the latest recorded value for the long-term moving average of the closing price by the average volume. The resulting figure will give you an idea of the value of shares traded on the latest day in the database, and this value is used to segregate the companies in your database into the previously mentioned categories.
You can also select which watchlists will be included in your scan - just click the advanced settings button, and you can tick or untick selected watchlists. You can also use the price/volume filter to segregate scanned companies into 'Big', 'Medium', 'Small' or 'Tiny'. This has nothing to do with the size of the company, it's just based on the average dollar turnover per day in that company's shares.
Perform Market Scan
When you click this button, your formulae will be applied to every stock on the market. You will see companies listed in the Progress box as they match your criteria. There is no need to try and write them all down - it's just more interesting than staring at the wallpaper.
When you do a market scan, the program only scans enough prices per company to get the moving averages up to speed. In other words, if your longest moving average is 50 periods, the scanner will work on 50 periods PLUS the value in the 'No. of Periods to scan' box.
What this means is that a '1' match in the scanner might not be the same as a '1' match when viewing charts one by one.
(If you're looking for something which happens infrequently, then a longer scan period will pick it up better. If you are looking for something which happens often, it'll occur several times over a short scan period and there's a better chance the market scanner will 'see' the same as the chart you view on-screen.)
Now, the most obvious way to get around this would be to force the scanner to read ALL prices for all stocks. That would take a very, very long time. The next best way is to allow the user to tell the scanner how far to go back. If you're running a scan while having tea, who cares if it takes half an hour? This is what the 'Number of Periods to scan' option is for in the settings screen - increase this to 60 or 90, and it will force the system to load more prices when scanning, thereby forcing it into a better approximation of what you might see when viewing the chart on-screen.
If you tick the 'Scan All' checkbox the program will load and examine every price record. This can be slow if you have a lot of price history in your database.
Bear in mind that you shouldn't increase the 'no of periods' beyond the number of prices in your database. If you put 600 and you've only got 300, all stocks will end up in 'Lack Data'.
When doing a scan, all companies are shifted into ALL as soon as you start. (This is in case you cancel halfway).
All codes < min length and > max length stay in ALL.
All codes NOT in the ticked watchlists stay in ALL
Then for a weekly or intraday scan all prices are loaded. If there aren't as many as you've requested in the 'minimum periods' the stock is moved into 'Lack Data'
For Daily, it loads just (ScanPeriods + LongestPeriod) prices. If there aren't that many it moves the stock into 'Lack Data'
Then it checks any remaining stocks.
Where are the results?
Once you've completed a scan you want to know what happened. First, check the drop-down list on the main menu. Initially the program will show 18 entries in this list - from ALL to Tiny ex-(2). You can reduce this to just six entries by ticking 'Simplified Ratings' on the Program tab of the Settings screen. In Simplified mode you will only see ALL, Lack Data, (1), ex-1, (2) and ex-2. Next to each heading is the number of stocks in that category as a result of the last market scan. In complex mode the headings are sub-divided by the 'liquidity' settings in the market scanner screen. You will notice that each of the market sizes (Big, Medium, Small, Tiny) has its own entry. They are further divided into (1), (2), ex-1 and ex-2. What do the postfixes mean?
(1) means stocks matching (1) on the last day of the scan
(2) means stocks matching (2) on the last day
ex-(1) are stocks which matched (1) last (not 2)
ex-(2) are stocks which matched (2) last (not 1)
That was a brief summary. Now for a fuller description:
(1) means that the stocks in this list matched your Condition 1 on the very last trading day for this stock. Please be aware that the last trading day could be a week ago - always check it. If you select Big (1) you will see a chart - if there are any stocks in this watch list. The last price tick on the right will have a green circle floating above it. This stock matched your Condition 1 on the last trading day.
(2) means that the stocks in this list matched your Condition 2 on the very last trading day for this stock. If you select Big (2) you will see a chart - if there are any stocks in this watch list. The last price tick on the right will have a red circle floating above it. This stock matched your Condition 2 on the last trading day.
ex-1 means that the stock was recently marked (1), and has not yet been marked (2).
ex-2 means that the stock was recently marked (2), and has not yet been marked (1).
'Lack Data' can mean a number of things. After a scan, stocks will be in this list if the last close or open is 0 or if there weren't enough prices to apply your formula to the stock.
Logging, too...
During a scan the program will generate a log file (scanrslt.log) in the program path. This file contains every match for every stock scanned, and can be loaded into a spreadsheet for further processing. The 'Trade Tester' button on the main screen allows you to read this file in to get a set of backtested trade results for your entire scan. (The Trade Tester is an optional FCharts Pro component available which you can order with the program or purchase as an addon at a later date.
Back to main menu
Candlesticks
This section is relevant to FCPro only
A description of candlestick patterns and their use is beyond the scope of this document. There are many books and web sites devoted to the subject (Louise Bedford's 'Secrets of Candlestick Charting' is a good start - see Trading Secrets
In FCPro you can uncover many single patterns by hovering the mouse pointer over a candlestick. If it's recognised, a small popup will appear with the name of the pattern.
FCPro can scan for candlestick patterns. By combining candlestick names and adding variables for certain indicators you can look for many two- or three-stick patterns within your market scan.
These are the known patterns:
Doji - Body is less than 10% of candle, and the body is within 5% of the middle of the candle.
DragonflyDoji - Body is less than 10% of candle, and there is no upper shadow.
GravestoneDoji - Body is less than 10% of candle, and there is no lower shadow.
Hammer - Body is 10 to 33% of candle and there is no upper shadow. Trend is ignored.
InvertedHammer - as per Hammer, but no lower shadow.
SpinningTop - Body is 15% of candle or less, and the entire candle is 2.5% or more of the close price.
LongWhiteLine - Body is greater than 5% of close, and is also at least 5 times the larger of the two shadows.
LongBlackLine - as per white line, but close is less than open.
Note that you also have access to parts of the candlestick:
GreenCandle. Close is higher than or equal to open
RedCandle. Close is lower than open
Range. This is the total height of the candle
Body. This is the height of the body
BodyPercent. Percentage of the total height covered by body
UpperShadow. The length of the upper shadow
LowerShadow. The length of the lower shadow
LongBody. Body is longer than the upper & lower shadows times 5, and is at least 5% of the closing price.
DojiBody Body is 10% of height or less.
BodyTop If the candle is green, this will be equal to the Close price. Otherwise it will be equal to the Open.
BodyBase If the candle is red, this will be equal to the Close price. Otherwise it will be equal to the Open.
To use these in formulae, you have to compare them with the True or False keywords. All the items above can also be combined with other variables such as moving averages, closing prices and so on.
Examples:
DragonflyDoji = True
UpperShadow > LowerShadow and GreenCandle = True
Back to main menu
This feature is only available in the Pro version.
The list view
If you click 'Sectors' you can choose your sector from the drop-down list, then rank the components.
Note that you can set up a multi-level system by setting each sector to its corresponding group. E.g. XAM has XAO as its own sector. If you right-click a line in the grid you can add it to one of your watch lists.
Selecting 'Indexes' allows you to view the contents of your user-defined indexes. You can remove stocks by right-clicking on them. You can also move stocks to your watchlists using the right-click menu, and double-clicking any stock will show a chart of that stock.
Clicking the Show All Records button will load every stock in your database and sort them for you. (Can take a while). Next to that button is the field for number of periods for the comparison. Just enter a value and the system will calculate the % gain or loss between the last price and the price x periods ago. (You need to click Recalculate to confirm)
Back to main menu
The Zoomed Window
You can double-click any chart to get a larger view in its own window. You can have up to 20 of these windows open at once, each of them with a different time frame and ticker. While zoomed in you can select a colour from the pallette and then draw lines on the chart.
To draw a new line, click and hold the left mouse button then drag to a new point before letting go. To move a line, move the mouse over it until you see a + shaped cursor, then click and hold the left mouse. Now you can move the line by dragging. Release the mouse to leave the line in its new position.
Select the drawing mode using the icons across the top of the window. You can draw several types of lines, plus boxes and text labels.
To move an end-point, move the mouse over one end of the line until it turns into a diagonal cursor. Now click and drag to move the end of that line.
To delete the last line drawn, click 'Remove Last'. To clear all lines, click 'Remove All'. To delete a selected line, hold the left shift button and left-click on it. To clone a line, hold the CTRL key and left-click then drag to a new location. To edit a line, hold ALT and left-click it.
You can now type comments on your charts. Just hold the Shift key and left-click on the chart (avoiding any existing lines). Then enter your comment. You can choose a colour beforehand if you wish. Comments can be dragged around, copied with CTRL and edited with ALT.
In the Zoomed view you can change the Zoom Level to 1 or 2. In level 2, the chart can be dragged to the right and left when the time-frame is six months or more. To do this, just click and hold the right mouse button on the chart window and move the mouse. When you release the mouse, the chart will stop in its new position.
If you change the time-frame using the buttons at the top of the form, it will also change the time-frame in the underlying main chart.
You can use the same keyboard shortcuts to change the style of chart as you can on the main window - see the keyboard shortcuts page for details.
On the Zoomed window you can also choose between standard and Fibonacci lines (Fibonacci lines show up to 10 horizontal lines between the top and bottom points of your line). You can also set the percentages the Fibonacci lines will use.
Back to main menu
Layouts
This feature is only available in the Pro version.
Imagine a situation where you want to keep swapping from Daily to Weekly charts. Simple enough, you just click Frequency and change it. But once you bring up the weekly chart you might want a longer period (say, 3 years) so you change that. Perhaps you don't need (1) and (2) indicators or volume, so you turn them off. You have the Weekly chart set up nicely, but what happens if you want to go back to the Daily chart? You can click Daily, but you then have to turn the (1) and (2) indicators back on, switch the Volume overlay back on and alter the period back to 12 months (for example).
With layouts you can avoid all these hassles. What you can do is store your current layout (indicators, number of charts, size of charts, period, frequency, etc) to one of ten slots. For example, save your current settings to Layout 1 and call it Daily. You then change to a weekly view and set up your preferred options. Then you save this layout to Layout 2 and call it Weekly.
Now, using Alt-1 and Alt-2 (or the right-click menu) you can swap between the two at will.
As an added bonus you can also choose to store the indicator settings with a layout, too, so you could use a 45-period EMA3 on the daily chart and a 20-period EMA3 on the Weekly.
This feature is only available in the Pro version.
Back to main menu

Custom Indexes
You can build custom indexes by hand or you can use the Watch/Indexes tab on the settings form. As an example, let's start with the former:
View company details for a stock - e.g. BHP.
Select the 'Indexes' tab
Tick Index 1
Exit the company details form
Repeat for three or four more companies. Make sure you put them all in Index 1.
On the Settings form, click 'Rebuild custom indexes'. (It's on the Watch/Indexes tab)
You can now chart ticker code IDX1, which is a composite chart of the companies you just added to Index 1. However, it can be a slow process adding companies in this way, so there are a couple of other methods:
1) Use the list view. You can select companies, then right-click to choose the index to move them to.
2) Use the formula bar in the 'Watch/Indexes' tab of the settings form. Enter a formula like:
close > 5
then change the index drop-down to index 1, and click the 'add to index' button to add all matching stocks to index 1. In this case, all stocks with a current close over 5 will be added to that index.
Back to main menu
Renaming Index Titles
This feature is only available in the Pro version.
You can rename the 10 built-in indexes through the Settings menu. Just select ‘Rename Custom Indexes’ and on the subsequent form you will be able to type in the new titles.
After you have entered the new headings, just click Save to store them. If you wish to cancel your changes, click Exit
To find out more about using Custom Indexes, click here
Back to main menu
Database Formats
FCharts now gives you a choice of two database formats. Each is suited to different users, and each has advantages and disadvantages.
The first format uses the same database code as MS Access. It will store prices in tables within the stocks.mdb file, which is present in your FCharts program path. The advantage is that you can open this file with MS Access, or even write other programs which read price data from the same file. The disadvantage is speed - once the file grows to 15 mb or more (about 12 months data for 500 companies) it begins to slow down. If you import 10 years data for 2000 companies you'll be waiting forever for each chart to appear. All prices are stored in one huge database table called 'Prices'. If you are working with a lot of data you might get slowdowns as your file grows. The absolute maximum file limit for this type of database is 1 gb
If you want to set up virtual tables in order to use MS Sql as a back-end, you can do so (way beyond the scope of this document - it's not something I've done myself, but I know others have.) However, you should add the line:
NOCREATEDAO, True
To the FCharts.ini file before running the program. This will prevent it checking & recreating all the tables, fields and indices in the Access file each time you start it up.
The second (default) format uses a custom, binary database. It creates an individual file per company, inside a folder called 'Prices'. Because each file is small, the file system on your computer can deal with it more efficiently. Because records are kept together in the same file you can process much more data in a shorter length of time. In other words, you can have 20 years of data for 10,000 companies with none of the slowdowns associated with the Access type database above. There is also no limit to the size of the database, except the physical size of your hard drive. Intraday prices are stored in the same kind of files as end of day prices, with the file extension 'IDY'
Strictly speaking, both files are 'binary' but if I wanted to split hairs I'd buy a very small pair of scissors. I'm going to use 'Binary' to refer to my own database format for another reason: it uses a binary tree algorithm to locate records. (And THAT's beyond the scope of this manual).
Changing between one and the other
For a new installation, FCharts will default to the binary database. If you are upgrading from an earlier version of the program it will use the Access mode. If you do not have MDAC or JET installed you will only be able to use binary mode. You can change between the two by using the conversion option on the program options screen (settings menu) 
Changing between the two will involve a little time, but can be done as often as you like.
You can check the label in the top left corner of the main window for a quick visual guide to the type of database you are currently using:
Background |
Text |
Type |
White |
Pink |
All Binary (My choice, and the only option for new SE users. Doesn't need DAO installed.) |
White |
Blue |
DAO prices, Binary companies (Doubt anyone is using this) |
Pink |
White |
Binary prices, DAO companies (Most are probably on this one) |
Blue |
Light Blue |
All DAO (Prices and companies in Stocks.mdb) |
You can also check out the start of the Log.txt file.
NOTE If you run FCharts without a stocks.mdb in the program folder it will (a) create a new stocks.mdb database and (b) default to binary database mode. What does this mean? If you later copy an existing stocks.mdb into the FCharts program path and overwrite the existing, empty stocks.mdb the program will still read prices from the PRICES folder, instead of those present in the stocks.mdb file. To get it to read the prices in your stocks.mdb file just delete the file 'binarydb.txt' from the program folder and restart FCharts.
Technical Info
I you are a programmer who wishes to access the files directly, you need the following information about the record structure:
Private Type PriceType
DateOfTrade As Date ' 8
OpenPrice As Currency ' 8
ClosePrice As Currency ' 8
LowPrice As Currency ' 8
HighPrice As Currency ' 8
Volume As Double ' 8
TimeData As Boolean ' 2
OpenInterest As Double ' 8
Spare(0 To 1) As Byte ' 2
End Type ' Total 60 bytes
'Timedata' is set to true when the price is intraday. Since this is redundant with the use of IDY files for intraday prices it is not used. 'Spare' consists of 2 bytes for future expansion.
The 'Currency' data type is used in Visual Basic. This is the info from the manual:
Currency variables are stored as 64-bit (8-byte) numbers in an integer format, scaled by 10,000 to give a fixed-point number with 15 digits to the left of the decimal point and 4 digits to the right. This representation provides a range of -922,337,203,685,477.5808 to 922,337,203,685,477.5807.
Setting a location for your data files
If you create a BasePath.ini file containing a valid path, when FCPro starts up it will use that folder for all data files, price files, settings, etc. E.g. the BasePath.ini might contain:
C:\My Documents\Data
Make sure the folder exists, by the way. It doesn't matter whether it has a trailing '\' or not.
The only files you need in the program path then are DLL, EXE, CHM, OCX, hints.txt and Basepath.ini (This would be suitable if FCPro was to run from a central network server. You would only have to update the program in one location, and all users would have their own data, settings and so on)
Back to main menu
QuoteTracker
Fcharts now supports intraday charting. You can import intraday data, or collect it automatically from a data source.
Intraday sources are Quotetracker, any DDE source (E.g. Metatrader) and fields from any Excel spreadsheet (even one which updates itself from a DDE source)
Quotetracker downloads prices from your broker over the internet, and works with data from many countries. With Quotetracker, if you can't get data support from your broker, you can't use live prices. (You can still use delayed quotes - Quotetracker has data sources which you can register for, which give you 20-minute delayed prices)
How to enable QuoteTracker for FCharts usage:
NOTE: You no longer have to edit the Quotetracker INI file manually, there's now an option 'Enable HTTP server' on the Preferences/Misc tab in Quotetracker. Just tick the 'On' option, and leave the port setting at 16239.
You MUST click on some adverts to test the Quote Server. Of course, if you're going to use QT regularly, you ought to register it - Medved will welcome your support, and paying for software encourages future development.
Once you've installed Quotetracker and have it running, you have to add the stocks you want to track into the QuoteTracker watch list.
Run F-Charts. Click the INTRADAY button on the main screen and a little form will pop up. Click START, and watch. If you see 'Error' then either you're not running QT or you didn't click enough adverts. Otherwise you should see a time followed by OK.
Now, leave that form alone and return to the main chart window. Pick a stock which you know you added to QuoteTracker's watch list. Change the 'Daily' drop-down to 'Intra-day' and sit back and wait. Every 20 seconds or so the chart windows will refresh, hopefully showing prices. I use candlesticks - you can use anything you like. Please bear in mind that it will take about 10-20 prices before most of the indicators 'kick in', depending on the periods you have chosen for them. (You can change this 20 second interval by altering the FCharts.ini file - the setting is TIMER2INTERVAL and the value is in milliseconds, so the default is 20000. Don't go below about 5000 - 5 seconds - unless you have a fast computer, and stay above 2000 as an absolute minimum, to give the program time to import and update between refreshes.)
If you get nothing after a few minutes you can test the QT server by opening your internet browser and pasting
http://127.0.0.1:16239/req?getLastQuote(*)
into the URL field. When you press ENTER you should see some data. If nothing comes up, it's QT at fault.
You can also enter an hour / minute offset on the Live form. This will allow you to set up a timezone difference from QT's internal time. (Setting a time offset within QT has no effect on the data feed time, which is set to US Pacific)
Note for Windows 2000 / Windows XP users. If the connection doesn't work, you can edit the qthost.ini file in the FCharts program path and change '127.0.0.1' to 'localhost'
Is it possible to run two copies of FCharts and read different data from two copies of Quotetracker? (E.g. ASX stocks from one, US stocks from the other.) Yes it is ... you can change the port number in FCharts to match the one used in QT, but bear in mind you have to use a special command-line switch for Quotetracker to allow it to run more than one copy at a time. Details here (You have to run it from two different folders, too.)
You can enter a 'delay' on the Live Prices form. This delay can be anything from 1 to 60 seconds. It won't make the main chart update any faster, but it'll scan the quotetracker interface at the interval you specify.
On the Settings form you can specify a time cutoff for intraday charts, e.g. only display prices between 10:00 and 17:00.
How to get Forex, Futures, CFD data via Metatrader (www.metaquotes.net):
Download MetaTrader
Enable dde link in MetaTrader tools,options.
Open FCPro, Select Intraday and set to DDE link
Format........ Source!command!ticker
Command....... Bid
Write every...... your choice
DDE Source field should be MT, I believe.
Back to main menu
The Trade Tester
This feature is an optional extra available only for the Pro version.
What will it do?
It will show the value of each trade entry and exit along with brokerage and a net profit. Trade entries are determined by the (1) indicator (as shown on the main chart), but you can specify whether the price used is the typical on the day of the (1), the close of that day, the opening price on the following day or the typical price on the following day. E.g. if you are trading EOD you may not be able to enter a trade until the following day's open.
'Date of trade' in the results window changes to show the date of the price used. E.g. if you select 'next day open' the date of trade is displayed as that next date, even if the entry triggered on the previous day. For example:
Entry is triggered on 30th Jan with price set to 'same day close' In the tester, the date of trade is displayed as '30/1'
Entry is triggered on 30th Jan with price set to 'next day open' In the tester, the date of trade is displayed as '31/1' (Since that's the day you have to enter the trade, even though the trigger actually occurred on the previous day)
How do I use it?
The trade tester has two modes of operation: The first applies to a single stock, while the second applies to the results of your last scan. (If you are running a background scan you will have to wait for it to finish before you can access the results)
In single-stock mode you can view all trades from a given date, based on the entry and exit formulae. You can change the formulae on-screen and view the new results immediately, and you can change the ticker code at any time to test the same formulae on other stocks. In Scan Results Mode several of the options are not available (e.g. you cannot change the entry and exit formulae) since the scan results are based on the formula pair used while scanning.
What is 'Use proceeds of previous exit'?
Imagine you enter a trade with $5000 (less brokerage). If you exit that trade with a 10% profit you will have $5500 (less brokerage). This option allows you to use that $5500 in the next trade, instead of forcing you to use a fixed $5000 each time. In scan results mode the amount is reset each time the ticker code changes.
Does Brokerage include duty/tax/etc?
It can include anything you like. Think of it as a fixed overhead per trade. Note - the program will deduct this amount for each entry AND each exit.
When do I have to click 'Recalc'?
You should click it after you have made changes to any setting on the screen - except the 'Select entry and exit prices' or 'Earliest Date', which will do it for you automatically.
Occasionally I see a blue line with "Close" in it.
This indicates a trade which was still open. In order to calculate the gross & net, the program closes out the trade at the latest available price. (In future I will add an option to ignore open trades)
Back to main menu
Command Line Options
FCPro offers a couple of command-line options to automate tasks. They are as follows:
/IMPORT valid path
Can be used to force the program to bulk-import price files from the specified path. Don't supply a filename - it only works with a full path. e.g.
F_ChartsPro /Import c:\temp\data
After the import is complete, the program will exit. Hint: Use the /IMPORT function in a scheduled task to ensure your EOD data hits FCPro daily (especially if using Intraday -> EOD when it's easy to forget to). Create a batch file and run it using Windows Task Scheduler (Win98+) Make sure it contains a line similar to the following, where d:\myprices is changed to represent the location of your EOD downloaded file.
C:\Program Files\FCPro\F_ChartsPro.exe /IMPORT d:\myprices
This will do a bulk import of all files in the d:\myprices folder.
/IMPORTFILE valid filename
Can be used to force the program to import a given price file. e.g.
F_ChartsPro /Importfile c:\temp\data\myfile.csv
After the import is complete, the program will exit.
/DOWNLOAD
This will run the Downloader on the Importer form, then exit FCharts.
AUTOSHOW
Before using this parameter, tick the 'Save Screenshots' checkbox on the main screen near the auto-prev and auto-next buttons. (<< and >>) Next, make sure the program is in the correct watchlist. Now, if you run the program with the Autoshow parameter it will display every chart in that watchlist, saving a screenshot for each. It would primarily be of interest if you wanted to generate a series of chart images while the computer was unattended, perhaps after auto-importing data at midnight.
Back to main menu
Formula Picker
To open the formula picker, LEFT-click one of the coloured labels - (1) to (4) - on the main screen. (Not the markers on the chart, the labels to the left of each formula box)
So, what can you do with it?
The Picker gives you access to all your stored formulae. Use the four drop-downs (two in FCharts SE) to select a formula. Click New to add a formula, and Delete to remove the formula currently selected. If you click the field containing the formula itself (large white box) you will be sent to the Formula Editor, with all the current details filled out for you.
Before, the first list would only show (1) formulae, the second would only show (2) formulae and so on. Someone asked why they couldn't pick a (1) formula for (3), so I made all of them show up in each of the four lists. The 'Fill lists by type' checkbox toggles this.
Back to main menu
Formula Entry
To open the formula entry window, click one of the coloured labels - (1) to (4) - on the main screen (to the left of the formula entry boxes), then click 'Write Formula' on the popup menu.
In the popup menu, click BUILD. You will then see the formula entry main window.
So, what can you do with it?
The idea is to be able to store and retrieve your best formulae, with a short name, a description and which type of formula it should be saved as. You can enter a name at the top to identify the formula later. Note that you cannot have more than one formula with the same name (even if the type is different) because the program uses it to create the disk file containing the formula.
(All records are stored in the 'FORMULA' directory, inside the FCharts path. To exchange a formula with others, just email it as an attachment. They can rename it as required, and only have to copy it to their own FORMULA path for it to show up in their copy of the program.)
If you change the formula type it will be moved from the original list to the new one. EG. If are editing a type (1) formula and change the type to (3), that formula will disappear from the Type (1) selections and reappear in the type (3) lists. (This will become clearer if you've already examined the Formula Picker)
If you click 'New', the current fields are cleared and you can enter a new formula. Just click SAVE each time you have a formula the way you want it. Click OK to save and close the form at the same time.
Click the 'Formula Builder' button if you'd like some help putting a formula together. The Formula Builder is covered in the next topic.
Back to main menu
Formula Builder
So, what can you do with it?
Take a look at the screen first. You'll see three drop-down lists along the top with an 'ADD' button on the right. To the left of the large formula box you will see the following buttons - AND, OR, ) and (.
To start with, just click the ADD button. Notice how the contents of the three list boxes get transferred to the formula box? At time of writing, the defaults are "OPEN", ">=" and "MA2". Therefore, the formula box should now contain "OPEN >= MA2"
To test this formula, click OK. If you get a warning about not being able to thoroughly check the formula because no prices are loaded, just ignore it. If you get an error message and the form won't close, clear the formula box and click Add again. (You can clear the formula by highlighting it and pressing Delete on the keyboard).
Make sure you've got a valid ticker code in the stock code box and click Show! You should see red and green circles above some of the price ticks on the main chart window. (Only if you've already imported some data, of course!)
Congratulations! You've got your first formula pair up and running. Now you should return to the formula builder and try a few more complex examples. Don't forget - if it doesn't work you can always clear the formula box and start again.
(See the Formula Examples for more ideas of what you can do)
Back to main menu
Programming Guide
OK, so you'd like to develop and test a trading strategy for your favourite stock. With FCharts you can do so quickly, easily and without a mess of arcane commands.
You might like to see what would happen if you entered a trade when the MACD line crosses the MACD signal. Sure, you can look at a chart and see for yourself where that happens, but when you start adding more qualifiers (volume must be up 50%, close must be higher than day's open, etc) it can get frustrating trying to spot an opportunity from a bunch of coloured lines.
By entering a pair of matched conditions you can have the results of your strategy shown immediately on the current chart. Freecharts scans the historical data for the current stock and determines the oldest point where your first condition is met. It will place a at this point, right above the price bar. Note that if condition 1 is never met, there will be no indicator. Some users have decided that condition could represent their buy signal.
After placing a indicator, Freecharts will look for the first occurrence of your second condition from this point forwards (heading towards the right hand side of the chart - it works forward from the earliest date to the latest.) While Freecharts is looking for condition 2 it will ignore any further condition 1 events. As soon as it finds a condition 2 it will place a indicator on the chart above the price bar, and will again start looking for a condition 1. Some users have decided that a condition could represent a sell signal.
Because it updates the chart so quickly you can modify your formula again and again until you are happy with the results. Then, when you click 'Show!', both formulae are stored in the database so you can change to another company and test them again.
NOTE: You do not program FCharts to examine the relationship between today's price and yesterday's price. Instead, you must tell FCharts what you want your conditions 1 and 2 to be, and the program will then tell you where each condition occurs, whether it was six months ago and last week, or two weeks ago and last Friday. The easiest way to understand this is to put a really simple formula into the condition 1 field (close > open) and another simple formula into the condition 2 field (close < open). When you click 'Show' it will update your chart with a load of indicators. Notice how the 1's and 2's alternate, and notice also that they don't highlight EVERY occurrence of close > open or close < open, just the first occurrence since the previous, opposite condition.
An example FCharts formula
(First you have to make sure '(1) and (2) Indicators' is checked in the 'Special' section of the right-click menu. By that I mean you should right-click on the main chart window, then move the mouse over the 'Special' menu heading and make sure '(1) and (2) Indicators' is checked.)
A formula consists of a first term (e.g. 'CLOSE') followed by an operator (e.g. '>', which is a mathematical symbol for 'greater than') followed by the second term (e.g. 'OPEN') It gets more complicated later, but that will do for now.
Just to confuse things, a TERM can consist of another formula, and several formulae can be joined with the AND keyword or the OR keyword. But don't bother about all that yet - take a look at the Formula examples later on to get an idea of what's possible.
Let's say you've decided to buy a stock when the MACD line (keyword: MACDLine) crosses over the MACD Signal (MACDSignal), the long-term moving average (MA3) is higher (>) today than it was yesterday (PREVIOUS MA3) and today's volume (VOLUME) is higher than the moving average of volume (MAVOL). Can you spot all that after a single glance at a chart? Well FreeCharts can:
previous MACDLine < previous MACDSignal and MACDline > MACDSignal and MA3 > previous MA3 and Volume > MAVol
That's a pretty complex example to start off with, but I wanted to show you the sort of thing this program can do. To test it, bring up a company in Freecharts, change to a 3-month view and then paste the italicised formula above into the text box.
(Tip: you can highlight the italicised formula above, right-click the selection and choose 'Copy'. Next, change to the Freecharts window and right-click on the text box before selecting paste from the pop-up window.)
Now, if you press the 'Show!' button your chart will refresh... and it will look exactly the same as it did before.
Why?
If you change the period to ALL DATA (using the dropdown containing 3 months, 12 months, etc) you will understand. Somewhere on the far left there will be a single, green circle - providing your condition was met, of course. What's happened is that the condition was met, but your initial view was zoomed in to the last three months so you couldn't see it. FCharts starts applying the conditions from the very beginning of the data.
So, you can see a green, circled '1' the first time this condition was met, and nothing else. In order to get a condition 2 we need to enter a formula into the (2) box.
close < open
(This can also be written as 'close is less than open')
This is a pretty simple one. It refers to the trading price on the day, and indicates that the close price should be lower than the opening price.
Now click Show. Bingo! Lots of circles (hopefully). Click on the 3-month view to zoom in a bit. Now you can see the power of this stuff.
OK, end of example. In order to use it, you need to know which keywords and operators are available to you. There is a list in the 'Formula Variables' section, along with a list of macros in the 'Formula Macros' section. which I programmed in because I thought they might be useful. For example, instead of
close > previous close AND previous close > close[2]
(Or close is greater than previous close and previous close is greater than close[2])
you could just put:
M_PriceRises > = 3
(The M_ prefix indicates a pre-calculated macro)
Also, since Freecharts will pick out the first date when your condition is true, there is no need to say
previous MACDLine < previous MACDSignal and MACDline > MACDSignal
as you can simply say
MACDline > MACDSignal
and Freecharts will mark the first time it happens. (They're not quite the same, though. If you add in another expression such as Close > Open, in the former case you will only see an indicator where the lines crossed and the close is higher than the open. In the second case, you will see an indicator whenever the MACD line is above the MACDSignal and the close price is higher than the open. To restrict things further, you could enter:
(previous MACDLine < previous MACDSignal and MACDline > MACDSignal) and (previous close < previous open and close > open)
Note the use of brackets to tell Freecharts which bits belong together. This formula is very specific - unless all the conditions are met on the same day, you won't get an indicator.
Warning!
If you write a formula which evaluates as
TRUE > FALSE
or something like
close > open and close > M_GappedUp
(which is a TRUE/FALSE macro) then I have no idea what will happen. Probably something bad, so don't do it.
If all that sounds like arcane mathematics, take a look at the formula builder - it's designed to ease the learning process somewhat.
This next section was written by an FCPro user, and it explains the best way to write and debug your formulae:
Step 1: Write down what you want to check for and which indicators to use - Someone recently posted a request with about 4 different conditions to be met.
Step 2: Write a formula for each criteria and put it into condition "1" as a simple test (e.g. Volume > MAVol) - use a formula in "2" which will be True so that "1" can be reset for testing, suggestions are:
Put the same formula in both "1" & "2" - OR - High >= Low.
Step 3: Select a stock which you believe the formula is "True" and check that "1" & "2" appear as you believe they should - if they don't then 99.99% of the time you are wrong and FCPro is right.
Step 4: Test each part to see that it is indicating properly and then build by adding together until you have a workable one.
Step 5: Run a scan and check what has been selected in the Ratings lists - this will give an indication of past performances and whether it is a viable test, a reasonable sized historical data base is a help.
Step 6: When all is go, I normally restrict the scan to a recent period, there are two ways of doing this, adding:
..... and LastDayOnly = True (this will provide a "1" on the last day if all conditions are met - if you still have HIH etc in your data base then this is also valid scan)
..... and Date > 01/08/2001 (this is my preference - it only scans the recent stock entries, eliminates redundant codes & it can be easily removed after the scan to get a fuller picture - the date can be changed to suit)
When searching for stock to invest in or to test exit criteria, the best system is to use the same formula in condition "1" & "2", (somebody else posted this idea).
Having said all this, the 1st things programmers do is start at Step 6 and then curse and swear their way in reverse through the steps until something works.
Back to main menu
Formula Variables
Note that all formulae must evaluate to either True or False.
Raw data (these are direct from your import files)
Open
High
Low
Close
Volume
You can use the short form, too.
O = Open
H = High
L = Low
C = Close
V = Volume
P = Previous
D = Date
EMA = CALCEMA
Example: C * 3 > P O
Weekly variables:
(Calculated by the program whenever a daily price chart is loaded/displayed)
WEEKOPEN
WEEKHIGH
WEEKLOW
WEEKCLOSE
WEEKVOLUME
All variables can have a number in square brackets appended to them (e.g. Close[3]). This refers to the close 3 price bars earlier. Close[1] is equivalent to Previous close. You can also look ahead with negative numbers - e.g. Close[-7] is the close 7 periods ahead of the current price bar. (Helps to find a turning point retrospectively, but no use for predicting the future unfortunately.)
If you put [YearAgo] after the variable (e.g. High[YearAgo]) you will get the relevant value from 1 year earlier than the current price bar.
Exponential moving averages of the closing price
MA1
MA2
MA3
Simple moving averages of the closing price
SMA1
SMA2
SMA3
Operators
+ - / *
NOTE: The parser has operator precedence, but it's best to bracket everything for legibility.
Evaluation
> < = <> <= >=
You can now use plain english for mathematical symbols. This table shows the symbol and the equivalent english phrase. (A formula can contain a mix, but you can't use something like 'greater than or = to') Note that there are some repeated (e.g. =) This is to allow for more than one phrase describing the same thing.
'IS' can be included or not, it's up to you.
IS GREATER THAN OR EQUAL TO, >=
GREATER THAN OR EQUAL TO, >=
IS EQUAL TO OR GREATER THAN, >=
EQUAL TO OR GREATER THAN, >=
IS LESS THAN OR EQUAL TO, <=
LESS THAN OR EQUAL TO, <=
IS EQUAL TO OR LESS THAN, <=
EQUAL TO OR LESS THAN, <=
IS EQUAL TO, =
EQUAL TO, =
EQUALS, =
EQUAL, =
IS NOT EQUAL TO, <>
NOT EQUAL TO, <>
DOES NOT EQUAL, <>
GREATER THAN, >
IS GREATER THAN, >
IS LESS THAN, <
LESS THAN, <
IS NOT, <>
IS, =
TIMES, *
PLUS, +
DIVIDED BY, /
MINUS, -
Calculated
Typical: (low+close+high)/3
Median: (High+Low)/2
Indicators
MACD1: Moving average of close price
MACD2: Moving average of close price
MACDLine: Value of MACD1 - MACD2
MACDSignal: Value of the MACD Signal line
MAHIST: Macd Histogram value (Macdline – macdsignal)
RSI: RSI value
MARSI: Moving avg of RSI
MOM: Momentum value
MAVol: An exponential moving average of the volume.

%R: Williams PercentR
%K: Stochastic PercentK
%D: Stochastic PercentD
Slow%K: Slow Stochastic PercentK
Slow%D: Slow Stochastic PercentD
+DI: Wilder’s +DI
-DI: Wilder’s -DI
ADX: Wilder’s ADX
BollUpper: Upper Bollinger Band
BollMiddle: Middle Bollinger Band
BollLower: Lower Bollinger Band
pBand: Upper Trading Band
nBand: Lower Trading Band
cBand: Centre Trading Band
pBand2: Upper Trading Band, second set of bands.
nBand2: Lower Trading Band, second set of bands.
cBand2: Centre Trading Band, second set of bands.
pBand3: Upper Trading Band, third set of bands.
nBand3: Lower Trading Band, third set of bands.
cBand3: Centre Trading Band, third set of bands.
TR: True range (TR is the greater of High - Low; High - Close[1] and Low - Close[1])
ATR: Average True Range. An average of TR, above.
OBV: On balance Volume
MAOBV: On Balance Volume EMA
OBVTrigger: OBV Trigger line
SAR: Parabolic SAR
INLONG: Parabolic SAR is long (T/F)
INSHORT: Parabolic SAR is short (T/F)
'MATS' or MATopShadow: EMA of top shadow
'MABS' or MABottomshadow: EMA of bottom shadow
CMFO: Chaikin Money Flow Oscillator
MMA1 - MMA12 You can access the MMA values using these.

SECTOR
Using Sector = 'xyz' you can limit your scans to stocks within a given sector. For example, on the Australian Stock Exchange, XTE is telecommunications. If you add:
and sector = 'XTE'
to the end of your formula, only XTE stocks will be looked at. Don't forget the single quotes around the sector code.
CODE
Using CODE = 'xyz' you can limit your scans to stocks with a given code. This is obviously pretty useless without wildcards (why scan one stock?), so the syntax allows the inclusion of a * after the code.
This is primarily of use in the Watchlist handler in FCPro. If you were to enter the following:
code = 'TLS*'
and click 'Move to watchlist', all stocks beginning with TLS would be moved to that watchlist (including warrants)
You can also use the ? wildcard to indicate a single letter in the code that can be anything. E.g. ?LS could be TLS or XLS
Don't forget the single quotes around the code.
Prefixes
HIGHEST_
LOWEST_
LOWESTWITHZERO_
You can prefix any variable or macro with HIGHEST_ or LOWEST_ and append a pair of square brackets containing the number of periods you want the high or low calculated from. Well, Highest_Close[14] is equal to the highest close in the past 14 price bars. Lowest_Volume[30] is equal to the lowest volume in the past 30 price bars. Because of the intensive calculations this can slow down the drawing of charts. (The program has to count back [n] prices and check the recent high/low for EVERY tick on the chart.
You can stick HIGHEST_ and LOWEST_ in front of almost anything. Just don't forget the [, the number of periods and the ]. There should be no spaces anywhere in the whole thing. LOWESTWITHZERO_ can also be used, it will return the lowest value even if that happens to be zero. (Lowest_ won't return zero values, since every indicator starts with zero where it doesn't yet have enough prices to calculate a value)
E.g. close = lowest_close[7]
Note that it cannot 'see' back past the start of your data. If you put lowest_close[200] and you only have 100 prices in the database, it will reduce the 200 for you. E.g. when it's scanning the fifth price in the database it will use lowest_close[4] as the comparison. This may lead to some 'false' indicators on the chart near the start of your database - false in that the price concerned may NOT be the lowest for 200 periods, while it IS the lowest from the earliest data on hand.
What can you put between the square brackets, other than a value indicating the number of price bars to go back?
C1, C2, C3
|
You can use C1, C2 or C3 in the square brackets, which will reference the most recent match for condition 1, 2 or 3. (You can only refer to lower-numbered conditions - e.g. you can use C2 in Condition 3, but you can't use C3 in condition 2 because C3 hasn't been calculated at the time condition 2 is being worked out.) You cannot refer to C1-C3 in the User Defined Indicators, as they are calculated first) e.g.
Close = highest_close[C1]
will give you the highest close since the condition 1 match.
|
C1+n, C2+n, C3+n
|
You can use a sum or subtraction within the [C1] to [C3] indexing method. Close[c1] when used in condition 2, 3 or 4 will return the closing price on the day of the last condition 1 match. You can also use [c1+n] and [c1-n] (where n is any number) E.g. open[c1+1] is the closing price on the price bar after the last condition 1 match. IMPORTANT: don't use any spaces inside the square brackets, or the parser will give you an error message. E.g. close[c1 + 1] won't work. You can't use more complex formulae in there, either, like close[c1+8-3/23] and so on.
|
A date
|
You can also put a date between the square brackets. Use your system date format, eg:
highest_close[23/1/2002]
|
@ with number
|
Close[3] will return the close price of 3 periods ago. Now I've added an @ prefix, so you can use close[@3] to return the third loaded price. (Loaded, because you may be examining a 12-month chart with 7 years of data in the file.) This also has the effect of looking ahead - e.g. close[@150] will pull the 150th close, even if the parser is currently examining the 10th price bar.
|
yearago
|
Another useful keyword you can use between the square brackets: yearago. Best explained by example:
high = highest_high[YearAgo]
This will return the highest_high since the date one year earlier than the price currently being examined. Another example:
Close > close[YearAgo]
Returns true if the close is higher than the close 1 year earlier.
Be aware that you have to (a) view a chart long enough to have the data and (b) remember that no matter how far back you ask for, the program eventuallyhas to return the first price in the database. E.g. close[1/1/1950] is going to return the earliest price in your database, not the price for 1st Jan 1950. (Unless you have a LOT of data)
If you use this in a scan, you MUST increase the 'no. of periods' to a large enough number to encompass the required dates. E.g. at least 365. Better if you do a 'Scan All'
|
UDI1 to UDI30
|
You can use the results of user defined indicators UDI1 to UDI30 inside the square brackets. E.g.
Close[UDI1] > close
The UDI in question must return an integer value or a date, since it will be converted into one or the other as usually expected between the square brackets. So, in this example, if UDI1 calculates to a value of '3', then the formula will return True if close[3] is greater then the current close. This use of UDI is considered an advanced topic, but it's present to allow for some very complex calculations.
|
C1_ or variable[C1]
This prefix gives you access to all info in the price record which was current at the time of the last Condition 1 match. E.g. C1_Close is the closing price on the price bar Condition 1 was last matched. You can also use the alternative method of close[C1]. This means you can use a percentage-based stop-loss by appending the following to your (2) formula:
(Normal formula 2 stuff) OR (Close <= (C1_Close * .95))
C2_
The same as C1_, but it gives you the price record information from the last Condition 2 match. You cannot use C2_ in your condition 1 formula (it's a chicken-and-egg situation)

In FCPro you can also use C3_ and C4_
Keywords
You can put LastDayOnly = TRUE into a formula so that the stock will only be marked if the rest of the formula is true on the very last price bar in the database. Eg.
close > highest_close[30] and LastDayOnly = True
This will only pick stocks which have closed higher than any other price bar in the past 30 AND the formula will only check back from the very last price in the database.
Date You can use the date keyword with comparison operators like '=', '>=', etc to restrict the condition to specific dates. For example,
date >= 21/04/2001 (on computers with DD/MM/YYYY dates)
or
date >= 04/21/2001 (on computers with MM/DD/YYYY dates)
LatestDate This allows you to get access to the latest date in the current data set. You can apply math functions to it (e.g. date = latestdate - 20 will mark that particular price bar, although you should be aware that the 20 is not the number of periods, it's literally the number of days.)
LatestClose This is the current closing price.
InWatch[1] to InWatch[n] (Where n is the max number of watchlists allowed)
You can use these to scan stocks which are only in certain watchlists (similar to ticking the watchlists on the advanced scanner settings menu).
Values relating to the latest condition 1, 2, 3 or 4 match.
 Where these come into their own is by combining formulae in (1), (2), (3) and (4). For example, you can use (1) as a pre-entry, then (3) as the entry proper by using one or more of the variables below to follow up on the price action since condition 1. The same with (2) and (4).
For example, you can use Highest_Close[C1] in condition 2-4. It will return the highest close since the last Condition 1 match. You can use C1, C2 or C3 just as you would use any number (e.g. Highest_MA2[C2]), but remember that you cannot use a higher-numbered condition (e.g. C3) in a lower-numbered one (e.g. C2), since lower-numbered conditions are calculated first.
Indexing variables
Price records are held in memory, and sometimes it's handy to address them directly. Pricecount returns the number of prices held in memory for the stock the formula is being applied to. PriceIndex returns the record number for the price being examined. If Pricecount = Priceindex then you are looking at the last price loaded (most recent.) Usage: If you add PriceIndex >= PriceCount - 5 to the start of your scan formula (1), then only the last 5 prices for each loaded stock will be examined. Another use: In the watchlist scanner (on the settings form) you could delete all stocks where pricecount < 25.
variable[UDI1] to variable[UDI10]
This is a handy tweak to the Indexing described above. Provided the UDI returns an integer value, it will be used as an index into earlier values. E.g. Close[UDI1] where UDI1 is 3 would be equivalent to Close[3], but if UDI1 returned 26 it would be equivalent to Close[26]
Gann swing chart variables:
GANNHIGH (The current high)
GANNLOW (The current low)
GANNTURN (Are we on a turning point)
GANNINUPSWING (If it's swinging up)
GANNINDOWNSWING (If it's swinging down)
GANNTURNPRICE (The price at which the gann changed direction)
Darvas Box variables:
DBHigh = darvas high
DBLow = darvas low
DBEntry = true when it enters a high phase
DBExit = true when it enters a low phase
Note: The blue box is the actual Darvas box.
The lines show a 2% buffer above and below, which is a stop loss guide.
The green and red dots show the darvas entry and exit points with the price at that date.

Yield
Dividend
PE
ROE
EPSGrowth
Earnings
NTA
You can use these Fundamental variables in your formulae, but you have to have financial data in your database to make use of it. You can enter financial data per company in the Edit Holdings screen. You can also download fundamental data from www.afr.com.au, although you'll have to modify the columns in a spreadsheet to get it into the right format.
Back to main menu
Formula Macros
These are pre-calculated values which are stored along with every day's price data. You can access these just like the values above, and they also work with the PREVIOUS keyword and the [n] postfix.
M_VolumeSpike Volume is at least twice the average. TRUE or FALSE
M_GappedUp TRUE or FALSE
M_GappedDown TRUE or FALSE
M_GapAmount Amount the price gapped. A dollar value.
M_Overbought Price is above your RSI upper band. TRUE or FALSE
M_Oversold Price is below your RSI lower band. TRUE or FALSE
M_OutOfOversold Price has moved above the lower band. TRUE or FALSE
M_VolumeRises Number of days in a row the volume has increased.
M_VolumeFalls Same, but decreased.
M_PriceRises Number of days in a row the price has closed higher. M_PriceFalls Number of days in a row the price has closed lower.
M_MACDHistFallDays Number of days the MACD histogram has fallen
M_MACDHistRiseDays Number of days the MACD histogram has risen
M_MACDHistAboveZero TRUE or FALSE
M_MACDHistBelowZero TRUE or FALSE
M_InsideRangeDay T/F open > previous open and close < previous close
M_OutsideRangeDay T/F open < previous open and close > previous close
M_OpenCloseReversal T/F
M_RisingBars Whole number. Counts number of days where 'open > previous open and close > previous close'
M_FallingBars Whole number. Counts number of days where 'open < previous open and close < previous close'
There are some additional macros which were previously undocumented. I've had requests for some of these features, so I'll list them and let you experiment:
M_VolumeSpike (Volume > previous MAVOL * 2)
M_PercentCloseChange (Percentage change in the closing
price)
M_GappedUp (True or false)
M_GappedDown (True or false)
M_GapAmount (dollar value)
M_PercentVolChange (e.g.0.05 is 5%)
M_Overbought (RSI related)
M_Oversold (RSI related)
M_OutOfOversold (RSI related)
These macros operate on Exponential Moving Averages (EMA). A '1' is a 'golden cross' (First over second), and a '2' is a 'dead cross' (First falls below second). A 0 means no
cross occurred.
M_CloseCrossMA1
M_CloseCrossMA2
M_CloseCrossMA3
M_MA2crossMA3
M_MA1crossMA2
M_MA1crossMA3
EG M_MA1crossMA2 = 1 will pick out all MA1/MA2 golden crosses
and
M_MA1crossMA2 = 2 will pick up the reverse.
These are similar, but work on Simple Moving Averages (SMA)
M_CloseCrossSMA1
M_CloseCrossSMA2
M_CloseCrossSMA3
M_SMA2crossSMA3
M_SMA1crossSMA2
M_SMA1crossSMA3
(1 is over, 2 is under - e.g. M_CloseCrossSMA1 = 1 means the close price crossed over the SMA1 value)
To do the same as M_CloseCrossSMA1 = 1 using the variables you'd have to type:
previous close < previous sma1 and close > sma1
These are just to do with the MACD:
M_MACDHistRiseDays
M_MACDHistFallDays
M_MACDHistBelowZero
M_MACDHistAboveZero
These are counters for the number of rises and falls for the support and resistance countback lines:
M_CBLRESFALLS
M_CBLRESRISES
M_CBLSUPFALLS
M_CBLSUPRISES
Back to main menu
This page contains some example formulae to help you understand the FCharts programming language. They are not supposed to be examples which you can trade with, and you should NOT use them for anything but education.
Most programs let you enter a formula which works on the past few days. FCharts doesn't work like that. FCharts examines all the prices for the current chart and uses your formulae to place green markers wherever condition (1) is met, and red markers wherever condition (2) is met. Once it places a green marker it cannot place another one until it has placed a red, and vice versa. What does this do for you? Well, for a start you can see at a glance whether your formulae are any good - do they capture the bulk of the up-trends? If not, you can add or tweak your variables and get another, instant look at the chart using the new formula. It's hard to explain clearly without lots of graphics, so the best bet is to set the program up with some data and enter some of the formulae below to see what happens. Start with the really simple formulae, then increase the complexity.
OK, on with the show. Any programmer will tell you that before you start coding, you should write your aims out in plain English. Programming is just converting this plain English into words and symbols a computer can understand. All the examples will have a sentence in English, followed by the same thing using FCharts keywords.
English: Closing price rises above long-term moving average (MA3)
FCharts: Close > MA3
English: How would I construct the formula to highlight when the price of a stock
closes above the MA for 3 days in a row?
I'll explain this more fully. You need to do a comparison for each day. So, the first day would be:
close > ma3
(Exactly the same as the first example, above.) That's pretty straightforward. Now, in FCharts you can access 'earlier' trading periods by appending a number in square brackets. E.g the close 2 periods ago is close[2] and the ma3 7 periods ago would be ma3[7]. So you would add the other parts like this:
close > ma3 and close[1] > ma3[1] and close[2] > ma3[2]
Basically, for each of the last 3 trading periods the close has been above
the ema3 line. If you want to make sure that it was under before that you
can append this:
and close[3] < ma3[3]
Note the < goes the other way, indicating 'less than'. If you're not used
to these symbols you can use plain english:
close is greater than ma3 and close[1] is greater than ma3[1] and ... etc
English: Closing price three days ago was higher than the close two days ago, and yesterday's close was lower than today's, and today's is higher than it was three days ago. (In other words, the price went down and then up)
FCharts: Close[3] > Close[2] and Previous Close < Close and Close > Close[3]
English: Close has risen three days in a row, and volume has risen two days in a row and is now double or more than what it was 5 days ago.
FCharts: M_PriceRises >=3 and M_VolumeRises >=2 and Volume >= Volume[5] * 2
English: Price fell for 3 days, then rose by 2% or more.
FCharts: Previous M_PriceFalls >=3 and Close > Previous Close * 1.02
English: MACD line crosses or is above the MACD signal line, volume has increased for two days in a row and RSI is under 30 and rising.
FCharts: MACDLine > MACDSignal and M_VolumeRises >= 2 and RSI < 30 and RSI > Previous RSI
English: Closing price falls below the medium-term moving average.
FCharts: Close < MA2
English: Close is lower than the lowest close for the previous 21 days.
FCharts: Close < lowest_close[21]
English: Close is higher than the highest open for the past 21 days, and it happened on the last day in the database.
FCharts: Close > highest_open[21] and LastDayOnly = true
English: Close is higher than the lowest close for the past 9 days, and it happened AFTER the 21st of March, 2001.
FCharts: Close > lowest_close[9] and date > 21/3/2001
Important Note: You should use the appropriate date format for your Windows date settings. E.g. Use 3/21/2001 if your computer is using US dates.
English: Close is lower than open and volume increases 45%.
FCharts: Close < Open and Volume > Previous Volume * 1.45
English: Previous high is in or below the lower 5% of today's range. In other words, less than today's low plus 5% of today's range. It's like a gap with a very tiny overlap.
FCharts: previous high <= (low + ((high - low) * .05))
English: Find all stocks which showed a Dragonfly Doji on the most recent trading day.
FCharts: DragonflyDoji = True and LastDayOnly = True
Back to main menu
User Defined Indicators
This exciting new feature allows you to create your own indicators. You can even use the results in your market scans.
The important thing to remember with User Defined Indicators (UDI) is that the result of the formula must be a value. This is different from the formulae used to find entry and exit points on the chart, which must return a true or false value.
An example:
You might want to chart a 3-day simple moving average of the high price. In order to do this, right-click the main chart window and select the UDI (User Defined Indicators) menu item. This will bring up the UDI form.
Enter the following into the UDI 1 text box:
(high[2] + high[1] + high) / 3
(Make sure you put spaces around the + and /)
Now, tick 'Overlay on main chart' and close the form. You will see a chart of your formula overlaid on the main chart window.
To use the values in your scans or formulae, use the variables 'UDI1' to 'UDI10' to represent the calculated results of these user-defined indicators.

The PRO version now has an additional 8 User Defined Indicators. These are numbered UDI3 to UDI10.
Note that you cannot use macros or variables which refer to the calculation of Conditions 1 to 4 in UDI calculations. (E.g. C1_Close) This is because the UDI values are calculated before the condition formulae.
The UDI Configuration menu allows you to choose where, which and what will be displayed. Although it looks complicated, it's fairly straightforward. Bear in mind that some settings will apply to the chart you clicked when you brought up the menu. For example, if you got to the config screen by right-clicking lower chart 2, the 'Combine in lower chart' option will apply to chart 2.
Down the left hand side you will see labels for UDI 1 to 10 (or just 1 and 2 in the SE version). These can be renamed by clicking and entering a new title. To the right of those you will see the formula entry boxes. The formulae can be as simple or as complex as you like - you can use a single variable (e.g. CLOSE) or a whole string of variables using the built-in formula language. The results of these formulae will be plotted in the manner you choose

You can decide which UDI plots will be overlaid on the main chart, and whether they will be forced to the price scale. You can also link all the overlaid UDI to the same scale, which will ignore the price scale altogether. You can also enter an offset value (positive or negative), which allows you to plot the UDI chart offset by that number of price periods. E.g. an offset of 3 will plot the line 3 periods to the right of its usual place.

You can specify whether each UDI plot will appear in line, dot or histogram mode. You can also pair two UDI plots together to form a histogram 'difference' chart (like an MACD chart). I've chosen to use the histogram as the scale - the lines can plot outside the chart.
Restrictions:
1) While you can overlay histograms on the main chart, you cannot force them to the price scale. (They revert to line charts)
2) You can't chart a UDI on its own once it's been linked to another for a UDI hist chart. However, you can always put the UDI name into a higher-numbered UDI and plot that. E.g. UDI1 and UDI2 are linked, and you want to chart UDI1 on its own - just put the variable 'UDI1' into UDI3, and plot UDI3
Examples
15 period EMA of the high price plus 10%: ema high * 1.1, 15
15 period EMA of the low price minus 5%: ema low * 0.95, 15
50 Period EMA of volume: ema volume, 50
max of three formulae:
max UDI1, (ema close, 15), close[3]
Here's how to create an exponential moving average using only the inbuilt formula language:
UDI1: (2 / (9 + 1))
(9 is the period you want)
UDI2: if udi2[1] = 0, c, (udi2[1] * (1 - udi1)) + (c * udi1)
Plot UDI2 on the main chart, fixed to price scale, and you'll see it's identical to the inbuilt EMA function.
(udi2[1] is the previous value of udi2. c is shorthand for close.)
Here's an FCPro example of building a market temperature indicator using several UDIs. First, step 1: open the UDI Configuration screen by right-clicking any lower chart window, then enter the following formulae:
UDI1: if close > previous close, 2, (if close < previous close, -2, 0)
UDI2: if close > open, 2, (if close < open, -2, 0)
UDI3: if range > previous range, 1, (if range < previous range, -1, 0)
UDI4: UDI1 + UDI2 + UDI3
Step 2: chart UDI4 in the lower window, and that's your T. You can also add smoothing:
UDI5: ema UDI4, 5 (That's a 5 period EMA of User Defined Indicator 4)
Now tick 'combine in lower chart' next to UDI4 and UDI5, and at the bottom of the form tick 'link all UDI to same scale on selected chart'. Now plot the 'UDI (Combined)' chart by right-clicking the same lower chart window you selected in step 1 and choosing the option from the 'UDI Charts' submenu.
Do you have to use UDIs in order? E.g. If you want to use one UDI inside another, does the first have to be a lower-numbered UDI?
No. With UDIs, what happens is this: When the program is calculating UDIX and it comes across a reference to UDIY, it temporarily stops calculating X and does all of Y. If Y refers to UDI A, B and C they all get calculated in their entirety before the parser continues with Y. Only when all lower dependencies are met will UDIX continue to calculate.
What you can't do is have UDI1 refer to UDI2, which then refers to UDI1. (Or any kind of circular chain.)
Back to main menu
Built in Functions
In addition to accessing the program variables (e.g. Open, Close, etc) you can also apply commands to these variables or to the results of calculations. This is a list of the available commands:
MAX variable or formula, variable or formula, variable or formula, etc Returns the highest result
MIN variable or formula, variable or formula, variable or formula, etc Returns the lowest result
SUM variable or formula, period
Example:
To get the SUM of the last 3 closing prices:
SUM close, 3
To get the SUM of close + high + open for the last 5 price bars:
SUM close + high + open,
To get a 5-period EMA of the SUM of close + high + open for the last 10 price bars:
EMA (SUM close + high + open, 10), 5
To get the sum of the last 15 values in UDI1:
SUM UDI1, 15
This should allow users to get more creative with their own indicators. Very complex formulae will slow your PC down (lots of calculations), but on the other hand it's quicker than pen and paper.
CALCEMA formula or variable, period Moving average of the formula/variable. Can also use EMA.
CALCSMA formula or variable, period Simple Moving average of the formula/variable. Can also use SMA.
Calc%K, Calc%D and CalcSlow%D. The syntax is "Calc%K stochastic period, fast period, smoothing period" E.g.
Calc%K 25, 5, 2
Calc%D 25, 13, 5
CalcSlow%D 25, 14, 2
It allows you to generate more than one Stochastic. Unlike CalcEMA and similar, this one operates on the high, low, close values.
MULTIBAR formula or variable, period. Best explained by example:
Multibar close > open, 5
this means that close is greater than open for 5 sequential price bars
Multibar close > previous close, 5
this means that close is greater than the previous close for 5 sequential price bars
ROC Variable or UDI, period Rate of change
CALCLSQR formula or variable, period Least squares regression of the formula/variable
STDDEV formula or variable, period Calculates the standard deviation for the given formula or variable.
PERCENT variable or formula, variable or formula Percentage
ABS formula or variable Absolute value (converts negative to positive)
IF condition, variable or formula if true, variable or formula if false
Log (variable or formula) Base 10 logarithm
Sqr (variable or formula) Square root
Exp (variable or formula) Antilog
Cos (variable or formula) Cosine
Sin (variable or formula) Sine
Tan (variable or formula) Tangent
PI A constant, 3.1415926535897932
Deg (variable or formula) Radians to Degrees
Rad (variable or formula) Degrees to Radians
CloseOf[ticker] Returns the closing price of 'ticker' on the same calendar date.
VolumeOf[ticker] Returns the volume of 'ticker' on the same calendar date.
HighOf[ticker] Returns the high price of 'ticker' on the same calendar date.
LowOf[ticker] Returns the low price of 'ticker' on the same calendar date.
OpenOf[ticker] Returns the opening price of 'ticker' on the same calendar date.
You can add another set of brackets after those enclosing the ticker. E.g:
closeof[XAO][15] will return the close 15 bars earlier than the current price.
DEC (or Decreases) and
INC (or Increases). These return TRUE if the selected variable has increased (INC) or decreased (DEC) every price bar over the number specified. E.g.
1) inc rsi, 3 and inc ema2, 4
2) dec rsi, 2 or dec ema1, 3
In other words, rsi rises for 3 sequential days and ema2 rises for 4 day for cond (1) to be true.
rsi falls 2 days running or ema1 falls 3 days running for cond (2) to be true.
You can't use these on calculations, only on variables or UDI. So,
inc (sma close, 4), 5 won't work, but
inc ud11, 5 will, if udi1 is "sma close, 4"
All of these functions can be nested, and may be used in either scanning formulae or user-defined indicators. E.g. a nested IF statement might look like this:
If (conditions), value if true, (if (more conditions), value if true, value if false)
Proper use of round brackets ( and ) will ensure legibility.
Back to main menu
Conclusion
If you are using FCharts SE and are interested in some of the features in Pro, you may be surprised to discover just how low the price is. You can check the current price and order your copy through the Spacejock web site
Order FCharts Pro
Spacejock Home Page
|