Parity Technical Analysis System Version 1.5 User's Guide Copyright c 1991, 1992, 1993 Paul Rickert. All Rights Reserved. The software described in this document is provided under the terms of a license Agreement. Please read it carefully. The software may be used or copied only upon acceptance and in accordance with the terms of this agreement. Unauthorized use, duplication, distribution, or disassembly is strictly prohibited by federal law. Parity, Parity Plus, Price Painter, Mark It and The Display Matrix are trademarks of ParTech Software Systems. MetaStock, The Technician, and The Downloader are trademarks of EQUIS International. CompuTrac is a trademark of Compu Trac Software Inc. OptionExpert is a registered trademark of AIQ Systems Inc. TeleChart 2000 is a trademark of Worden Brothers, Inc. ParTech Software Systems Two Bryant Street, Suite 200 San Francisco, CA 94105 Tel: (415) 546-9316 Fax: (415) 546-9319 Printed in the United States of America Table Of Contents Part 1 Introduction 3 What Is Parity? 4 Parity and Shareware 4 About Parity Plus 5 System Requirements 5 Customer Support 6 Installing Parity 6 Price Data 7 Part 2 Basic Concepts 8 Charts 8 Groups 8 Studies 9 Batches 10 Clusters 10 The Display Matrix„ 11 Profit Testing 12 Scanning and Filtering Securities in a Group 12 Part 3 The Tool Bar 13 The Tool Bar 13 Moveable Versus Fixed Tool Bar 13 Action Tools 14 Display Tools 15 Menu Shortcut Tools 16 Window Management Tools 16 Part 4 Menu Commands 16 File Menu 16 Edit Menu 17 Groups Menu 17 Load a Security 17 Create or Modify Group 19 Select a Group 20 Reorder a Group 21 Save All Groups 22 Delete Groups 22 Display Group or Security 22 Import Other Formats 22 Studies Menu 25 Study Commands 25 Create/Modify Current Study 25 Formula Editor 26 Pane Layout Editor 28 Color Editor 30 Options Editor 30 Action Editor 31 Select a Study 32 Save All Studies 32 Delete Study 33 Import Study From Disk 33 Export Study To Disk 33 Display Current Study 33 Batch Studies 33 Select a Batch 34 Reorder Batch 34 Save All Batches 34 Delete Batch 34 Clusters Menu 35 Make a Cluster 35 Select a Cluster 35 Save All Clusters 35 Delete Cluster 36 Display Current Cluster 36 Pointer Menu 36 Options Menu 37 Default Study 37 Chart Preferences 38 Directory and File Preferences 38 Tool Bar Options 39 Window Menu 39 Help Menu 40 Part 5 Indicators & Chart Procedures 40 Technical Indicators 41 List of Predefined Technical Indicators 41 Bibliography of Technical Analysis Texts 43 Definition and Interpretation of Technical Indicators 43 MetaStock Function Compatibility 45 Procedures vs. Functions 46 Chart Procedures 46 Point and Figure Charts 48 The Point and Figure Procedures 49 Adding Lines to a Chart 51 Part 6 Formulas, Operators & Functions 52 User Defined Custom Formulas 52 Arrays versus Scalars 54 Predefined Variables 56 Operators, Parenthesis and Mathematical Precedence58 Arithmetic Operators 58 Comparison Operators 58 Logical Operators 59 Trigonometric Functions 59 Exponential Functions 60 Rounding Functions 60 Array Related Functions 61 Statistical Functions 61 Date Functions 62 Pattern Recognition Functions 63 ForLoop Function 64 Part 7 File Formats Supported 66 The MetaStock/CompuTrac Format 67 ChartPro File Format 67 Comma Separated ASCII Files 68 TeleChart 2000 Files 69 Part 9 Odds and Ends 69 Printing Charts 69 The Data Microscope 71 Windows 3.0 System Resources 71 System Requirements and Execution Speed 72 Problems and Solutions 73 The Hour Glass Cursor 73 Incomplete Charts and System Resources 73 Appendix 74 Data Vendors 74 Other Resources 77 Part 1 Introduction Welcome to the Parity Technical Analysis System. This User's Guide is a comprehensive guide to all of the features and procedures offered by the Parity software. Most of the text of this manual is also available through Parity's on-line Help files. You can access Parity's help at any time by pressing F1 or by clicking on the Help button on most of Parity's forms and dialog boxes. We strongly recommend that you read the Basic Concepts and The Tool Bar sections of the manual and follow the brief tutorial described in the "Getting a Head Start" section of the READ_1ST.TXT file included in your Parity Installation Disk. This should give you enough of an overview to permit you to quickly become productive using Parity. The Menu Command sections are a reference to all the commands that are available from Parity's Menu Bar. You will benefit from a careful reading of the Create/Modify Current Study section and the detailed description of each of the Study Editors which follows. More advanced users should skim through the Indicators and Chart Procedures section to get a sense of the full range of tools Parity gives you for creating charts incorporating a wide variety of technical indicators and chart types. The Technical Indicators section also includes a bibliography for the best technical analysis books we have found. We strongly recommend John Murphy's "Technical Analysis of the Futures Market" for a beginning text, and Perry Kaufman's "The New Commodity Trading Systems and Methods" for a comprehensive overview of technical analysis. These books are excellent for the analysis of stocks as well as commodities. Part 6, Formulas, Operators and Functions, is designed as a reference guide to the various functions and operators which are available to you when you want to chart your own formulas and indicators. This section assumes a fair amount of knowledge about standard math and computer notations and conventions. You will probably want to ignore this part of the manual until you are ready to start creating formulas which express your own ideas about the best ways to analyze price data. Part 7, File Formats Supported, discusses the four data file formats that Parity supports directly and provides some tips about the merits of each. Part 9, Odds and Ends, includes some general comments about printing charts with Parity and some of the program's idiosyncrasies. As you use Parity please remember that when you make a mistake in a formula you are trying to chart, Parity will seem to "freeze up" and the mouse cursor will be locked into an hour glass shape. Just hit the up arrow key and you can proceed normally. Occasionally an error may occur when you have a form or dialog box open. Normally you can recover by pressing the up arrow key and closing the dialog box by double clicking on the control menu box in the upper left hand corner of the dialog box window. This may indicate a bug in the program and we would appreciate it if you would report it to us. What Is Parity? Parity is a Stock Charting and Technical Analysis Program designed to take full advantage of the Windows Graphical User Interface. The program permits the user to design sophisticated charts of stock price data using a wide range of technical indicators and tools. Parity's charting capabilities permit you to graph a security's price, volume and up to nine indicators in a single chart using any combination of stacked or overlapping panes, each of which can include one or more indicators. Parity incorporates traditional Open, High, Low, Close charts, Line and Bar charts, Japanese Candlestick charts, Point and Figure charts, Equivolume charts, Horizontal Bar charts, and a Price at Volume chart which is similar to The Crocker Chartc. The program includes over 50 of the most popular predefined indicators plus a wide range of math and statistical functions. These indicators and functions can be combined in user defined formulas. The most innovative aspect of Parity is its unique use of Groups of Stocks, Batches of Studies, and Clusters of Charts in order to simplify the analysis of a large number of securities at one time. In order to manage the profusion of sophisticated charts you can design with Parity, virtually all of its settings can be saved to disk and recalled for another Technical Analysis Session. In addition, Parity provides a graphical Display Matrix that permits the user to easily jump from stock to stock and study to study. Parity Plus, the enhanced retail version of Parity, includes sophisticated profit testing and optimization tools that let you test your trading strategies against all the securities in a group. You can summarize the results of a profit test for an entire group or examine summary and transaction details or drill down to daily details for every security in the group. Parity Plus even lets you chart the cumulative profit and profit by position against price. With Parity Plus's scanning and filtering features you can generate a custom report showing the values of any indicators or user defined formulas you want for all the stocks in a group or screen for only those securities that meet your conditions. Parity and Shareware Parity is distributed as Shareware. Parity is not free or public domain software. Shareware permits you to try Parity before you buy the software. However if you continue to use Parity you must Register the software by paying the current licensing fee. Shareware provides a good channel for a software vendor to distribute its products without incurring the high marketing costs involved in normal commercial distribution of software. These cost savings are passed onto the user through the lower cost of Parity compared to other "commercial" technical analysis programs. Our goal is to make Parity the finest technical analysis program you can buy anywhere. In addition to the ability to "try before you buy", Shareware also permits us to make more frequent updates to Parity than would be possible with retail software. The most recent version of Parity will always be available on the INVFORUM of CompuServe or through our BBS at (415) 751-1763. We will also send you the most current version of Parity if you send us your credit card number or a check for $5 to cover the cost of shipping and handling. Feel free to "share" the evaluation version of Parity as long as you follow the guidelines in the LICENSE.TXT file included with the program. However, you may not share the registered version of Parity or Parity Plus. About Parity Plus Parity Plus is the Enhanced Retail Version (ERV) of Parity. Parity Plus is only available directly from ParTech Software Systems or our designated distributors. In addition to all of the great features of the shareware version, Parity Plus includes advanced features such as Profit Testing, Optimization, Stock Filtering and Scanning, Cycle Analysis, Data and File Maintenance, and Data Conversion. In this documentation we use Parity Plus and Parity interchangeably. Parity Plus is a unique and separate program with different features and a totally different distribution structure and license agreement from the shareware program Parity. Our use of the name Parity in this documentation or the help files, to refer to the program Parity Plus, in no way changes the seperate license agreement for Parity and Parity Plus or our copyright rights etc. The current price for Parity Plus 1.5 is $179 plus shipping and taxes. Registered users of Parity will be able to upgrade to Parity Plus at any time by paying the difference between the current price of Parity Plus and their registration fee for Parity. System Requirements To run Parity you need the following hardware and software: An IBM Personal Computer or true compatible. We recommend your PC have an Intel 80386 or faster processor. At least 4 megabytes of memory configured as extended memory (XMS). We recommend 8 megabytes of memory. At least 2 MB of free hard disk space. A VGA or higher video board. We recommend running Parity at 1024x768 screen resolution. IBM DOS or Microsoft MS-DOS Version 3.0 or higher. Microsoft Windows 3.0 or later. Microsoft Windows 3.1 is strongly recommended. A Microsoft compatible mouse. Intel math co-processors are optional but recommended. If you experience problems installing or running Parity we recommend that you refer to the READ_1ST.TXT file for a complete discussion of all the known hardware problems we have encountered. Customer Support Registered users of Parity and Parity Plus are entitled to 90 days of free technical support by phone or E-Mail. Before you contact us we recommend that you first consult the User Guide or On-line Help and then sit back and think about the problem for a moment. Those two steps would solve close to 90% of all the customer support questions we receive. If you still need our help we strongly recommend that you send us E- Mail describing your problem as completely as possible. You can send us E-Mail through the following services which we check frequently: The Internet: 76655.2570@compuserve.com CompuServe: 76655,2570 GEnie: RICKERT Prodigy: GKHK06A We have also started a dedicated Electronic BBS for Parity users where you can exchange files, tips, and ideas as well as get technical support. Our BBS number is (415) 751-1763. If you don't have access to one of the On-line services listed above or feel you need to talk with someone in person you can phone us at (415) 546-9316 from 9:00 AM to 5:00 PM, Pacific Time, Monday through Friday. Please note that we will not return technical support calls from unregistered users. Faxes and regular mail receive the lowest priority when it comes to technical support and we suggest you avoid them unless you feel that your problem needs to be illustrated on paper. Installing Parity The complete Parity program consists of several types of files. Which are detailed in the PACKING.LST file. All of the files listed are required for the initial installation of Parity. However for any subsequent installation of an updated version of Parity on the same machine be very careful not to overwrite the *.DAT files you have created. Initial Installation Parity is distributed on a single 5 1/4" or 3 1/2" high density diskette. If this is your initial installation of Parity, please follow the directions below. Otherwise see the Subsequent Installations section. 1 Start Windows and insert the diskette in drive A or B. 2 From the File Menu of the Program Manager select Run. Type in the floppy diskette drive and INSTALL.EXE, i.e. A:INSTALL.EXE, and hit ENTER. 3 Parity will create the installation form shown below. If this is a first time installation you should let Parity install the sample data files and the sample configuration files. If this is not a first time install uncheck these options to avoid overwriting any files you have created with a previous version of Parity. When you are happy with the options you have chosen click on Continue and Parity will automatically install itself. 4 After Parity has been installed we urge you to read the READ_1ST.TXT file and the README.TXT files which were copied to your Parity directory. You can use the Notepad or Write accessories that came with Windows 3.x to read these files. Parity's installation routine will create a RLZRUN10 directory under your Windows directory and a C:\PARITY directory by default. It will not modify your WIN.INI, AUTOEXEC.BAT or CONFIG.SYS files in any way. Subsequent Installations If you are installing an upgraded version of Parity follow the appropriate installation procedure as outlined above. However it is very important that in step 3 you uncheck the Sample Data Files and Sample Configuration Files options before you proceed with the installation. If you don't do this you may overwrite the *.DAT files which contain the definitions of the Studies, Groups, Batches and Clusters etc. that you have created. We suggest you make backup copies of these *.DAT files regularly. If you are upgrading from the shareware version of Parity you should manually copy the PROFTEST.DAT and the SCANS.DAT files to your Parity directory. Always check the READ_1ST.TXT and README.TXT files for more up-to- date information. Price Data Parity is compatible with 5 or 7 field MetaStock/CompuTrac data files, ChartPro/MegaTech data files, Comma Separated ASCII files, and TeleChart 2000 files. Daily, weekly and monthly data in these formats are widely available from various on-line and data disk services. Parity also permits you to import price data from Excel 2.1 and 3.0 files, Lotus 123 WKS files, Comma Separated Values text files and Tab Separated Values text files. Data from these file formats cannot be included in the definition of a Group but can be charted in the same fashion that Load a Security permits you to chart a single stock. See Import Other Formats for more information. Parity Plus includes a complete set of utilities for file and data maintenance and data conversion. Parity does not include any utilities for downloading price data files. A number of commercial and shareware programs provide these functions. An excellent program for updating MetaStock or ChartPro data files from ASCII text files of price data and for downloading prices from CompuServe or GEnie is the Personal Ticker Tape (PTT). PTT is shareware and the most recent version is always available by calling the FlexSoft BBS at (510) 829- 2293. See the Appendix for more information on different data vendors. Part 2 Basic Concepts The Basic Concepts section of the User Guide explains some of the more innovative terms and concepts which give Parity its power. Like most technical analysis programs, Parity permits you to chart a single stock with a single indicator. However, the real usefulness of Parity comes from its unique ability to chart "Groups" of stocks using predefined "Studies" which include multiple indicators and very flexible chart formats. These features are summarized below. Charts A price chart created by Parity has many different components, most of which are defined by the user in a Study. Every chart includes one or more panes. A Pane is an area of the chart where you can plot price or indicator data. A pane can include up to 11 different data arrays including stock prices and trading volume. Parity permits you to define up to 11 individual panes. Panes are "transparent". They can be stacked or overlaid and their size can be set relative to other panes and the size of the total chart. Any number of panes can be overlaid and each overlaying pane maintains its own scale. A pane's scale can be displayed on the left axis, the right axis or not displayed at all. Stacked panes can be separated in order to show the end values of the scales more clearly. By default a pane will be separated by 5% of the total chart size. Each pane has its own vertical and horizontal grid that can be displayed or hidden. Individual indicators within a pane can have a label defined by the user that displays in the same color as the indicator. The user can set a title for the chart that automatically includes the Security Name and the Study Name used to create the chart. This title is displayed in the chart window's Title Bar and can also be added to the top of the chart itself. The user can also control the number of days between tick marks on the X axis. You can use the tools in the Tool Bar and the Pointer Menu to draw various types of lines in a chart, zoom in on the data, and add text anywhere in the chart. Groups While Parity can load price data for a single security at a time, a powerful feature of the program is its ability to define a Group of securities that can be displayed in any sequence using the Display Tools. A Group is a list of security price data files, in any supported format, located in any directory, on any disk. You might prefer to think of a Group as a portfolio of stocks or a list of ticker symbols. Parity permits you to mix data files in different directories, in different formats, and of different sizes within a single Group. Parity stores all of the information necessary to locate and import a data file in the Group definition. Since a single Group can only contain 64KB of characters the maximum number of securities in a group depends on the size of the data file's path. Even with a long path a Group will hold about 900 securites and if all your files were in the root directory you could create a group with as many as 1800 securities. The User can define an unlimited number of Groups, each of which has a unique name with up to 16 characters. Group definitions can be edited, reordered and deleted at any time. All defined Groups can be saved to disk for reuse in subsequent sessions. Group definitions are stored in the GROUPS.DAT file in the Parity directory on your disk. Visually, the securities in a Group define the vertical axis of the Display Matrix. Studies A Study defines how Parity will chart an individual security, regardless of which security is chosen. Parity permits the user to define the following aspects of a chart. How the price data is displayed, i.e., HLC bar chart or Japanese candlestick chart. Where and whether volume is displayed. What indicators and formulas are plotted on the chart and where. How individual panes are stacked and overlapped and what their relative sizes are. Whether to set a pane's scale to Maximize Y Axis, or Optimize Scale Labels. Which side of the Y axis scale labels are displayed on. What colors to use for the chart. What labels to use for each data array plotted. The number of days between ticks on the X axis. How to label the chart with the Security Name and/or the Study Name. Whether to include the chart title at the top of the chart as well as in the title bar of the chart window. What "actions" to perform depending on the specific price data charted and condition set with the study. A Study is defined using the Create/Modify Current Study selection in the Studies Menu. Each Study can have up to a 16 character name and all Studies can be saved to disk for subsequent sessions. Batches A Batch is analogous to a Group of stocks. However, instead of defining which stocks will be displayed, a batch defines a list of studies that will be displayed. The concept of a "Batch of Studies" is a novel idea. Unlike other stock charting programs, Parity permits you to define an unlimited number of studies. One study might just show a Candlestick chart of a stock with some moving averages. Another study might plot all of the components of Welles Wilder's Directional Movement Index. A third study might only show volume related indicators, while a fourth study might include oscillators like MACD, Chaikin's Oscillator or Stochastics. Parity permits you to define a Batch of any or all of these studies. When you select a Batch, Parity displays each of these studies in sequence on a single security or each stock in a Group. Selecting a Group of stocks and a Batch of studies creates a two- dimensional Display Matrix, where the stocks form the vertical axis and the Studies make up the horizontal axis. It may help to think of the Display Matrix as a graphical spreadsheet with individual stocks as the rows and studies as the columns. Each cell of the "spreadsheet" is potentially a chart. Depending on the Display Tool you select, you can move through the Display Matrix vertically - looking at the same study on dozens of different stocks, or horizontally - looking at multiple studies on a single stock. By selecting a different display tool you can instantaneously change direction. Clusters A Cluster defines the screen configuration for displaying multiple Studies at one time. Like a Batch, a Cluster is a list of individual Studies. However, a Cluster displays all of the Studies at once in your predefined screen configuration. You can use a Cluster with a Group of stocks, or when you load individual securities. Use the forward and reverse display tools to display the Cluster for each security in the Group. To define a Cluster, first arrange charts of each of the Studies you want to include in the Cluster on the screen. Make sure that each chart is positioned and sized the way you want it reproduced when you display the Cluster. Then select the Make a Cluster menu item and enter a name for the Cluster. Note that Parity automatically excludes any "UNNAMED" or "DEFAULT" studies from a Cluster. You can save the definition of all of your Clusters to disk for reuse in subsequent sessions. Parity creates a CLUSTERS.DAT file in its directory that is automatically loaded the next time you start the program. Since all the charts in a Cluster are erased when you move up or down in a Group, the Fast Forward and Fast Reverse tools are meaningless and are disabled. The Display Matrix Parity offers the user the possibility of creating dozens of types of charts on hundreds of individual securities through the use of its Group and Batch features. In order to manage this potential complexity we created an intuitive and easy to use tool we call the Display Matrix. The Display Matrix Concept Conceptually, the Display Matrix is a two dimensional array of all the charts you could create from the individual stocks in a group combined with the individual studies in a batch. It is easiest to think of this two dimensional array (the "matrix") as being similar to a spreadsheet. Each cell of the spreadsheet corresponds to a chart. The rows of the spreadsheet are the price data for each security in the group. The columns of the spreadsheet are the studies that are used to plot that price data. The intersection of each row and column, i.e., the cell, corresponds to a unique chart created by combining the price data for the security in that row, with the definition of the study in that column. Unlike a spreadsheet, most of the charts/cells in the Display Matrix aren't displayed. Even more importantly, only one chart at a time is "current" in the sense that you can retrieve numeric data from it. What Do We Mean by "Current"? At any given time Parity can only have one of each type of "thing" in memory. By "thing" we mean the data from one stock, the settings from one study, and the definition of one group and one batch. So, for example, when we talk about the current group we mean that one group whose list of securities is currently available to define the vertical axis of the Display Matrix. The only time that having just one of each type of thing in memory limits us is when we want to use the Data Microscope on a chart to see the numbers behind the scene. Then we are limited to the "current" chart, i.e., the one for which Parity still has the price data and study settings stored in memory. The Display Matrix Tool Parity's Display Tools visually correspond to the conceptual display matrix. When you move from one stock to another, you are moving up and down the vertical group axis of the spreadsheet. When you move from one study to another you move left and right along the horizontal axis of the spreadsheet. When you select a Display Tool, you tell Parity how to interpret the Forward and Reverse tools, when it creates new charts. With the Display Matrix Tool you can position yourself anywhere within the Display Matrix. Your current location is shown by the intersection of the current study and the current security. By clicking on any cell in the matrix you can immediately reposition the current study and current security. You can select from the drop down list boxes to do the same thing. The Display Matrix Tool doesn't affect the display state you selected by clicking on one of the display tools, it simply repositions you within the matrix. Profit Testing Parity Plus includes sophisticated profit testing features which permit you to define a technical trading strategy and test that strategy against your historical data. Parity Plus lets you run a profit test on a single security or on all the securities in a group. Profit test parameters let you specify a wide range of trading prices and share purchase methods to closely simulate your actual trading strategies. You can examine the results of your profit test at several different levels of detail including tables which show all the trades for a security, a summary of trades for the security, or a summary for all the securities in a group. You can even show a table of the daily details for all the Formulas, Conditions, and Rules for the profit test. Parity's ability to create a chart showing stock price, position status, cumulative profits, and profits per position each security you test is another powerful feature. If you need to analyze your strategy in more detail you can incorporate the results of your profit tests in a study using the ChartProfitTest() chart procedure. Perhaps the most common problem technicians encounter is what value to use for their favorite technical indicators. For example, are 40 day moving averages more predictive than 50 day moving averages or is the best value some place in between? To help answer these questions, Parity Plus includes a powerful optimization tool which lets you specify a range, and step value, for up to five variables you might want to test. Using optimization you might set the value of the OptVar1 variable to range from 30 to 50 in steps of 2 units. When you run an optimized profit test, Parity substitutes the appropriate value for the variable for each run through a group. When testing is completed Parity Plus shows you a table with the results of each iteration through the range you are optimizing for and lets you sort the results for total return. Using this approach you can quickly and automatically determine the optimum values to use in your indicators. Parity Plus lets you name and save an unlimited number of profit tests in exactly the same way you use groups, studies, or batches. You can select a new profit test at any time and run that profit test against the current group, or the current security. Scanning and Filtering Securities in a Group Every investor faces the challenge of staying on top of hundreds of pieces of new information each day and still having time to find and focus on the best securities for right now. Parity Plus' filtering and scanning tools let you rapidly sift through dozens or even hundreds of stocks to find the ones that meet the criteria you have defined. You define a filter or a scan just like you would a profit test. First you specify the formulas and technical indicators you are interested in. Then you determine what, if any conditions, the securities in the group have to meet to be included in your results. You can name and save an unlimited number of scans and run them against any group you have defined. When you run a scan on a group Parity generates a report which shows the ending values for all the indicators and formulas you specified and sorted in the order you choose. If you specified a set of conditions the securities had to meet in order to be included in the scan then only those securities that met your criteria will be shown. You can print the results of a scan or save them to a file for further analysis. After you have run a scan you can create a new group which only includes the securities that met your filter or screening criteria. Then you can chart this new group with any study, batch or cluster you have defined to closely examine each of these securities as a possible investment. Using Parity Plus's scanning and filtering tools it is possible to quickly and efficiently analyze hundreds of securities each day and only spend time on the few that meet your investment standards. Part 3 The Tool Bar The Tool Bar The Tool Bar incorporates most of the tools that are used to display and manipulate charts after you have selected whatever Stocks, Groups, Studies, Batches or Clusters you want displayed. Several less frequently used tools can be accessed through the Pointer Menu. Moveable Versus Fixed Tool Bar By default, the Tool Bar is in a fixed position on the right side of the screen. The default setting leaves a space for the vertical scrollbar which will appear if you drag a chart partially off the screen. The Tool Bar can be set to be moveable with the Moveable Tool Bar command on the Options Menu. You can also select the Flush Right or Flush Left settings to choose a fixed tool bar that is aligned all the way to the right or left of the screen. You can also use the Moveable Tool Bar and Fixed Tool Bar commands to recreate the Tool Bar if it gets mispositioned. This can happen when you have a fixed tool bar and have moved charts off the screen and then do a Window Cascade or Window Tile command. Normally, though, the Tool Bar is simply hidden under a chart. You can bring the Tool Bar forward by clicking in a chart or selecting TBar in the Window Menu. To hide the Tool Bar behind a chart, click in the chart's title bar. Action Tools Click on the tool and then click on the chart you want to act on. These tools are "sticky" and stay active until you select another action tool . The Pointer Menu includes a selection of some less frequently used action tools (see page 38). Tool Description Print Tool Prints the chart you click on. Since the Print Tool gives you much greater control over the printing of a chart you should always use it in preference to the File Print command. After you select the Print Tool, and adjust the printer setup, simply click on the charts you want to print. See Printing Charts (page 73). Trash Can Tool Closes the chart you click on or all of the open charts. Data Microscope Displays price and indicator data for the most recently created chart and can print the data or export it to an Excel, Lotus 123, or text file. See the Data Microscope section for more details (page 73). Pointer Tool Resets the other action tools and goes to a neutral pointer mode. Text Tool Used to add text on a chart. The text you type is centered directly above the point you click on in the chart. 1:1 Magnifying Glass Restores chart to fully expanded state. + Magnifying Glass Zooms in on a chart to focus more closely on a date range. Each use expands the chart to roughly 1/3 its previous data range. By default Parity will not rescale the vertical Y axis of the chart for the new data range. However you can use the Chart Preferences command (see page 40) to select automatic rescaling of the Y axis on zooming. Unfortunately, automatic rescaling does involve some tradeoffs which are discussed in more detail in the Chart Preferences section. - Magnifying Glass Opposite of + Magnifying Glass Vertical Line Tool Draws a vertical line the entire height of the chart wherever you click. Horizontal Line Tool Draws a horizontal line the entire length of the chart wherever you click. Limited Line Tool Draws a line between any two points you click on. Extended Line Tool Draws a line defined by any two points and extending to the chart boundaries. Display Tools Used to select the Display State and Direction used to move through the Display Matrix. After you select a new study or batch you must click on one of the Display Tools to chart it when the "Always Display Charts" option in the Chart Preferences dialog is off. Tool Description Display Matrix Tool Shows a graphical depiction of the Display Matrix and the Current Chart's position in it. Click on the grid of the Display Matrix or select from the drop down list boxes to reposition yourself within the Display Matrix. See The Display Matrix section. Forward & Reverse Tools Used to move through the Display Matrix in the direction indicated by the Display State tools. If the next chart in the direction already exists these tools will bring it to the front. Otherwise the next chart is created from scratch. Fast Forward & Reverse Used to create multiple charts at a time. Clicking on one of these tools causes Parity to create the maximum number of charts in the current direction. The number of charts was defined when you selected a group. If you specified "Print Each Chart as Displayed" when you selected the group the Fast Forward Tool can be used to print all the charts in a group. Display Group Tool This sets the display state to vertical movement between securities in a group. It causes the current graph in the Display Matrix to be created if it isn't already displayed. Display Batch Tool This sets the display state to horizontal movement between studies in a batch. It causes the current graph in the Display Matrix to be created if it isn't already displayed. Display Group on Batch This sets the display state to move through the Display Matrix showing all the studies in a batch for a security in a group before moving up or down to the next security in the group. Display Batch on Group This sets the display state to move through the Display Matrix showing all the securities in a group before moving left or right to the next study in a batch. Menu Shortcut Tools The Menu Shortcut Tools provide the same functionality as the menu commands for loading a security, selecting a group, editing a study, and selecting a batch. These commands also have function key shortcuts. See the Menu Commands section of this manual for more detail on these commands. By default Parity creates a new chart after you use these tools. To disable the automatic charting use the Chart Preferences command on the Options menu to set your display preferences. Load a Security Select a Group Create/Modify Current Study Select a Batch Window Management Tools The Window Management Tools provide the same functionality as the Window Menu Cascade and Tile commands. Tool Description Tile Windows Works exactly like the Window Menu Tile selection; it tiles all the displayed charts. Cascade Windows Works exactly like the Window Menu Cascade selection; it cascades all the displayed charts. Part 4 Menu Commands This section of the User's Guide reviews all of the Menu Commands that are available in Parity. Most of the Tool Bar tools do not have any equivalent functionality from the Menu or the Keyboard. File Menu The File Menu has relatively limited functionality in Parity since no files are "opened" in the traditional Windows sense. Instead use the appropriate commands in the Groups, Studies, and Clusters menus to select the items you want to chart. Command Description Close Will close the currently selected chart. Generally it will be easier to close a chart by double clicking on the Control-Menu box or using the trash can tool. Save As Can only be used to save the contents of the Print Log to a file. You must save studies, groups, batches, and clusters using their respective Save All commands. Print Will print the currently selected chart using default settings. Generally you should use the Printer Tool instead. See Printing Charts. Printer Setup Standard Windows 3.x Printer Setup dialog. Exit Exits Parity. If you have any unsaved groups, batches, studies, or clusters Parity will ask if you want to save them. Edit Menu The Edit Menu provides the standard Edit functionality common to most Windows 3.x applications and they will not be discussed here. Most of these selections will be disabled except when you enter text in a dialog box or use the print log. Command Description Copy Window The Copy Window menu item will copy the currently selected chart to the Clipboard. You can paste the chart into most word processors or into a paintbrush program. If you hold down the shift key while you issue this command the title bar of the window will also be copied to the clipboard. Groups Menu The Groups Menu provides all of the commands to load one security, or to create, select and modify a Group of securities. Load a Security The Load a Security command permits you to select and load a single security for charting using the current study. Loading a security overwrites the current group if one had been selected. This command consists of two dialog boxes: Load a Single Security This dialog permits you to select a security by symbol or name for loading. Parity will display all the files in the directory you have chosen which match the file format criteria. If the file format permits it, the file will be displayed with additional information such as company name and data period. To select a security for loading, highlight the security and click OK or double click on the security. Change directories by double clicking on the directory you wish to change to in the directories list box. Parity supports four different data file formats, 5 or 7 field MetaStock/CompuTrac files, 7 field ChartPro/MegaTech files, Comma Separated Values ASCII files, and TeleChart 2000 files. You can select which file format to use with the "File Format" drop down list box. The Available Securities list box will be automatically updated to show the securities with that format in the directory you selected. To save your file preferences from session to session, use the Directory and File Preferences command on the Options Menu. For more information on these formats, see the File Formats Supported section. To quickly move to a particular security, just select any security with a single click of the mouse and then type the first letter of the file or security name. If no file starts with that letter nothing will happen, otherwise you will move to the first file starting with that letter. This is standard Windows 3.x functionality and you can use this method with any list box. Range of Data to Load This dialog permits you to select which data records in a file will be loaded. You can also set the chart size to be maximized within the "working" screen area. If you manually maximize a chart by clicking on its maximize icon it will "snap" back to its default size whenever another form, chart or window is opened over it. You can specify the number of blank periods that you want added to the right of the chart by entering a positive number in the "Blanks Added to the Right of Chart" box. This is useful if you want to draw extended trendlines into the future. The range of records to load can be specified in several ways. Range of Records Description Absolute Record Number Specify the number of the record in the file. The First Record is the oldest record to be loaded and has to be an integer greater than or equal to 1. The Last Record is the most recent record to be loaded and must be an integer greater than the first record and less than or equal to the total number of records. By default, Parity will load all of the records in the data file. There is no limit on the number of records you can load. Relative Record Position Permits you to select a range of records to load relative to the most recent record in the file (the Last Record). Indicate relative record positions by using negative numbers that count back X records from the last record. If you enter a relative record position for the first record, e.g., -100, Parity will set the Last Record to 0. In this example a total of 101 records will be loaded starting with the most recent record and counting back 100 records. Hitting enter after inputting a relative record position in the First Record field will execute the dialog box. Absolute Date Range Enter the dates you want to load data for. Dates must be formatted as MM/DD/YY or YYMMDD. When you enter a date for the first record, Parity will automatically set the last record to the last date in the file. You may not mix dates and record numbers or relative record positions. Compression Parity gives you two options you can use to "compress" your data files into weekly or monthly formats. If you select the "True Weekly" option, Parity will use the highest and lowest values, the total volume, and Friday's closing price to create its weekly data. The "True Monthly" option works in the same way. The first and last data points may be partial weeks if a full weeks data doesn't exist. Create or Modify Group The Create or Modify Group command defines a new group or modifies the contents of an existing group. A group is a list of securities in any of the supported data formats, located anywhere on your disks. The actual number of securities a group can contain depends primarily on the length of the path of the data files, and for MetaStock files the lengths of the symbol and name of each security. The total size of a group is 64KB of characters. On average each entry for a data file in the root directory will be 35-40 characters so the largest possible group is 1600 to 1800 securities. However, if your data files have a very long path, for example, C:\PARITY\DATAFILE\STOCKS\CONSUMER then the maximum size of your groups will be only 900-1000 securities. You can define any number of groups. Dialog Form Items Description Groups This box lists all of the defined groups currently in memory. Double clicking on a group will add all of the securities in that group to the Securities in Group list. To modify an existing group double click on its name to add its stocks to the Securities in Group list. Make any modifications you want and save it under the same name. Securities in Group This box lists all of the securities you have selected to be in the group. Add securities by double clicking on an available security or an entire group. To delete securities from the group, double click on the security in the group. Available Securities Lists all the securities of the specified data type that are available in the selected directory. Double click on any available security to add it to the group. Type the first letter of a security to search the list for it. Add All Securities Clicking on this button will cause all the securities in the available securities list box to be added to the group. Directories Lists all the directories on your disk. To move around the directory tree simply double click on the directories or drives that are listed. The Available Securities list will be updated for the directory you select. New Group Enter the name of the group you are creating or modifying in this text box. The name can contain 16 significant characters including A-Z, a-z, 0-9, %, _, $, !, and %. Names cannot begin with a number and are not case sensitive. Double Click Action Selects the effect of double clicking in the list boxes. By default double clicking will add or remove securities from the Securities in Group list. Selecting Show Details will cause double clicking on a security to list any available details on the data file. ChartPro data formats contain very little information on the underlying security. File Format Selects the data file format Parity looks for in the selected directory. Only files from one data format at a time can be displayed in the Available Securities list. Note that you can mix files of any format in a group. Sort Available Securities By default Parity sorts the Available Securities list by symbols. You can also sort certain file formats by name. This option is disabled for ChartPro and ASCII files. Sort New Group When you click on the Sort New Group button the Securities in the Group will be sorted by their Name or Symbol depending on which radio button is selected. Create Group Button Clicking Create Group will save the list of securities in the group to the group name you entered in the New Group text box. If you didn't enter a name Parity will prompt you for one. To make the group you created the current group you must use the Select a Group command. Cancel Button Will exit the dialog without creating or modifying a group. Select a Group Use the Select a Group command to select the group of securities which you want to be able to display. Select a Group Dialog Box The Select a Group command lists all the groups and allows you to select the group you want to become the current group by double clicking on the group's name. After you select a group, a second dialog box will appear prompting you to enter a data range and some other parameters controlling the display of charts for the securities in the group Options for Displaying Groups This dialog box sets up certain options that will be identical for all of the securities in the current group. These options control the size and number of the charts that will be shown and the range of data Parity will display from each security in the group. Dialog Form Items Description # of Graphs Displayed The number of charts Parity can display at one time is constrained by Windows' available System Resources. Windows 3.1 gives Parity significantly more System Resources than Windows 3.0. You will receive a warning if you specify more than 12 graphs to be displayed at once. To display only a single graph at a time, click on the Close Graph After Displayed check box. Chart Size Permits you to set the chart size in pixels. Parity sets the default chart size to equal the size of a chart after a Window Cascade command. To maximize the size of each chart as it is displayed click on the Maximize Graph Size check box. Print Each Chart This prints each chart when it is displayed. This option can be used with the Fast Forward and Fast Reverse Tools to print all the charts in a Group. See Printing Charts. Add Blanks to Chart Specify the number of periods of "white" space you want added to the right of the chart. Useful for drawing extended trendlines into the future. Data Range Options Since Parity permits you to group securities with different numbers of records and starting and ending dates you must use Relative Record Positions to specify the data range to be printed. A future release of Parity will include the option to use Absolute Date Ranges. See Load a Security for details about data ranges. Reorder a Group When you reorder a group you change the display sequence of the securities within the group. You can also change the definition of the group by excluding securities from the Reordered Group list. Dialog Form Items Description List of All Groups Select the group you want to reorder by double clicking on the group's name in this list box. Original Group Lists all the securities in the group you selected for reordering which have not been added to the Reordered Group list. Add a security to the Reordered Group list by double clicking on the security name. Reordered Group Lists the display order for all the securities that have been selected for reordering. Double Clicking on a security in the Reordered Group list will add it back to the Original Group List. Double Click Action Permits you to select if double clicking on a security will move it from the Original Group to the Reordered Group or back, or cause any available details about the securities data file to be shown in the upper left corner of the dialog box. Save All Groups The Save All Groups command will save the definition of ALL the groups in memory to the GROUPS.DAT file in your Parity directory. This is the only way to make any changes, deletions, or newly created groups permanent. It is not possible to save just the changes of a single group. Delete Groups The Delete Groups command permits you to remove the definition of a Group from memory. Groups will not be permanently deleted unless you Save All Groups. Display Group or Security The Display command in the Groups menu will display a chart of the current security using the current study and set the display mode to Display Group. This command is included for your convenience only and we recommend controlling the Display Matrix using the Display Tools found on the Tool Bar. Import Other Formats Parity permits you to import data from Excel 2.1 and 3.0 files, Lotus 123 WKS files, Comma Separated Value text files and Tab Separated Value text files. Excel 4.0 and Lotus WRK, WK1, and WK3 files are not supported. You can import price data using the 5 field date, high, low, close, volume format or the 7 field date, open, high, low, close, volume, open interest formats. You can also include other data arrays in the file which will be imported as named variables which you can use in your formulas. Each "column" in the file you import is treated as a variable. The first "row" of the column must contain the name of the variable. Each subsequent row contains the elements of the variable's data array. A variable can contain up to 8100 elements. The Import Other File Formats dialog box is straight forward. Simply select the file you want to import, check the correct file format radio button and click on the Import button. In order to be correctly imported the file must be formatted very specifically. Please read the following sections carefully. Parity performs very limited error checking when it imports data so you may need to experiment with the layout of your file before you are able to import data correctly. Importing Price Data Although Parity permits you to use the Import Other Formats command to import price data you cannot use this data in a group or with the profit testing or scanning functions. Importing price data is more like the Load a Security command but without the ability to select a data range. Generally, we recommend that you use the Data Conversion command to convert files with price data to one of the formats Parity supports directly. To successfully import price data you must observe the following conventions exactly. Each variable name must appear in the first row of the file and must be exactly as shown. Subsequent rows must include data formatted as described below. Variable Name Description Date Mandatory. Subsequent rows must contain date, rather than text or numeric values for Excel and Lotus files. Text files must include dates formatted as MM/DD/YY. Any other formatting will cause an error. Note you must use Date not Dates. High Mandatory. High price values. Excel and Lotus must format the high prices as numeric, rather than text values. Text files must not contain non- numeric characters such as "," or "$". Low Same as High. Close Same as High. Volume Same as High. Open Optional. Same formatting as High. OpenInterest Optional. Same formatting as High. It is safest if you fill openinterest with zeros if you include open data. However, this is not mandatory. Note, there is no space between open and interest in the OpenInterest variable name. Name Mandatory. You must include a text value for name. The use of more than 16 characters will be unpredictable. Only the first row after Name will be recognized. Symbol Mandatory. You must include a text value for symbol. The use of more than 8 characters may be unpredictable. Only the first row after Symbol will be recognized. NumFields Mandatory. NumFields must include a numeric value of either 5 or 7 depending on whether the data includes Date, High, Low, Close, Volume or Date, Open High, Low, Close, Volume, OpenInterest. Note NumFields is one word with no spacing. Only the first row after NumFields will be recognized. The columns can occur in any order and the variable names are not case sensitive. If you are using comma delimited or tab delimited text files we strongly recommend that you include Name, Symbol, and NumFields at the end of the first and second lines. Otherwise you will need to maintain the correct comma or tab separation in each and every row. Also each line in the file must end with a carriage return or carriage return and line feed. If you are using a word processor like Word for Windows that means you must save the file as text with line breaks. You must have the "File Includes Price Data" check box checked to correctly import price data. Once price data is imported you can create charts using any study or batch. If you Load a Security, or Select a Group, the price data you imported will be overwritten. You must use Parity's Predefined Variables to access price data you import. The Date, High, Low, Close, Volume, Open, OpenInterest, Name, Symbol, and NumFields variable names will not be accessible to you. An Example of a Comma Separated File Row 1 date,high,low,close,volume,name,symbol,numfields Row 2 3/1/90,33.5,33,33.25,12500,Good Stock,GSTK,5 Row 3 3/2/90,34,33,33.75,15000 Common Problems Importing Price Data The Import Other Formats command is bug free. If it doesn't work for you there is a problem with your file format. Since we can't tell anything about your file format over the phone we are unable to provide any meaningful technical support for the Import Other Formats command unless you send us the file you are trying to import. In our experience the most common problems importing data are: 1.The date field is not formatted correctly. This occurs most frequently when importing from a spreadsheet. The date field looks like a date value but is really text. Check the formatting of the date column. 2.The Lotus 123 WKS file isn't really in the WKS format but simply has a WKS extension. Parity can only import from true WKS format files, not from WK1, WK3 or WRK files. Check the format of your file. 3.Parity does not support the Excel 4.0 file format. Excel files must be saved as 3.0 or 2.1 formats. Check the format of your file. 4.Each line in a comma or tab delimited text files must end with a hard carriage return. Make sure your word processor is saving the file in plain text format with line breaks. Since Parity performs no error handling when you try to import data if an error occurs the program doesn't fail gracefully and it will often appear to freeze the computer. Normally you can recover simply by pressing the up arrow key and closing the dialog box by double clicking on the control menu box in the upper left hand corner of the dialog box window. Importing Other Data Parity does not limit you to importing only price data. You can import an array of any numeric data. The name of the data array variable will be the same as the name in the first row of the data's column. You can use this variable in exactly the same way as Parity's Predefined Variables. Non-price data can be imported in the same file as price data. These imported variables persist throughout your session. Parity performs no checking to prevent you from accidentally overwriting an internal variable. You may also experience problems with certain formulas when an imported variable doesn't have the "array range" the formula expects. This is definitely an advanced option which will require experimentation. One possibility you might explore is importing data from a package like The Technician, and including it in your analysis. See the Predefined Variables section for more suggestions on how to handle imported data. Studies Menu Study Commands A study controls every aspect of how a chart is displayed except for which security is being charted. The Studies Menu provides you with all of the tools necessary to create sophisticated charts. Multiple studies can be "batched" or "clustered" together to automate repetitive display tasks. A batch is a predefined list of one or more studies that is displayed sequentially on a single security or group. Use batches to automate and simplify your charting. A batch can hold an unlimited number of studies and you can define an unlimited number of batches. Create/Modify Current Study The Create/Modify Study command opens the Formula Editor, which is the first of several dialog boxes that control how a chart is displayed. These dialog boxes always display the settings for the currently selected study, or the Default Study if no study has been selected. The changes you make to the study you are modifying will be temporary if you select O.K. from the Formula Editor which will then create an "UNNAMED" study. The "UNNAMED" study is overwritten if you move through the Display Matrix or select a new current study and your changes will be lost. You can save your changes under a new or existing study name by clicking on the Save As button. These changes will be stored for the current session and can be made permanent with the Save All Studies command. The Study Editors Parity uses five "editors" to set every aspect of a chart's creation. Editor Description Formula Editor The Formula Editor lets you create sophisticated technical indicators using the predefined indicator list and your own formulas. All of the subsequent Study Editors return you to the Formula Editor which controls how your changes will be saved. Pane Layout Editor Controls how the indicators you defined with the Formula Editor will be displayed in the chart. You can specify which pane to plot the indicator in, where the pane should be displayed, what the pane size should be, and whether the pane should be displayed with a scale or a grid. Color Editor Controls what colors to use for plotting the indicators as well as the colors used for the background, scales, labels and grid of the chart. Options Editor Controls how you label the panes and what to use for the chart title. Also lets you select the number of days between ticks on the X axis and whether the Y axis scale of each pane is optimized for labels or data. You can also use the options editor to separate stacked panes with white space. Actions Editor Sets up to 6 "actions" which can be performed on each chart depending on whether the conditions you establish are true or false. The available actions include Price Painter, Mark It, and Audible Alarms. Formula Editor The Formula Editor permits you to create up to nine formulas that can be displayed on a chart and/or used in another formula. Each formula can contain any of the indicators, predefined variables, arithmetic operators, or chart procedures available in Parity. The result of each formula is assigned to an array variable named F1 to F9 as shown to the left of the Formula to Plot box. The F1 to F9 variables can be used in exactly the same fashion as the predefined variables, O, H, L, C, V, and OI which hold the data for the current security. The values for the first security in a group are stored in the predefined variables FO, FH, FL, FC, FV, and FOI. You can use these predefined variables to create spreads and relative strength calculations. Since the formulas are processed sequentially, the result of a formula, e.g. F3, can only be used in subsequent formula definitions, e.g., F4 - F9. Some indicators such as BolBands(), and Stoch() are actually procedures rather than functions. You cannot reference the result of these procedures by F1-F9 or by including them within another formula calculation. A formula box can also contain a chart procedure. Chart procedures perform special processing in order to create displays like Point and Figure Charts, EquiVolume Charts, Crockerc type charts, and horizontal bar charts of the number of days at a price, or the total volume at a price. The ChartFirstSecurity() procedure lets you include a chart of the first security in a group on the same chart as the current security. You can even include the results of a profit test in your chart using the ChartProfitTest() function. To see the selection of Chart Procedures available click on the Chart Procedure radio button. To Define a Formula 1 Click in the Formula Box. 2 Type in your formula or edit an existing formula. Or 3 Double click on a predefined indicator in the indicator list box. If the Formula Box you clicked on in 1) was empty the indicator will be copied to the Formula Box. If the Formula Box already contained a formula definition the indicator you selected will be saved to the clipboard and you can position the cursor in any Formula Box and paste the indicator you selected using SHIFT-INS or the Edit Paste Menu Command. If you click on the Functions radio button a list of Parity's operators and functions will be displayed. When you double click on one of these functions it is saved to the clipboard. You can paste the function into any Formula Box using SHIFT-INS. You will need to edit the function manually. To Define a Chart Procedure 1 Click on the Chart Procedure radio button. The list box will now display all the chart procedures available to you. 2 Double Click on the Chart Procedure you want to include in your chart. Complete the dialog box if necessary, and the Chart Procedure will be copied to the Formula Box or saved to the clipboard. The ChartProfitTest() procedure is not available from the chart procedure list box. You must type ChartProfitTest(), and its parameters, into the Formula Box manually. To Define the Line Style You can select the line style that will be used to plot the result of a formula by clicking on the drop down list box to the right of the Formula Box. An example of each of the available line styles will be shown. The Bars style will plot the formula as a histogram or bar chart. Using Japanese Candlestick Charts By default, Parity will plot the price data as an Open, High, Low, Close bar chart. To plot this data as a Japanese Candlestick chart just check the Candlestick check box. If you are using a high resolution printer you may find that candlestick charts print the candles too thinly. You can use the Chart Preferences command in the Options menu to increase the thickness of the candlesticks. Using Point and Figure, EquiVolume, Crockerc, and Horizontal Bar Charts Parity provides nine powerful Chart Procedures which permit you to include special types of graphs in the panes of your chart. Click on the Chart Procedures radio button to see the selection of charts available to you. Simply double click on the chart procedure you want to include and complete the dialog box which will pop up. The chart procedure will be copied to the empty formula box. Button Commands Button Name Description O.K. Button Saves the settings of all the Study Editors as an "UNNAMED" Study. These settings will be lost when another study is loaded. Save As Button Permits you to save the settings of all the Study Editors as a "Named" Study. These settings can be made permanent by selecting the Save All Studies menu command. Cancel Button Exits Formula Editor without making any changes in the current study. Reset All Button Will reset all of the Study Editors' settings to the Default Study settings. Useful if you want to create a new study from scratch when a named study is loaded. Panes Button Brings up the Pane Layout Editor dialog which controls the layout and appearance of all the panes in a chart. Colors Button Brings up the Color Editor dialog which controls the layout and appearance of all the colors in a chart. Options Button Brings up the Options Editor dialog which controls pane labels, chart titles and pane scaling. Actions Button Brings up the Actions Editor dialog which controls the Price Painter, Mark It, and Audible Alarm actions. Pane Layout Editor The Pane Layout Editor controls how each data array will be plotted in a chart. As many as 11 different data arrays can be plotted in a single chart. These data arrays include price and volume as well as the array variables F1 to F9 that contain the results of the formulas defined in the Formula Editor. By default, Parity plots each data array you define in its own pane, and each pane is displayed in the chart stacked from top to bottom in ascending order. By changing the Pane to Plot In and Pane to Overlay settings you can plot multiple data arrays in a single pane and stack multiple panes on top of each other. The Pane to Overlay settings also control the order in which each pane appears. Each pane maintains its own scale that can be displayed on the left or right side of the pane or not at all by adjusting the Scale settings. The Relative Size settings control the size of each pane in the chart. The Grid Settings control how each pane displays its horizontal and vertical grids. Dialog Form Item Description Pane To Plot In In order to display a data array you must specify a pane to plot the data array in. A pane can contain any number of data arrays but each pane only maintains a single Y axis scale. This scale is automatically adjusted for the largest and smallest values plotted in the pane and the Maximize Y Axis settings in the Options Editor controls how the scale is fitted to the data. The Pane to Plot In setting must contain an integer from 0 to 11. Setting the Pane to Plot In or the Pane to Overlay to 0 will cause the data array to not be displayed. The figure above shows ADX(14) and ADXR(14) plotted in the same pane. Pane to Overlay The Pane to Overlay setting controls where the pane is displayed in a chart. By default each data array is plotted in its own pane that overlays itself. Panes are plotted in the chart from top to bottom in ascending order of the Pane to Overlay value. If you change the Pane to Overlay to a different pane then the contents of the pane will be overlaid onto the other pane. The size of the panes will be controlled by the first pane that is created. Since each pane maintains its own scale, you would overlay panes, rather than plot in the same pane, when two or more data arrays have very different ranges. A good example would be overlaying panes containing PVI() and NVI() data arrays as shown in the figure above. You can also change the order in which panes are displayed on a chart by changing the Pane To Overlay settings. Valid settings for Pane To Overlay are 0 to 11. Using 0 will cause the data array not to be plotted at all. Relative Size Since Parity permits you to dynamically resize your charts, all pane size settings are relative to the total size of the chart. To calculate the display size of a pane, Parity totals the relative sizes of all the panes in the stack (overlaid panes are not counted) and allocates a percentage of the chart's display area to the pane based on the pane's relative size divided by the total relative sizes of all the panes in the stack. Relative sizes can be any number greater than zero. Scale Settings Each Pane maintains its own Y-axis scale. This scale can be displayed to the left or right of the pane or not at all. Parity will display all the scales of overlaid panes. Unless you have the Pane Separation setting selected in the Options Editor the highest and lowest labels of stacked panes with scales set to the same side will overlap. To change the Scale Setting insert the cursor to the far left of the scale box and type L, R, or N. It is not necessary to type the whole word or delete the setting already there. Grid Settings The frequency of the horizontal and vertical grids in a pane are automatically controlled by Parity based on the size of the chart and the pane. However you can control whether either, both or none of the grids are displayed in the pane. To change the Grid setting insert the cursor to the far left of the grid box and type H, V, B, or N. It is not necessary to type the whole word or delete the setting already there. Color Editor The Color Editor permits you to control the colors used to plot each data array, as well as specifying what colors to use for the chart background, scales and labels. To change a color simply click on the button for the item you wish to change. The color selection dialog box will appear. Select one of 38 predefined colors by double clicking on the color name, or create your own color using the RGB slider bars. The lines Parity plots are only one pixel wide. Consequently if your display adapter or Windows settings are set to 16 colors and you select a dithered color the data plots will be unsatisfactory. Also with a one pixel width, similarly colored lines will look almost identical. As a final caution, you should note that not all printer drivers will print all the colors you can display and some printer drivers may print any color except white as a solid black line. Given the diversity of drivers for Windows we can only suggest that you experiment with the best settings for your particular mix of equipment. You can use the Set All To Black button to automatically set all the colors in the chart to black. Preview Chart If you have price data loaded, you can preview the chart as it is currently defined by clicking on the Preview Chart Button. This will create a small copy of the chart your study is defining in the Color Editor form. A complicated study may take a few seconds to display as Parity calculates the value of each formula. Options Editor The Options Editor controls the display of pane labels, chart titles, pane scales and pane separations. Each of its settings is explained below. Dialog Form Item Description Pane Labels Each pane can have a label within the pane that will appear in the upper left corner of the pane. By default pane labels are displayed using the text of the formula used to create the data arrays in the pane. You can edit the text of a pane label and/or completely disable its display using the Pane Labels text box and check box respectively. Labels will be displayed in the same color used to plot the data array. Parity attempts to display all the Pane Labels for all the data arrays plotted in a particular pane area. In other words, labels for all the data arrays plotted IN a pane or OVERLAID on a pane will be printed. However, the logic for arranging these labels is complicated and can easily become confused when you overlay panes that contain multiple data arrays. Also the pane may not be large enough to contain all the labels. Once a Pane Label has been manually edited, subsequent changes in the underlying formula will not affect the label. We recommend that when you overlay panes you use the pane label to indicate whether a data array is plotted to the left or right scale. Maximize Y Axis? The Y axis scale can be adjusted to maximize the fit to the data plotted in the pane by checking this box. This maximizes the amplitude of the data plotted in the pane. If the box is unchecked Parity will display the Y axis scale with "rounded" values, i.e. 10 to 50, or 100 to 200. This will result in "prettier" labels but can flatten the data out quite a lot. We prefer maximizing the fit to data but the choice is yours. Separate Panes? By default, Parity abuts stacked panes top to bottom with no separation. If you check Separate Panes? Parity will add 4% of the area of the chart as white space to the top of the pane. Depending on the size of the chart this will usually permit the top and bottom scale labels of two adjacent panes to be displayed without overlapping. However less space will be available to display the data. The total white space in the chart is added together and used to adjust the relative size of all of the panes. Chart Title Includes: The title bar of a chart can include either the underlying security name, or the study name, or both. In order to use a chart in a cluster the chart title must include the study name. X Axis Tick Days This controls the minimum number of days displayed between tick marks on the X Axis. If the chart is too small to display all the ticks the number of tick days will be multiplied by a factor of 2 or 5 until the largest possible number of ticks can be displayed. In addition this setting may affect the frequency of the Vertical Grid. Chart Title at Top of Page If you check this box the Chart Title will be included at the top of the chart as well as in the title bar of the chart's window. This can be useful when you are preparing printed charts. Action Editor The Action Editor lets you set up to six actions which Parity may take when it creates a chart from the study you are defining. Whether the action is performed will depend on whether its associated condition is true. These actions include the Price Painter which colors the HLC bars of a price chart when the action condition is true, Mark It which adds a marker above or below the price chart when the action condition is true, and Audible Alarms which plays a beep or a Windows WAV file when the action condition is true within the number of days set by the user. You can have multiple actions and action conditions within the same study. When you click on the Actions button on the Formula Editor the Action Editor form will appear. The top half of the Action Editor shows the formulas that you defined using the Formula Editor. The bottom half of the action editor lists the actions and action conditions that you are setting. Normally you will create one or more logical Action Conditions which Parity will evaluate as true or false expressions. A very simple Action Condition might be C > MOV(C, 40, E) which would return an array of 1's and 0's depending on whether the closing price was greater than its 40 day exponential moving average. After you set the action condition you would select the action you want performed if the action condition is true. After you select an action condition the Style and Option Editor for that action will be overlaid on the top half of the Action Editor as shown below: The actual options you can set will vary for each of the actions you choose and should be self explanatory. You can also access the Style and Option Editor by clicking on the Setup Options button by the action you want to edit. The following chart illustrates the result of the Action settings shown above. Select a Study Use the Select a Study command to select the study used to display the price data from any of the studies you have previously defined. You can also convert a profit test or a scan to a study by changing the setting of the "Select The Study From:" drop down list box. Select the study you want to use by double clicking on its name in the list box or hit the Enter key after the study you want to select is highlighted. Note that when you select a new study to become the current study it will replace the study, batch, or cluster you had previously selected and reset the X or study axis of the Display Matrix. You can also use the Select a Study command to display or print the study definition by changing the setting of the "Use The Selected Study For:" drop down list box. Save All Studies The Save All Studies command saves the definition of ALL the studies in memory to the STUDIES.DAT file in your Parity directory. This is the only way to make any changes, deletions, or newly created studies permanent. It is not possible to save changes to a single study. Delete Study The Delete Study command removes the definition of a study from memory. Studies will not be permanently deleted unless you Save All Studies. Import Study From Disk The Import Study From Disk command lets you load a named study from your floppy or hard disk. When you import a study you can accept its previously defined name or give it a new name. Note that the imported study won't be permanantly saved to your STUDIES.DAT file unless you also issue the Save All Studies command. Export Study To Disk The Export Study To Disk command saves all the settings for the named study that you select to a disk file. Only one study can be saved in each file and by default Parity will suggest using the first 8 characters of the study name for the file name. Exported studies can be imported by any Parity or Parity Plus user who has version 1.5 or higher. In order to export a study it must have been named using the Save command on the Study Editor. The "Default" and "Unamed" studies cannot be exported. Exported studies are not deleted from your STUDIES.DAT file. Display Current Study The Display Current Study command displays a chart of the current security using the current study and sets the display mode to Display Group. This command is included for your convenience only and we recommend controlling the Display Matrix using the Display Tools found on the Tool Bar. Batch Studies The Batch Studies command lets you define a new Batch of studies using the Create Batch form. A Batch can contain an unlimited number of studies. To add studies to the batch, double click on the study name in the All Defined Studies list. If you change your mind and want to remove a study from the batch just double click on the study name in the Studies to be Batched list. Type the name you want to assign to the batch in the Name of New Batch box. The name can contain 16 significant characters including A-Z, a-z, 0-9, %, _, $, !, and %. Names cannot begin with a number and are not case sensitive. Clicking O.K. will save the batch to memory and Cancel will exit. To make your changes permanent you must issue a Save All Batches command. Select a Batch Use the Select a Batch command to select the batch used to display the price data from any of the batches you have previously defined. Note that when you select a new batch to become the current batch it will replace the study, batch, or cluster you had previously selected and reset the X or study axis of the Display Matrix. To display the first study in the batch using the current security use the Display Current Study command or click on one of the display options on the Tool Bar. Reorder Batch When you reorder a batch you change the display sequence of the studies within the batch. You can also change the definition of the batch by excluding studies from the Reordered Batch list. Dialog Form Item Description List of All Batches Select the batch you want to reorder by double clicking on the batch's name in this list box. Original Batch Lists all the studies in the batch you selected for reordering which have not been added to the Reordered Batch list. Add a study to the Reordered Batch list by double clicking on the study name. Reordered Batch Lists the display order for all the studies that have been selected for reordering. Double Clicking on a study in the Reordered Batch list will add it back to the Original Batch List. O.K. Button Resets the studies list and display sequence of the Batch to be identical to the Reordered Batch list. Cancel Exits the Reorder Batch form without making any changes. Save All Batches The Save All Batches command saves the definition of ALL the batches in memory to the BATCHES.DAT file in your Parity directory. This is the only way to make any changes, deletions, or newly created batches permanent. It is not possible to save changes to a single batch. Delete Batch The Delete Batches command removes the definition of a Batch from memory. Batches will not be permanently deleted unless you Save All Batches. To add a batch to the list of batches to be deleted double click on the batch name in the All Defined Batches list. To remove a batch from the list of batches to be deleted double click on the batch name in the Batches to be Deleted list. Click on Delete to make these changes or Cancel to exit without deleting any batches. Clusters Menu A Cluster is similar to a batch. However, instead of displaying its studies sequentially, a cluster displays all the studies it contains at the same time and in a predefined screen configuration. Note that the configuration of a cluster is display specific. Displaying a cluster created for a higher resolution display, i.e. Super VGA resolutions of 800 x 600 or 1024 x 768, on a 640 x 480 VGA display, will have unpredictable effects. Make a Cluster To make a cluster you must display screen charts of all the studies you want included in the cluster. Size and arrange these charts on your screen exactly as you want them to appear when you display the cluster. Any charts which exist, whether or not they are visible, will be added to the cluster as long as they based on "named" studies. This includes charts that are minimized. Only charts with titles including the study name can be clustered. Charts without a named study in the title, or with a "DEFAULT" or "UNNAMED" study title are excluded from the cluster. The Make a Cluster command is completely automatic. All you need to do is name the cluster. The name can contain 16 significant characters including A-Z, a-z, 0-9, %, _, $, !, and %. Names cannot begin with a number and are not case sensitive. Clusters, batches, groups and studies can all have the same name. Note that the configuration of a cluster is display specific. Displaying a cluster created for a higher resolution display i.e. Super VGA resolutions of 800 x 600 or 1024 x 768, on a 640 x 480 VGA display will have unpredictable effects. Select a Cluster Use the Select a Cluster command to select the cluster you want to display. Note that when you select a new cluster to become the current cluster it will overwrite the cluster, batch, or study you had previously selected and reset the X or studies axis of the Display Matrix. To display the cluster using the current security click on one of the display options on the Tool Bar. Save All Clusters The Save All Clusters command saves the definition of ALL the clusters in memory to the CLUSTERS.DAT file in your Parity directory. This is the only way to make any changes, deletions, or newly created clusters permanent. It is not possible to save changes to a single cluster. Delete Cluster The Delete Cluster command removes the definition of a Cluster from memory. Clusters will not be permanently deleted unless you Save All Clusters. Display Current Cluster The Display Current Cluster command displays the charts that comprise the current cluster on the current security. If no security or cluster has been loaded you will receive an error message. This command is included for your convenience only and we recommend controlling the Display Matrix using the Display Tools found on the Tool Bar. Pointer Menu The Pointer Menu includes less frequently used Action Tools than are accessible by clicking on an icon on the Tool Bar. Choose the action you want to perform from the Pointer Menu selections. Then click on the chart you want to act on. These tools are "sticky" and stay active until you select another action tool or click on the Pointer Tool on the Tool Bar. Command Description Erase Vertical Lines Erases any vertical lines that have been drawn on the chart you click on, including lines drawn with ChartVertLine(). Erase Horizontal Lines Erases any horizontal lines that have been drawn on the chart you click on, except lines drawn with ChartHorizLine() which cannot be erased. Erase Drawn Lines Erases any lines drawn with the limited line tool, the extended line tool, or the Fibonacci tools. Erase Cycle Lines Erases any lines drawn with the cycle line tool. Erase All Lines Erases all the lines drawn on the chart except lines drawn with ChartHorizLine(). The chart will flicker as each set of lines is erased. Erase All Text Erases any text you have added to the chart using the text tool. Percent Retracement Tool Click on any three points in a chart. Parity will calculate the percent retracement for any third point relative to the distance between the first two points and show price levels for frequently cited percentage retracements. Draw Fibonacci Lines Click on any two points in a chart, usually two extreme price points. Parity will draw horizontal lines at the two points plus lines at 38.2%, 50.0% and 61.8% of the vertical difference between the two points. Note that the calculations are performed based on the actual points you click on, not the data values they are proximate to. Draw Fibonacci Fans Click on any two points in a chart, usually two extreme price Points. Parity will draw 3 diagonal trend lines extending from the first point, through the points that are 38.2%, 50.0% and 61.8% of the vertical difference between the two points and vertical to the second point. These trend lines are automatically extended to the far right of the chart. Note that the calculations are performed based on the actual points you click on, not the data values they are proximate to. Fibonacci Time Zones After you click on a point in a chart Parity will draw vertical lines indicating the important fibonacci time periods from that date. The Fibonacci series used is 0, 1, 1, 2, 3, 5, 8, 13 .... Draw Channel Lines Click on any two points in a chart, usually two points which you believe define a trend. Parity will draw an extended trend line between the two points. Then click on any third point and Parity will draw an extended trendline at the third point which is parallel to the first two points. Options Menu The Options Menu includes several commands used to customize Parity's operation. It also includes commands for maintaining and converting your data files. These features are discussed in more detail in Part 8, Data Maintenance and Conversion. Default Study The Default Study command permits you to save the settings of the current study as the "DEFAULT" study. The "DEFAULT" study settings are loaded when you first start Parity, and whenever you click on the Reset All button in the Formula Editor. To make a "DEFAULT" study use the Create/Modify Current Study editors to define all of the settings for the current study as you want them to in the "DEFAULT" study and click OK. Then choose Default Study from the Options Menu and click on Make Default Study. All the settings, including formulas and chart procedures, of the current study will be saved to the DEFSTUDY.DAT file. To return to Parity's standard "DEFAULT" settings delete the DEFSTUDY.DAT file from your disk. Chart Preferences The Chart Preferences command lets you save the settings which affect the colors and sizes used to display various Chart Procedures and Action Tools. When you click on the "Display and Data Preferences" button, Parity creates a second dialog box that is used to create the default settings for the chart size and the relative data range which are used when you Load a Security or Select a Group The Display Preferences dialog also determines whether a new chart is always created after you load a security, edit a study, or select groups, studies, and batches. Use the Tool Bar Options setting to change the default setting for the Tool Bar's alignment from session to session. The Display Preferences dialog permits you to change the default setting for rescaling the Y axis on a chart when you use the Zoom In or Zoom Out tools. If you choose to have Parity automatically rescale the Y axis when zooming it is important to note that any lines or text you draw on the chart will not be correctly rescaled. Also if you scroll through a zoomed chart using the horizontal scroll bar Parity won't automatically rescale the Y axis for the new data which will be shown. To rescale again just click on the Zoom In and Zoom Out tools. You can enable your preference settings for the current Parity session only, or you can save them to the CHRTPREF.DAT file which Parity uses to set the default settings you specified. To return to Parity's standard chart settings delete the CHRTPREF.DAT file from your disk. Directory and File Preferences Permits you to set a Startup Directory used for the Load a Stock and Create Group commands. You can also save a preference for MetaStock or ChartPro file formats. Your settings will be saved to the FILEPREF.DAT file which is automatically loaded when Parity starts. To return to Parity's standard settings delete the FILEPREF.DAT file from your disk Windows maintains a "current" directory for each disk. If you change from the "Startup Directory" to a different directory using Parity, or any other Windows application, that will be the directory which will be displayed when you use Load a Stock or Create Group. Parity can only set your initial startup directory. Tool Bar Options The Tool Bar Options command is used to change the alignment of the Tool Bar in the display area. Each of the options is discussed below. In order to change the Tool Bar default setting from session to session use the Chart Preferences command. Fixed Tool Bar 21 Pixels From Right Will recreate the Tool Bar as a fixed window 21 pixels from the right of the Parity display area. This option offsets the Tool Bar from the right of the screen to allow room for the verticial scroll bar which appears if you drag a chart off the screen. The fixed Tool Bar is not affected by the Window Cascade and Tile commands unless you have moved a chart off the "desktop" and used the scroll bars which will appear to move around on the virtual desktop. Then Window Cascade or Tile may adversely affect the Tool Bar and you may need to recreate it using the Tool Bar Options command. Moveable Tool Bar Will recreate the Tool Bar as a moveable window of fixed size. The moveable Tool Bar will be affected by the Window Cascade and Tile commands. Flush Right Tool Bar Will recreate the Tool Bar so that it is aligned flush with the right side of the display. The Tool Bar will be obscured by the vertical scroll bar which will appear if you drag a chart out of the display area. Flush Left Tool Bar Will recreate the Tool Bar so that it is aligned flush with the left side of the display. The Tool Bar will obscured the upper left side of the first few cascaded charts. Window Menu The Window Menu provides the standard functionality of the Windows 3.x windowing commands. Command Description Cascade Arranges chart windows in an overlapping pattern so that the title bar of each window remains visible. Tile Arranges chart windows side by side so that all windows are visible. Arrange Icons Arranges all chart icons in rows at the bottom of the Parity window. Show Print Log Opens a very simple and limited text editor. You can make notes and comments in the print log and use the File Print command to print them or the File Save As command to save them to a file. Show Scheduler This command has no function in this release of Parity. Help Menu The Help Menu provides access to Parity's extensive on-line help files. You can also access help by pressing F1 at any time or clicking on the Help button in most of the dialog boxes. The help files include virtually the entire text of the User's Guide. Part 5 Indicators & Chart Procedures The technical analysis of stocks and commodities generally falls into three general types of activity; chart reading, indicator analysis, and wave or cycle analysis. Vociferous proponents of each method exist, but most technicians make use of tools from each of these three general types of analysis in some measure. Parity provides the user with a wide variety of chart types and predefined technical indicators which can be used to predict potential price trends. Chart Reading Chart reading typically involves the visual recognition of historical price and volume trends and patterns which are believed to be useful for forecasting the future direction of a security. Most chartists draw trendlines and resistance and support lines on a chart which identify key price patterns. Parity provides a full complement of drawing tools which are accessible from the Tool Bar or the Pointer Menu. Just by "pointing and clicking" the user can quickly add trendlines, text, channel lines and Fibonacci lines to any chart. Also, Parity's Chart Procedures allow you to create many different chart types. Indicator Analysis Over the years technicians have developed a number of widely recognized "indicators" which can be useful for predicting when a security has peaked or bottomed or is continuing in its current trend. An indicator is simply a predefined formula which takes historical price and volume data and calculates a new indicator value which may have predictive significance. Indicator analysis usually looks for indicator values above or below a certain point, divergences from an indicator chart and the price chart, or a peak or trough in the indicator itself. Parity offers most of the commonly used indicators as predefined functions which can be easily charted or included in your own formulas. Cycle and Wave Analysis Many technicians believe that stocks and commodities follow certain naturally occurring wave patterns and price cycles. The most comprehensive (and difficult) theory of this type is the Elliot Wave Theory. Parity Plus provides the Draw Cycle Lines tool to permit you to explore different cyclical intervals on any of the charts you create. Parity also provides a full set of trigonometric functions that can be used to plot any sort of cycle as a user defined formula in your charts. Technical Indicators Parity includes over 50 of the most popular indicators for the technical analysis of stocks and commodities. The majority of these indicators act as functions that return an array which can be used as the input to another indicator or within a user defined formula. This makes it easy for you to do "studies on studies" or to develop your own proprietary charting tools. A complete list of the indicators available in Parity is shown below. The following section provides a more detailed discussion of each of the indicators, however, a full description of the derivation and interpretation of these indicators is well beyond the scope of this documentation. Please see the Bibliography which follows for a list of books which discuss these indicators in detail. Also see the section on Pattern Recognition Functions (page 66) for a set of functions which you can use in a profit test or chart to detect certain features like peaks and valleys. Notes on Syntax The naming and syntax for indicators generally follows the conventions established by MetaStock and TAS. Some indicators expect parameters of a specific type as shown below: d Any data array including predefined variables or the result of another indicator. p The number of periods to use to calculate the indicator. t The type of moving average to use. Must be "S" for simple, "E" for exponential, "W" for weighted. r Express the result of the indicator in points or percentages. Must be "$" for points or "%" for percentages. Note that Parity is not case sensitive. D is the same as d, AD() is the same as aD(). List of Predefined Technical Indicators Indicator Function Description AD() Accumulation/Distribution ADX(p) Average Directional Movement Index ADXR(p) Average Directional Movement Rating ASwing(limitmove) Accumulation Swing Index BolBands(p, deviations) Bollinger Bands. The deviations parameter is the number of standard deviations used to calculate the top and bottom bands. BolBands() is a procedure. CCI(p) Commodity Channel Index CO() Chaikin Oscillator DPO(p) Detrended Price Oscillator DX(p) Directional Movement Index EquiVol(p) EquiVolume Indicator LinRegSlope(d, p, t) Linear Regression Slope Indicator MACD() MACD Indicator. The 9 day exponential moving average of the MACD is plotted in the same color used by the Text Tool. MASS(p) Mass Index MDI(p) Minus Directional Indicator MFI(p) Money Flow Index MO(p) Momentum Indicator MOV(d, p, t) Moving Average MovLinReg(d, p) Moving Linear Regression NVI() Negative Volume Index OBV() On Balance Volume OSCP(p1, p2, t, r) Price Oscillator OSCV(p1, p2, t, r) Volume Oscillator PctDLine( ... ) %D Line Function PctKLine( ... ) %K Line Function PDO(d, p) Price Deviation Oscillator PriceChannel(p) Price Channel Bands PDI(p) Plus Directional Indicator PVI() Positive Volume Index PVT() Price Volume Trend ROC(d, p, r) Rate of Change RSI(p) Relative Strength Index RSIX(d, p) Relative Strength Index with specified data array. RWIHighs(p1, p2) Random Walk Index of Highs RWILows(p1, p2) Random Walk Index of Lows SAR(IAF, MAF) Parabolic Stop and Reverse System. IAF is the initial acceleration factor. MAF is the maximum acceleration. SMI(p1, p2, p3) Stochastic Momentum Index STD(d) or STD(d, p) Standard Deviation. STD(d) calculates the standard deviation of each element of d from all the values in d and returns a single scalar number. STD(d, p) calculates the standard deviation of each element of d from the values of the preceding p periods and returns an array. Stoch(%Kperiods, %Kslowing, %Dperiods, %Dmethod) Stoch(%Kperiods, %Kslowing) Stochastic Oscillator. Stoch() takes two forms. You must specify the number of %K periods and the %K slowing periods. Optionally you can also specify the number of %D periods and the %D moving average method, i.e. "E", "S", "W". By default %Dperiods is 3 and %Dmethod is "E". The %D line is plotted in the same color as the Text Tool. Stoch() is a procedure. Swing(limitmove) Wilder's Swing Index TR() True Range TRIX(p) TRIX Indicator TSF(d, p) Time Series Forecast ULT(p1, p2, p3) Larry Williams' Ultimate Oscillator VAR(d) or VAR(d, p) Variance. VAR(d) calculates the variance of each element of d from all the values in d and returns a single scalar number. VAR(d, p) calculates the variance of each element of d from the values of the preceding p periods and returns an array. VHF(d, p) Vertical Horizontal Filter VOL(pm, pr) Chaikin's Volatility Indicator, pm is the number of moving average periods, pr is the number of rate of change periods. VOLW(p) Wilder's Volatility WC() Weighted Close WILLA() Williams' A/D WILLR(p) Williams %R ZIG(d, change, r) Zig Zag Indicator. Filters out changes that are less than change points or change percent. If r is "%" then change must be less than 1.0. Bibliography of Technical Analysis Texts The New Commodity Trading Systems and Methods. Perry J. Kaufman. Technical Analysis of the Futures Markets. John J. Murphy. The Encyclopedia of Technical Market Indicators. Robert W. Colby & Thomas A. Meyers. The Technical Traders Guide to Computer Analysis of the Futures Markets. Charles LeBeau & David W. Lucas. Technical Analysis of Stock Trends. Robert D. Edwards & John Magee. Technical Analysis Explained. Martin Pring. New Concepts in Technical Trading Systems. J. Welles Wilder. Definition and Interpretation of Technical Indicators Over the course of the past 20 years or so technical analysts have devoted an increasing amount of their time to the derivation and interpretation of technical indicators that they believe are useful for understanding historical price patterns and predicting future price trends. Prior to the 1970's this sort of analysis was nearly impossible given the difficulty of manually computing most of these indicators and the scarcity of adequate computer power. Although chart pattern interpretation and trendline analysis continues to be important, most technicians have a "toolbox" of indicators that they rely on to identify price trends and overbought and oversold conditions. Parity includes predefined functions for many of the most popular and widely used indicators. Each of the predefined indicators is discussed below. Wherever possible we have provided the actual custom formula equivalents for the indicators to help you to understand the derivation of the indicator as well as providing you with examples you can use to develop your own custom formulas. We also discuss some of the more common interpretations of many of the indicators. See the section on Pattern Recognition Functions (page 66) for a set of functions which you can use in a profit test or chart to detect certain features like peaks and valleys. Neither the inclusion of an indicator nor the discussion of its interpretation should be construed as representing an endorsement of its use. To the best of our knowledge no one indicator or even a combination of indicators is guaranteed to result in profitable trading for every combination of securities and markets. Indicator Parameters and Syntax The naming and syntax for the indicator functions generally follows the conventions established by MetaStock and TAS. Some indicators expect parameters of a specific type as shown below: d Any data array including predefined variables or the result of another indicator. The variable names for the price data are O, H, L, C, V, and OI for the open, high, low, close, volume and open interest data array values. p The number of periods to use to calculate the indicator. The period parameters for indicators requiring more than one period are designated by p1, p2, and p3. A period is the same as one bar on a price chart or a single element of a data array. The actual time period, i.e. days or weeks, will depend on the periodicity of the data you have loaded. t The type of moving average to use. Must be "S" for simple, "E" for exponential, "W" for weighted. r Express the result of the indicator in points or percentages. Must be "$" for points or "%" for percentages. Some indicators require a parameter of a different type, i.e. BolBands(p, deviations), which are explained in the discussion of the indicator. The parameter names or variables "stand in" for the specific values you enter, i.e. MOV(C, 40, "E") is a specific case of the indicator function defined more generally as MOV(d, p, t). The predefined indicators can be selected from the list boxes on the Study, Profit Test, and Scan Editors by double clicking on the indicator's function name or description. You can also manually enter an indicator by typing it into the formula box on the Editors. Parity doesn't perform error testing on manually entered formulas. Many of the indicator descriptions include a reference to one of the books in the Bibliography. Generally we recommend Murphy's book for beginners, Kaufman for a more advanced and mathematical discussion, and Colby & Meyers for its detailed discussion and profit testing of dozens of indicators. MetaStock Function Compatibility Parity supports virtually all of the indicators and functions provided with MetaStock 3.5, and adds many new indicators and functions of its own. The following details the differences between MetaStock and Parity. MetaStock Functions Not Supported In Parity 1.5. Options None of MetaStock's options related functions are supported in Parity 1.5. These include the option functions delta(), gamma(), life(), option(), theta(), and vega(). Indicators We have had trouble finding the correct formulas for the following indicators: corr(), di(), fft(), and hpi(). These indicators will be added as we figure out how to calculate them. MetaStock Functions which will never be supported. Function Description fml() This has no equivalent in Parity since the result of a formula can be referred to directly using F1 to F9. if() if is a reserved word. Equivalent functionality is provided by: IF test THEN d1 ELSE d2. mod(d, v) mod is a reserved word. Equivalent functionality is provided by: d mod v. ref(d, p) Equivalent functionality is provided by d[-p] or d[+p]. sqr(d) sqr is a reserved word. Equivalent functionality is provided by: SQRT(d). sub(a, b) sub is a reserved word. Equivalent functionality is provided by: a - b. sum(d, p) sum is a reserved word. Equivalent functionality is provided by: StatMovTot(d, p) Trivial MetaStock Functions which are supported. For your convenience we do support the following MetaStock functions. The actual underlying Parity equivalent is shown for your edification. We cannot guarantee that these functions will be supported in future releases of Parity. Function Description ADD(a, b) a + b DIV(a, b) a / b FRAC(a) a mod 1 HHV(d, p) StatMovMax(d, p) INT(d) d \ 1 LLV(d, p) StatMovMin(d, p) MID(d, p) (StatMovMin(d, p) + StatMovMax(d, p))/2 MP() (H + L) / 2 MUL(a, b) a * b NEG(d) -d PER(d) (d - d[StartValid(d)])/ d[StartValid(d)] PREC(d, p) ((d * 10^p) \ 1) / 10 ^ p PWR(a, b) a ^ b Procedures vs. Functions Parity includes several indicators which are defined as Procedures rather than Functions. These indicators, which include BolBands() and Stoch() do not return an array of data values. However, BolBands() and Stoch() do create named Global Variables which can be used in subsequent calculations. Parity also includes a special class of Chart Procedures which are used to create special chart types in a pane of a study. Chart procedures are used in a study just like indicators but they do not return an array of data values. Indicator procedures and chart procedures cannot be used within any other function and the result of the procedure cannot be referred to using the F1 to F9 array variables. The following predefined indicators are Procedures rather than Functions. BolBands(p, deviations). Calculates the Bollinger Bands for the closing price using p periods and deviations standard deviations. The result of the calculation are stored in the global variables topband, centerband, and bottomband which may be referenced in subsequent calculations. Stoch(%Kperiods, %Kslowing, %Dperiods, %Dmethod) Calculates the Stochastic Oscillator for the price data. The results of the calculation are stored in the global variables %KLine and %DLine which may be referenced in subsequent calculations. Chart Procedures Parity includes the ability to display multiple types of price charts within the same Study/Chart. Parity accomplishes this with its Chart Procedure functionality. Chart Procedures are used in a Study almost exactly like Parity's predefined indicators. However, instead of returning a data array which is plotted in a pane of the chart, chart procedures create an entirely different chart type in the specified pane. Like indicators, chart procedures can be added to a study by double clicking in the Formula Editor's list box when the Chart Procedure radio button is on. Or you can manually type a chart procedure into a formula box. Note that the color and width used for many of the Chart Procedures can be set with the Chart Preferences command on the Options Menu. Types of Chart Procedures ChartFirstSecurity(typechart) Creates a bar, line, or candlestick chart of the first security in the Group. Use "B", "L", or "J" for the typechart parameter. See Predefined Variables. ChartHorizLine(data), ChartVertLine(data, c1, c2) Draws vertical and horizontal lines on a chart based on the values of data. No results are returned. See Adding Lines to a Chart. ChartProfitTest() Permits you to calculates the result of the profit test you define with the buywhen, sellwhen, longstop, and shortstop parametersand embed the results in any Study. The ChartProfitTest() procedure is an advanced feature of Parity Plus and is not available in the shareware version of the program. DaysAtPrice(array, band) Plots a horizontal bar chart of the number of days array was within the price range defined by band. DaysAtPrice() is usually used with price data such as C, but you can use it with any array variable such as F1-F9. The band parameter sets the "granularity" of the price ranges which are used to total the occurrences of array. For example a band of 1 will treat a closing price of 33, 33.5 and 33.75 as occurring in the same band while .25 would treat them as falling into separate bands. The horizontal bar is plotted at the midrange of the band. Each increment along the X axis equals 1 day where array's price was within the band. By default Parity will plot DaysAtPrice in the Price Pane. DBarPointFigure(boxsize, reversals, $or%, reverseWhen, constantBox) Causes a modified point and figure chart which incorporates the duration or time period of a column to be displayed in its pane. No results are returned. EquiVolumeChart() Creates the Equivolume chart popularized by Richard Arms. The width of each box on the chart is proportional to the volume traded, while the top and bottom of the box corresponds to the High and Low prices for that day. A future version of Parity will include Equivolume Candlestick charts. If you plot more than 1500 days of data with EquiVolumeChart() you will hit Parity's limit of 8189 data array elements and receive an error message. VolumeAtPrice(array, band) Plots a horizontal bar chart of the total volume when array was within the price range defined by band, proportional to the total volume traded during the period of the chart. Unlike DaysAtPrice(), the length of the horizontal lines is relative, not absolute. Roughly speaking, a line twice as long had twice as much volume at that price. See DaysAtPrice() for more detail. XOPointFigure(boxsize, reversals, $or%, reverseWhen, constantBox) Causes a traditional point and figure chart to be displayed in its pane. No results are returned. XVolumeYPrice() This procedure plots a line chart where the X axis is volume and the Y axis is the closing price. The first day is indicated by an "S" on the chart, and the last day by an "E". The direction of the lines is indicated by their color. By default, the lines cycle through Red, Green, and Blue. So the line for the first data point is Red, the second is Green, the third is Blue, the fourth is Red etc. The overall effect is to create something akin to The Crocker Chartc. The analysis of Crocker Chartsc is beyond the scope of this documentation. Point and Figure Charts Point and Figure charts are used to plot price movement rather than price action over time like bar or candlestick charts. You create point and figure charts by typing one of Parity's two types of point and figure chart procedures in the formula box of the Formula Editor. Point and figure charts can be plotted in a unique pane, which can be stacked or overlaid on another pane, or plotted in a pane with other indicators. Constructing Point and Figure Charts Traditional point and figure charts display price movement as a series of columns of X's and O's. An X column indicates rising prices and the O column indicates falling prices. By default Parity also colors the X columns blue and the O columns red to facilitate their interpretation. The two most important parameters in the construction of a point and figure chart are the box size and the reversal criterion. The box size determines the minimum price movement necessary to add an X or O to a column. The reversal criterion is usually expressed as x number of boxes and is used to determine if a new column of X's or O's should be started. The procedure to create a chart in an English/BASIC dialect is: Get the high and low prices for today SELECT CASE current column CASE current column is X's IF today's high is at least 1 box > than previous high THEN Plot new X's. Do not fill box if scale price is > today's high ELSE IF today's low is x boxes below the X column high THEN Move right one column Enter O's beginning 1 box below the X column high Do not fill box if scale price is < today's low END IF CASE current column is O's Do the reverse of the X case. END SELECT Traditional point and figure charts disregard time. This makes it difficult to relate point and figure charts to standard price volume charts. To alleviate this problem Parity incorporates a point and figure chart type, DBarPointFigure(), which changes the width of the X and O columns to reflect the passage of time. The Point and Figure Procedures Parity has two chart procedures which can be used to create point and figure charts. XOPointFigure(boxsize, reversals, $or%, reverseWhen, constantBox) Plots a traditional point and figure chart of X and O columns. If you have a color display, X's will be displayed in blue and O's in red. The procedure is entered as a formula in a Study. How point and figure charts are displayed can be controlled in the same fashion as any other item plotted in a study. DBarPointFigure(boxsize, reversals, $or%, reverseWhen, constantBox) Plots a modified point and figure chart which incorporates time by varying the width of a column to match the entry and exit dates. X columns are displayed as blue rectangles, O columns are displayed as red rectangles. Parameters Parity permits you to experiment with a number of varieties of the point and figure method by changing the parameters used with XOPointFigure() and DBarPointFigure. Parameter Description boxsize The box size of the chart can be expressed in points or percentages, i.e. 1.0 could indicate one point, or .05 could indicate 5% depending on the setting of $or% reversals Determines the number of boxes need to reverse direction and start a new column. Must be a positive number. Note that a boxsize of 1 and reversals of 3 and boxsize of .5 and reversals of 6 will create identical charts. $or% Determines whether the value of boxsize is used as an absolute dollar amount or a percentage of the closing price. $or% must be either "$" or "%" including the quotes. reverseWhen An important question for point and figure charts is when to test for a reversal if the high and low prices of a volatile trading day could be used to continue a column or reverse to a new column. Setting reverseWhen to "A" causes Parity to test for a reversal even after a column has been continued. Setting reverseWhen to "N" causes Parity to only test for a reversal if the column has not been continued. This is the case shown in the chart construction example above. Setting reverseWhen to "B" causes Parity to test for a reversal before it tests if the column has been continued. constantBox Parity can automatically vary the box size as a function of closing price when $or% is set to "%". constantBox must be either "Y" for a constant box size or "N" for a variable box size based on boxsize * today's close. If $or% is set to "$" constantBox is ignored. Limitations An XOPointFigure() chart can contain a maximum of 8189 X and O elements. This is a limitation for all data arrays in Parity. An X or O element is created for every box movement. If you use a very small box size relative to the volatility and price of the security it is possible to hit the 8189 element limit. An example would be using a 0.5 box size on something like the Dow Jones Industrial Average. This will cause a range error when you create the chart. To recover control of Parity just hit the up arrow key. Then close the error message box by double clicking on the control menu icon in the upper left corner of the error message box. Point & Figure Charts of Indicators and Non-Price Data Parity 1.5 permits you to use the DBarPointFigure() and XOPointFigure() procedures to create point and figure charts of indicators and non-price data. Simply add a sixth parameter which is the numeric array you want charted in point & figure form. For example you could create a point & figure chart of the relative strength of the current security compared to the first security in the group with a starting value of 100 (assuming the C and FC arrays have the same range and number of elements) using the following formula: XOPointFigure(.5, 3, "$", "N", "Y", (C/FC) * ((100 * FC[1])/C[1])) Note that this feature is not fully tested or debugged. We do not recommend using percentage based box sizes except with data you are certain contains only positive numbers not too close to zero. Also make sure that your box size is appropriate to your data. Adding Lines to a Chart Parity includes two procedures which can be used to automatically plot vertical or horizontal lines on a chart. ChartVertLine() is particularly useful for indicating buy/sell criteria while ChartHorizLine() is useful to graphically illustrate threshold values for the formulas and indicators you plot. To use these procedures simply type them into a formula box in the Formula Editor. ChartVertLine(array, type, color1, color2) Causes vertical lines to be plotted the full height of the chart. ChartVertLine requires 1, 2 or 4 parameters as explained below. Generally, you will want to set the Pane To Plot In to the value of a pane which contains data. This doesn't affect how ChartVertLine() works but otherwise you will have an empty pane in your chart. ChartVertLine(array) -- One Parameter Case. array Holds a data array which can be a predefined variable, F1 to F9, the result of an indicator, or an expression combining any of these. ChartVertLine(array) tests for array <> array[-1] and plots a vertical line whenever it is True. In other words ChartVertLine will plot a vertical line whenever today's array value is not equal to yesterdays array value. For example: ChartVertLine(C > MOV(C, 50, "S") Will plot a vertical line when the closing price crosses above or below the 50 day simple moving average. ChartVertLine(array, type) -- Two Parameter Case array Holds a data array as above. Or array can contain an array of dates. The type parameter determines how array will be evaluated. If you want array to be a list of dates you must express the dates as follows: ChartVertLine({"07/01/91", "09/15/91", "10/20/91"}, "dates") This will plot a vertical line at each date contained in array if that date exists in the chart. If the date doesn't exist no line will be plotted. Dates must be enclosed in quotes and can be expressed as "MM/DD/YY", "YYMMDD", or "DD-MMM-YY" type formats. To plot a singe date use ChartVertLine({"07/01/91"}, "dates") or ChartVertLine("07/01/91","dates") type Must be set to either "dates" to plot an array of dates, or "values" to plot a data array as in the one parameter case. ChartVertLine(array, type, color1, color2) -- Four Parameter Case array As above type As above color1 The name of a color, enclosed in quotes. Valid names are shown in the select color list in the Color Editor. Examples include "Blue", "Black", "Red", "Green", "Yellow", "Cyan", "Magenta". The first vertical line will be drawn in color1, the second in color2, the third in color1, etc. color2 As above. ChartHorizLine(data) Plots horizontal lines at the Y axis values held in data, in the Pane To Plot In assigned in the Pane Layout Editor. The color of the line is set using the Color Editor. By plotting ChartHorizLine in the same pane as a formula, indicator, or price chart it is possible to set one or more visual "thresholds" which you can use to judge whether the formula or indicator is signaling a buy or sell condition. ChartHorizLine(data) takes a single parameter, data, which can be either a scalar or array value. For example to plot 4 horizontal lines in a pane use: ChartHorizLine({100, 50, 0, -50, -100}) To plot a single horizontal line you can use either: ChartHorizLine({0}) Or ChartHorizLine(0) The values in data can appear in any order. Part 6 Formulas, Operators & Functions Parity provides a full complement of powerful mathematical functions and operators which can be used to create very complex user defined formulas. Parity supports a very standard mathematical and programming syntax which is derived from the BASIC computer language. However, the unfortunate reality is that user defined formulas do require some understanding of math and algebra. We have included examples of how custom formulas can be used in the Indicators section of the manual and throughout the text to help you familiarize yourself with these concepts. User Defined Custom Formulas Parity permits you to create extremely sophisticated formulas using the Formula Editor, the Profit Test Editor, and the Scan Editor. With Parity you can create formulas using: Arithmetic Operators +, -, *, /, ^, Mod, \ Comparison Operators =, <>, <, >, <=, >= Logical Operators AND, OR, NOT, XOR, EQV, IMP Trigonometric Functions Cos(), Sin(), Tan(), ACos(), ASin(), ATn(), ATan2() Exponential Functions Exp(), Exp10(), Log(), Log10(), Sqr(), Sqrt() Rounding Functions Round(), Ceil(), Floor(), Abs(), Sgn(), Bool() Array Related Functions Sum(), Product(), RunTot(), Min(), Max(), IF test THEN data1 ELSE data2 Statistical Functions StatNorm(), StatPercent(), StatRegress(), StatMovTot(), StatMovMin(), StatMovMax(), RND() Date Functions DayOfWeek(), DayOfMonth(), DayOfYear(), MonthNumber(), YearNumber(), StrToDate(). Pattern Recognition Bottom3Bars(), Top3Bars(), Bottom5Bars(), Top5Bars(), Bottom7Bars(), Top7Bars(), CrossAbove(), CrossBelow() Technical Indicators Predefined technical indicators for stock and commodity charting, i.e. AD(), ADXR(), MOV(), TRIX(), TSF() etc. ForLoop Function The powerful ForLoop() function lets you embed a FOR loop program in an algebraic formula if it requires a self-referential calculation. Other Formulas F1 to F9 when previously defined Limitations of User Defined Formulas in Parity Version 1.5 of Parity includes several important limitations on the formulas you create: 1 A formula cannot contain more than 512 characters. 2 You cannot assign the result of a formula to a variable. By default, formulas created using the Formula Editor will assign the result of a formula to its corresponding F1 to F9 variable, which can be used in subsequent calculations. You cannot use = as an assignment operator within a formula. The following will cause an error when you chart a study. x = H - L The exception to this rule is when you are using the ForLoop function which does permit you to create intermediate variables. 3 Parity calculates the result of a formula "all at once". This can create a problem where you might want to use "yesterdays" value of the formula in the formula. For example, a 9 day exponential moving average of the closing price is defined as: current period close * 0.2 + previous period's average * (1 - 0.2) However, Version 1.5 of Parity does provide the very powerful ForLoop() function which lets you embed a calculation which would normally require a FOR loop in any of Parity's algebraic expressions. For example the exponential moving average calculation shown above could be performed with the following statement: ForLoop( "RV[x-1] * .8 + C[x] * .2", 2; "RV[1] = C[1]" ) Also, Parity does permit you to perform running and moving totals with the RunTot() and StatMovTot() functions. These functions are useful for calculating indicators like the predefined Volume Accumulation/Distribution indicator, AD(), that is defined as: ((Close - Low) - (High - Close) / (High - Low) ) * Volume + "the value of yesterdays calculation" and which can be calculated using the following custom formula: RunTot(((C - L) - (H - C) / (H - L)) * V) Note that it is easy to reference the previous value of an array once it has been calculated using the [-x] array notation, you simply can't do it while its being calculated. This is equivalent to MetaStock's ref(data array, period) function but is much more powerful and direct. 4 Parity does not perform any error checking on user defined formulas before it executes them. If you attempt to plot a formula with an error in it, Parity will issue a cryptic error message and appear to hang. To resume the program simply hit the up arrow key and close the error message. Examples of Valid Formulas AD() MOV(C, 20, "S") Stoch(5, 3, 3, "E") (H - L) / C ROC( RSI(14) , 10, "%" ) (MOV(C,10, "E") > MOV(C, 40, "E") AND RSI(14) <= 70) * 2 - 1 TSF(C, 21)[-1] <= TSF(C, 21) AND TSF(C, 21) >= TSF (C, 21)[+1] C > 30 Examples of Invalid Formulas x = H - L Stoch(5, 3, 3, "E") / C Any formula that results in division by 0. Arrays versus Scalars A good understanding of arrays is essential to creating your own formulas. When you chart an indicator in Parity it appears as a continuous line. In fact the line simply connects the multiple discrete data values which make up the array which is defined by that indicator. Likewise, Parity loads a security's price data into separate arrays for the high, low and closing prices which are then available to you via the predefined array variables, H, L, C. An example of an array with five values would be: DA = {2, 4, 6, 8, 10} The squiggly brackets indicate that the numbers form an array, which can be thought of as a set of numbers which can be referred to as a single entity or variable, in this case the variable DA. Each element of an array can be referenced by its "index", i.e. its position in the array. In the example above the number 6 has an index of 3 and could be specified as DA[3] (see below for more information on referencing arrays). Many math texts also refer to arrays as vectors. An array doesn't have to contain multiple values, it could include only a single number, for example the array {5} contains just one value. However, the array {5} is a different type of data than the "scalar" number 5. In other words, scalars contain a single value, such as 2.7 or 5. Arrays generally contain multiple values, each element of which is addressed by an index. Most of Parity's operators and functions work equally well on arrays and scalars and the two can be mixed together in computations. For example, you can multiply an array variable with 5 values by the scalar number 2 as shown below: {4, 8, 12, 16, 20} = {2, 4, 6, 8, 10} * 2 = DA * 2 An array can contain a maximum of 8189 elements. Referencing Arrays There are several ways to refer to arrays and to their elements as shown below. V The whole array Where V is {2, 4, 6, 8, 10} V[x] Element x of array V V[4] would be {8} V[x:y] Elements x to y of V V[2:4] would be {4, 6, 8} V[-x] V with elements V[-1] would be {?, shifted ahead by x 2, 4, 6, 8, 10} units. The valid range is also adjusted to match the shifted elements V[+x] V with elements V[+1] would be {4, shifted back x units. 6, 8, 10} Elements shifted before x are discarded. The size of an array is the total number of elements it contains. In the example above V's size is 5 elements. Arrays also have valid ranges and they do not have to be defined starting with index 1. In our example the valid range of V[-1] is [2:6]. Index [1] of this array is undefined. Array Calculations All of Parity's operators and most of its predefined functions and indicators work on arrays. The careful use of array shifting can permit you to create very powerful formulas using Parity. For example to calculate the percent change of today's closing price versus two days ago you could use the formula: ( (C - C[-2]) / C[-2] ) * 100 Or, to calculate the difference between a 14 day simple moving average and the closing price: C - MOV(C, 14, "S") Generally Parity is able to automatically compensate for the changes in size and valid range that occur in array calculations. However it is conceivable that you might create a formula which tries to perform an operation on two arrays that don't have overlapping valid ranges and have different sizes. In that case Parity will give you an error message when you try to execute the formula. Predefined Variables Whenever Parity loads price data for a security it creates a number of predefined array variables that can be used in your formulas. These variables include: DATES Array of Date Values for the security H Array of High Prices L Array of Low Prices C Array of Closing Prices V Array of Trading Volume If the data file which is loaded includes open and open interest data Parity will also create these additional variables: O Array of Opening Prices OI Array of Open Interest Each element of these predefined variables contains data from the corresponding record in the data range that was loaded. The first element is always the oldest record and the last element is the most recent record loaded. Predefined Variables for the First Security in a Group Parity also stores the price data for the first security in a group in a special set of predefined variables. This lets you create formulas that perform spread or relative strength calculations. These special variables include: FDATES Array of Date Values of First Security in a Group FH Array of High Prices of First Security in a Group FL Array of Low Prices of First Security in a Group FC Array of Closing Prices of First Security in a Group FV Array of Trading Volume of First Security in a Group FO Array of Opening Prices of First Security in a Group FOI Array of Open Interest of First Security in a Group If the date range of the first security in a group is different from subsequent securities in a group, the use of these special variables will be misleading at best. The ChartFirstSecurity(type of chart) chart procedure can be used to plot a line, bar, or candlestick chart of the first security in any pane of a chart. If you Load a Security before you select a current group these Fx variables will be identical to the predefined variables for that security. However, if the Fx variables are already defined they will not be overwritten, except when you select a new group. This prevents "Undefined Variable" errors and gives you maximum flexibility in designing your studies. The Fx variables are extremely useful for charting spreads and relative strength comparisons. Typically the first security in a group would be an index like the S&P 500 or the leading company in an industry. You could then use a formula like C - FC to plot a spread or (C-C[1])/(FC - FC[1]) to plot relative strength. Importing User Defined Variables Parity gives you the unique ability to import user defined variables using the Import Other Formats command. These user defined variables will persist for the duration of your session with Parity and can be used just like predefined variables. Note that Parity provides no error or range checking for user defined variables. There is a special syntax which can make user defined variables more useful to you. Let's say you imported a variable called NYSEADVANCE which has 800 data elements. The data you are charting includes 101 data elements. Assuming the date of the last element of NYSEADVANCE is the same as the last day of your price data you could use the following command to include NYSEADVANCE in a formula correctly: NYSEADVANCE[EndValid(NYSEADVANCE) - 100 : EndValid(NYSEADVANCE)] To actually chart NYSEADVANCE you might also need to adjust its valid range by appending [ + (EndValid(NYSEADVANCE) - 100) ] To the formula above. Obviously user defined variables are a powerful AND complex feature. You will need to experiment to become familiar with this capability. Please see the sections on Arrays versus Scalars (page 56) , and Array Related Functions (page 63) for more information on the use of the [ ] array operator and the StartValid and EndValid functions. Operators, Parenthesis and Mathematical Precedence Formulas in Parity follow the normal conventions for the use of parenthesis and precedence to control the order in which mathematical operations are performed. Parity also supports the normal mathematical operators available in most BASIC dialects including (in order of precedence): ( ) Parentheses [ ] Array Brackets ^ Exponentiation - (unary minus) Unary Minus * / Multiplication and Division \ Truncated Division Mod Modulus + - Addition and Subtraction = <> > < >= <= Comparison Not Logical Negation And Logical And Or Logical Or Xor Logical Exclusive Or Eqv Logical Equivalence Imp Logical Implication With some rather complicated exceptions these operators can be used equally well with Scalar or Array values. The Logical Operators consider a 0 value to be False and any non zero value to be True. Using a Logical Operator on an array will return an array of ones and zeros. Arithmetic Operators Parity permits you to use all of the standard arithmetic operators in your formulas as shown below. A + B Add B to A. A - B Subtract B from A. A * B Multiply A and B. A / B Divide A by B. A ^ B Compute AB. 2 ^ 4 is 2*2*2*2. A Mod B Return the integer remainder of A / B. 17 Mod 3 is 2. A \ B Truncated Division. Divide A by B and discard digits to the right of the decimal place. 17 \ 3 is 5. - A Negate A. This is a unary operator. Comparison Operators The Comparison Operators compare two values which can be either an array or a scalar. The comparison operators return 1 if the comparison is true or 0 if it is false. Using a comparison operator with an array will return an array of 1's and 0's for each element in the array. A < B If A is less than B the result is 1, and 0 otherwise. A <= B If A is less than or equal to B the result is 1, and 0 otherwise. A <> B If A is not equal to B the result is 1, and 0 otherwise. A = B If A is equal to B the result is 1, and 0 otherwise. A > B If A is greater than B the result is 1, and 0 otherwise. A >= B If A is greater than or equal to B the result is 1, and 0 otherwise. Logical Operators Logical Operators work on true and false values. Parity considers any non-zero value to be true and 0 to be false. Logical Operators can be combined with comparison operators and other values to form a logical statement. Using Logical Operators with arrays will return an array of 1's and 0's. A AND B If A and B are both non-zero the result is 1. Otherwise, the result is 0. A OR B If A or B is non-zero the result is 1. Otherwise, the result is 0. A XOR B If A is non-zero and B is 0, or A is 0 and B is non-zero, then the result is 1. Otherwise, the result is 0. NOT A If A is non-zero, the result is 0. If A is 0, the result is 1 A EQV B If A and B are both non-zero, or A and B are both 0, then the result is 1. Otherwise, the result is 0. A IMP B If A is 0 or B is non-zero, the result is 1. Otherwise, the result is 0. Trigonometric Functions Parity supports the standard trigonometric and inverse trigonometric functions. Angle measurements are in radians. Degree measurements are converted to radians by multiplying by the factor pi/180. The value of Pi can be obtained using ACos(-1). Trigonometric functions will operate on either scalar or array values. Cos(data) Computes the cosine of a value given in radians. Sin(data) Computes the sine of a value given in radians. Tan(data) Computes the tangent of a value given in radians. ACos(data) Computes the arccosine of a value given in radians. ASin(data) Computes the arcsine of a value given in radians. ATn(data) Computes the arctangent of a value given in radians. ATan2(Xdata, Ydata) Computes the tangent of a line from the origin to a point. Exponential Functions Parity includes a set of common exponential functions: Exp(data) Computes ex Exp10(data) Computes 10x Log(data) Computes ln(x) Log10(data) Computes log10(x) Sqr(data) Computes x2 Sqrt(data) Computes the square root of a value. The logarithm of a number for a base other than e or 10 is computed with the following formula: Logbx = Log(x) / Log(b) The value of the constant e is calculated with the equation below: e = Exp(1) Rounding Functions Rounding functions are used to adjust scalar or array data in a number of ways. Round(data) Returns the nearest integer to a value. Round(6.6) is 7. Ceil(data) Returns the smallest integral number >= the value. Ceil(6.3) is 7 Floor(data) Returns the largest integral number <= the value. Floor(6.9) is 6 Abs(data) Returns the absolute value of a number. ABS(- 3.3) is 3.3. Sgn(data) Returns the signum function of a number, i.e. 1 for 6 and -1 for -6. Bool(data) Converts a number to a Boolean. Either 1 for a non- zero value or 0. Array Related Functions The Array Related Functions may operate on scalar parameters, though generally they are only meaningful for array values. See the Arrays versus Scalars section (page 56) for a more general discussion of arrays. StartValid(array) Returns a scalar which is the index number of the first element of the array. EndValid(array) Returns a scalar which is the index number of the last element of the array. RunTot(array) Creates an array containing a running total of the input array. Sum(array) Returns the sum of all the elements in an array. Product(array) Returns the product of all the elements in an array. Min(array) Returns the smallest value in an array. Max(array) Returns the largest value in an array. IF test THEN data1 ELSE data2 Returns data1 if test is true (non- zero) or data2 if test is false (0). If test is an array this evaluation is done element by element and the corresponding element in data1 or data2 is returned. Arrays and scalars can be mixed. Statistical Functions Parity provides you with a number of statistical functions which you can use in the formulas you define. StatNorm(data, min, max) Normalizes an array to a specified range. The smallest element in the array will be mapped to min and the largest will be mapped to max with all intermediate values linearly scaled. StatPercent(data) Computes the sum of all the elements in data and returns an array containing data divided by the sum. Equivalent to data / Sum(data). StatRegress(data) Computes a best fit least squares regression line for data. The result is an array filled with values representing the Y values of the regression line. Random() Computes an array of random numbers of the same size as the price arrays. Time Series Functions The following functions perform an operation, such as computing an average, involving an element of an array and the preceding N elements where N is determined by the parameter lengths. Since lengths can be either a scalar or an array of the same size as data, it is possible for undefined values to occur in the middle of an array. For example if element 4 of array lengths is 15. This would mean that the fourth element was a function of the preceding 15 elements. In this case the fourth element of the result, and all preceding elements, would be undefined. StatMovAvg(data, lengths) Determines the moving average of an array. The ith element in the result will be the average of the ith element and the preceding N-1 elements, where N is the ith element of lengths. If lengths is a scalar, N is always equal to lengths. StatMovMax(data, lengths) Determines the moving maximum of an array. StatMovMin(data, lengths) Determines the moving minimum of an array. StatMovTot(data, lengths) Determines the moving total of an array. Date Functions Parity includes several date functions which can be used with the predefined variables DATES and FDATES to indicate which day of the week, month or year it is, as well as which month or year. These functions might be used with the Profit Tester to evaluate seasonal cycles, for example whether Mondays are typically down days or the January effect. You must always include the DATES or FDATES variable in the functions in place of the datevar parameter. DayOfWeek(datevar) Returns an array indicating which day of the week each period falls on. Monday is 1, Tuesday is 2 and so on. DayOfMonth(datevar) Returns an array indicating the day within the month each period falls on. December 17, 1992 would be 17. DayOfYear(datevar) Returns an array indicating the day within the year each period falls on. February 3, 1992 would be 34. MonthNumber(datevar) Returns an array indicating the month within the year each period falls on. June 20, 1992 would be 6. YearNumber(datevar) Returns an array indicating the number of the year. July 4, 1992 would be 1992. StrToDate(stringvalue) Converts a scalar string value to a date value. Acceptable string formats are "YYMMDD", "M/D/Y" or "D-MMM-Y", i.e. "920522" or "5/22/92" or "22-MAY-92". The string value must be in quotes, i.e. StrToDate("5/22/92"). The date functions might be used in a profit test, for example, if you wanted to test the year end effect you might use formulas like: F1: MonthNumber(Dates) = 12 F2: DayOfYear(Dates) >= 15 AND NOT F1 BuyWhen: F1 LongStop: F2 This would buy in December and sell the long position after January 15th. If you wanted to use a specific date you would have to use the StrToDate function. You could substitute: F2: Dates = StrToDate("1/15/92") for F2 above. However this would only work for one day in one year, whereas the first expression is more general. Pattern Recognition Functions The recognition of complex patterns like stock charts is one of the most difficult problems in artificial intelligence. However, Parity does include a set of functions that recognize gross features like local tops and bottoms. These functions help construct Profit Tests and Scans and can also be used to create binary charts (we suggest using the "bars" line type) or with the ChartVertLine() procedure. The Pattern Recognition Functions use logical operators to compare arrays of data. They return an array of 1's and 0's to indicate when the expression is "true" or "false". For example, when Top7Bars() detects a local high it returns a 1 otherwise it returns a 0. The functions do not return a 1 when the feature occurred but when it was possible to detect it. So for Top7Bars() which is looking at a "window" of 7 days of data the peak cannot be recognized until 3 days after it occurred. The custom formula for each of the Pattern Recognition Functions is shown below. You can modify these custom formulas in your own profit tests to create more or less rigorous conditions for your feature detection. Bottom3Bars(d) d > d[-1] AND d[-1] <= d[-2] Top3Bars(d) d < d[-1] AND d[-1] >= d[-2] Bottom5Bars(d) d >= d[-1] AND d[-1] > d[-2] AND d[-2] <= d[-3] AND d[-3] < d[- 4] Top5Bars(d) d <= d[-1] AND d[-1] < d[-2] AND d[-2] >= d[-3] AND d[-3] > d[- 4] Bottom7Bars(d) d >= d[-1] AND d[-1] >= d[-2] AND d[-2] > d[-3] AND d[-3] <= d[- 4] AND d[-4] <= d[-5] AND d[-5] < d[-6] Top7Bars(d) d <= d[-1] AND d[-1] <= d[-2] AND d[-2] < d[-3] AND d[-3] >= d[- 4] AND d[-4] >= d[-5] AND d[-5] > d[-6] CrossAbove(d1, d2) d1 > d2 AND d1[-1] <= d2[-1] CrossBelow(d1, d2) d1 < d2 AND d1[-1] >= d2[-1] ForLoop Function Parity's ForLoop() function is a unique and extremely powerful function which lets you "embed" a FOR loop in any algebraic expression or formula. The syntax for the ForLoop function is somewhat complicated and its correct use requires some background in computer programing. If you expect to make extensive use of the ForLoop function you might want to purchase CA-Realizer 2.0 from Computer Associates. CA-Realizer is an excellent development system and BASIC derived language for Windows and OS/2. Parity uses the CA- Realizer syntax for most of its formulas and CA-Realizer provides complete documentation on the syntax and types of commands that can be used in the ForLoop() function. Syntax The syntax for the ForLoop function is complicated and includes a number of optional parameters and modifiers which are enclosed in brackets. as shown below: rv = ForLoop(asExpr, rsFromVal [,rsToVal [,rsStepVal]] [; [asInitExpr], [rsProc?] ]) Description The ForLoop function executes a code fragement with the following structure: EXECUTE asInitExpr SELECT CASE rsProc? CASE 0 FOR x = rsFromVal TO rsToVal STEP rsStepVal EXECUTE "RV[x] = " + asExpr NEXT x CASE 1 FOR x = rsFromVal TO rsToVal STEP rsStepVal EXECUTE asExpr NEXT x END SELECT The function returns the value of RV if it exists, otherwise it returns C*0. The EXECUTE command shown above means that the ASCII string contained in asExpr or asInitExpr is run or executed as if it were part of the program statement. Parameter Description asExpr The ASCII string expression which will be executed in the FOR loop. This statement must be enclosed in quotes, i.e. "RV[x-1]*0.8 + C*0.2". If the rsProc? modifier is 0 or omitted then ForLoop will assign the result of asExpr to the RV[x] variable as shown for the CASE 0 above. The rsProc? modifier must match the structure of asExpr or an error will occur. asExpr may contain a multiple line statement. Each line must be separated by the "|" character which Parity replaces with a carriage return when ForLoop() is run. For example: "tvar1 = StatRegress(C[x - 8: x]) | tvar2[x] = tvar1[x]" is the central formula for MovLinReg(C, 9,) where tvar2 would contain the result. Note that most, though not all multiple line statements would require setting rsProc? to 1. Note that the asExpr shown above would create two new global variables, tvar1 and tvar2 which could be used in subsequent formulas. We strongly suggest that any intermediate variables be uniquely named to avoid conflicting with Parity's internal variables. rsFromVal This parameter is required and must contain the starting point for the FOR loop. Typical values will be 1, 2, or StartValid(array). rsToVal This parameter is optional and would contain the ending point for the FOR loop. In most cases rsToVal would have to take the form of EndValid(array) in order to avoid an error. If rsToVal isn't provided Parity uses EndValid(C). rsStepVal This parameter is optional and would contain the step increment for the FOR loop. If you use rsStepVal you must also use rsToVal. By default, Parity uses a step value of 1. Modifier Description asInitExpr This ASCII string expression will be executed BEFORE the FOR loop. This statement must be enclosed in quotes, i.e. "RV[1] = C[1]". asInitExpr is usually used to initialize the first value of the RV variable when asExpr contains something like "RV[x-1] ..." . asInitExpr is optional. rsProc? The optional rsProc? modifier determines whether the body of the FOR loop contains: EXECUTE "RV[x] = " + asExpr when rsProc? is 0 or EXECUTE asExpr when rsProc? is 1. If no value for rsProc? is supplied Parity will use 0. Note that these optional modifiers must be seperated from the parameters with a semicolon. Examples The following statements are all equivalent to MOV(C, 9, E). Note that the first element of RV must be intialized with "RV[1]=C[1]". ForLoop( "RV[x-1] * .8 + C[x] * .2", 2; "RV[1] = C[1]" ) ForLoop( "RV[x-1] * .8 + C[x] * .2", 2, EndValid(C); "RV[1] = C[1]" ) ForLoop( "RV[x-1] * .8 + C[x] * .2", 2, EndValid(C), 1; "RV[1] = C[1]" ) ForLoop( "RV[x-1] * .8 + C[x] * .2", 2, EndValid(C), 1; "RV[1] = C[1]", 0 ) ForLoop( "RV[x] = RV[x-1] * .8 + C[x] * 0.2", 2; "RV[1] = C[1]", 1 ) ForLoop( "RV[x] = RV[x-1] * .8 + C[x] * 0.2", 2, EndValid(C); "RV[1] = C[1]", 1 ) ForLoop( "RV[x] = RV[x-1] * .8 + C[x] * 0.2", 2, EndValid(C), 1; "RV[1] = C[1]", 1 ) ForLoop( "RV[x] = RV[x-1] * .8 + C[x] * 0.2", 2, EndValid(C), 1; "RV[1] = C[1]", 1 ) The following statement is equivalent to LinRegSlope(C, 9, %) ForLoop("tv1=StatRegress(C[x-8:x])|rv[x]=((tv1[x]-tv1[x-1])/tv1[x- 1])*100",9;1) The following statement is equivalent to MovLinReg(C, 9) ForLoop("tvar1 = StatRegress(C[x - 8: x]) | RV[x] = tvar1[x]", 9;1) Part 7 File Formats Supported Parity directly supports 5 and 7 field MetaStock (and most CompuTrac) data files, 7 field ChartPro/MegaTech data files, a variety of Comma Separated Value ASCII file formats, and the TeleChart 2000 file format. You can also import data from Excel spreadsheets (3.0 or 2.1 formats but not 4.0), Lotus 123 WKS spreadsheets (but not the WRK, WK1 or WK3 formats), and a variety of tab and comma delimited formats (see Import Other Formats for more details). Also Parity Plus includes a very flexible Data Conversion utility that can convert to and from all of the above formats. Which format you should use to store your data will depend largely on how you acquire, maintain, and use your data files. For example, the MetaStock format is widely supported by most dedicated data vendors and many software packages however it is bulky and very difficult to use with a program that doesn't support it. The ChartPro format is not widely supported but it is concise, quick loading and easy to program for. The Comma Separated format can be maintained with any text editor and most spreadsheets can import and export it without any trouble. The TeleChart 2000 format is only supported by the Worden Brothers but they are a convenient and inexpensive source of historical data for stocks and mutual funds. The MetaStock/CompuTrac Format The MetaStock/CompuTrac format dates from the late 1970's and is widely supported by most data vendors. Its prevalence and the fact that it incorporates information on the name, symbol, period, and date range are its primary advantages. However the MetaStock/CompuTrac format also has a number of disadvantages. The files use the antiquated Microsoft Binary Format to store numbers and the data must be converted to IEEE floating point format. This makes MetaStock files slower to load. You can only have 255 MetaStock data files in a single directory. For historical reasons the MetaStock format requires a second F*.DOP file. Although this file is only about 65 bytes in actual size most disk drive formats can only allocate space to a file in 4096 byte chunks. Consequently, 255 data files take up about 1 MB of extra disk space for no reason. Parity supports 5 and 7 field MetaStock data files. The program does not support MetaStock composite securities which are ignored. The MetaStock file format is a subset of the original CompuTrac file format. Most standard 5 and 7 field CompuTrac files should work with Parity. The 6 field CompuTrac format is not supported. A detailed specification of the MetaStock file format is beyond the scope of this documentation and the full specification for all the variations of the CompuTrac format is even more complicated. Very briefly the format requires a file called MASTER which contains the information on the security's name and symbol etc. The actual price data is stored in files named F*.DAT. These F*.DAT files will be numbered from 1 to 255. The file format only permits a maximum of 255 data files in a single directory. The file format also calls for a corresponding F*.DOP file for each F*.DAT file. Parity does not require the F*.DOP files but other programs using this file format may. ChartPro File Format The ChartPro format was created by the developer of the ChartPro and MegaTech charting programs. Although this file format isn't widely supported by dedicated data vendors, there are a number of shareware and quasi commercial programs available which can create and update these files from daily quotes downloaded from general information services like Prodigy, GEnie, and Dow Jones News/Retrieval. The most popular of these programs appear to be PTT, StockWatch 7.0, Pro$tock, and PDL. The author's of all of these programs offer support on the Money Talk BBS of the Prodigy service. For users that are interested in developing programs to create or maintain price data files themselves the ChartPro/MegaTech file format is a good choice. Although the current ChartPro format doesn't include as much information about the underlying security as the MetaStock format it is much simpler and ChartPro files are processed more quickly by Parity. ChartPro format files consist of daily records that are each 26 bytes long. The first two bytes are an integer value representing the date. The next 24 bytes are 6 four-byte single precision IEEE floating point fields for the open, high, low, close, volume and open interest in that order. The first 2 records or 52 bytes are ignored by Parity for compatibility with future versions of MegaTech. The date numbering of ChartPro files is somewhat unusual. ChartPro assigns a value of 1 to January 1, 1983. Add 1 for each subsequent day including weekends and leap years. For periods prior to 1983 use negative numbers subtracting 1 for each day of the year. In order to be recognized by Parity, ChartPro format files must end with the .PR? extension. Generally the first 8 letters of the file name are the security's symbol. Comma Separated ASCII Files Parity directly supports a variety of different types of comma separated or delimited ASCII text files. The advantages of this format are that is can be imported or exported by almost every spreadsheet and database program on the market and it is easily maintained using any text editor. The primary disadvantage of this format is that text files are a fairly bulky way of storing numeric information. Parity supports comma delimited files in the following formats: date,close date,close,volume date,high,low,close date,high,low,close,volume date,open,high,low,close,volume date,open,high,low,close,volume,open interest Parity expects dates to be formatted as MM/DD/YY (leading zeros are optional) or YYMMDD. The dates must not be enclosed in quotes. For example 5/21/92 will be correctly imported while "5/21/92" will cause an error. The price data must be in integer or decimal format. For example 35 or 35.5 will work but 35 1/2 will not. Each line of the text file represents a single date or record and each line must end with a carriage return or carriage return and line feed. The fields must be in the format and order shown above, and each field is separated by a comma. Leading spaces are ignored. The file must not contain any headers or extraneous text. Parity automatically detects the number of fields in the file by counting the number of commas in the first line of the file. If the first line of the file is longer than 70 bytes or contains the incorrect number of characters Parity will be unable to load the file. Parity will automatically create the appropriate high, low, and volume data arrays for files with less than 5 fields. These arrays will be filled with zeros. Similarly, a 6 field file will cause Parity to create an openinterest data array filled with zeros. If Parity doesn't recognize the data in a field as a number it will set that data element to zero. Parity permits comma separated ASCII files to have any name or extension. We suggest you use a standard convention when you name your files. Because Parity can only load 8100 data records and ASCII files have no set record length, Parity will not load ASCII files that are larger than 250 KB. You can use Parity Plus' Data Conversion command to convert a number of other ASCII formats to standard comma delimited ASCII files or any of Parity's other supported file types. TeleChart 2000 Files The TeleChart 2000 file format is a quasi-proprietary format used by the Worden Brothers data service. TeleChart 2000 is the DOS based downloading and charting software sold by Worden Brothers, Inc. While TeleChart 2000 is a rudimentary charting program it is quite a good downloading program for accessing the relatively inexpensive historical data base of stocks and mutual funds which the Worden Brothers maintain. Price data is available for $0.005 or less per day with a $0.69 minimum per call and 300 days per new security. The data base includes up to 9 years of historical data on stocks and includes opening prices for the last couple of years. TeleChart 2000 normally maintains its data files in 26 directories, e.g. C:\TC2000\DATA\A through C:\TC2000\DATA\Z. Data files are named with the symbol of the stock and the NDX extension, e.g. AAPL.NDX. Parity requires TeleChart 2000 files to have an NDX extension but doesn't care what directory they are located in. Starting with Version 2.1 of TeleChart 2000, the Worden Brothers began including proprietary header information in the second record of the data file. The first record contains the company name. Consequently Parity begins loading data from the third record. This proprietary header information may interfere with your ability to use Parity Plus to maintain TeleChart 2000 files or convert other data formats to the TeleChart 2000 format if you are using version 2.1 or later of their software. We will not provide any technical support for the use of the TeleChart 2000 program or data format and we suggest you direct any questions or complaints directly to the Worden Brothers: Worden Brothers, Inc. 4905 Pine Cone Drive, Suites 10-12 Durham, NC 27707 (800) 776-4940 Part 9 Odds and Ends The odds and ends section includes information on printing, some known problems with Parity and optimizing the program for speed. Printing Charts There are three ways you can print a chart. 1 Use File Print to print the chart if it is the current window. A window is current when the title bar of the window is blue. This will print the chart as it is displayed. If the chart's window is small then it will print a smaller chart than if the window is large. A chart that has been maximized may not fit within the margins of your printer. File Print provides the least control over how the chart is printed. 2 Use the Print Tool . When you select the Print Tool from the Tool Bar a dialog box will pop up which offers you a range of choices as to how the charts you click on should be printed. The Print Tool lets you specify either the number of charts Parity will print on a page or the size of a single chart on the page. To print a chart just click anywhere within the chart while the Print Tool is active. If you are printing more than one chart per page Parity won't eject the page until all the charts are printed unless you click on the "Flush" button. Parity also gives you the option of including or excluding the title bar of the chart window as the header for the print out. You would probably choose not to print the title bar as the header if you had selected the Chart Titles at Top format from the Options Editor. By default, Parity will not print the background color of a chart. If you are using a color printer and would like to include the background color simply check the "Print Background Color" option. 3 Check the "Print Each Chart" option in the Select a Group dialog. This prints a chart each time it is created. The chart will be printed using the same settings as the Print Tool. You can use this feature with the Fast Forward tool to print all the stocks in a group. Use File Printer Setup or the Printer Setup button on the Printer Tool dialog to select the device to print to and adjust the orientation of the page. Printing Caveats Windows prints slowly. Graphics print very slowly. Unfortunately there is nothing we can do to improve Window's printing speeds. However, Windows 3.1 prints much faster than Windows 3.0. How charts print depends on the printer driver you use. The Hewlett Packard LaserJet drivers do a very poor job of translating colors. For example, the LaserJet prints prints certain colors of some High, Low Close bars as a dashed rather than a solid line. For the best results, we recommend you only use black in charts you will be printing on a LaserJet. Postscript printers try to show colors with shading and the results are usually less than satisfactory. The Epson printer driver is exceptional. Printing is fast and the printed graph is very accurate. If you have a Laser Printer you may run into problems with inadequate memory to print full page charts. We are unable to print charts full page using a LaserJet II with only 512 KB. With 1.5 MB, the LaserJet II prints fine. The standard 1 MB of memory in the LaserJet III is right on the border. Some charts will print, others won't. This is a limitation of the printer, not Parity. If you are using a high resolution printer you may find that candlestick charts print the candles too thinly. You can use the Chart Preferences command in the Options menu to increase the thickness of the candlesticks. The Data Microscope The Data Microsope tool lets you examine the price and indicator data for any open chart. After you select the Data Microscope tool, click on a chart and the following form will appear: The Data Microscope displays three days of data centered around the date where you clicked on the chart. Price data and the values for many of the indicators that are plotted will be displayed. Parity will draw a dashed cyan line on the chart to indicate the middle day displayed. To show data for a different date move the slide on the horizontal scroll bar. You can also use the Print button on the Data Microscope to send the chart data to the printer. You can select the range of records you want printed as well as the type of data. The Data Microscope also lets you "export" the chart data to a variety of file formats including Excel, Lotus, and Tab Separated ASCII files. Windows 3.0 System Resources The following discussion of System Resources refers specifically to Windows 3.0. Windows 3.1 usually doubles or triples the System Resources that are available. We strongly recommend that you upgrade to Windows 3.1. System Resources or Program Resources refers to a 64K byte segment of memory where Windows maintains the USER and GDI heaps which include information on all the Windows applications that are currently running. Regardless of the amount of memory you have installed, Windows still includes this 64K constraint on the total System Resources that are available to ALL the Windows applications that are running. Every window, icon, menu, bit map, and chart etc. consumes some percentage of these System Resources. Selecting the Help About command from the Program Manager will tell you what percentage of System Resources is available at any given time. Note that running the Program Manager or the Norton Desktop Utilities often consume as much as 40% of total System Resources. Deleting unused icons and program groups will free up these resources. Because of the complexity of some of its dialog boxes Parity is also a resource hog. With no charts displayed, but using the Create/Modify Studies dialog, Parity consumes 30% of the System Resources. Each chart Parity displays typically requires an additional 1.5-2% of these System Resources. Generally, you encounter a problem with System Resources when a large number of charts are displayed and you then open the Create/Modify Studies dialog box. You may also have a problem if you try to have multiple Windows applications open at one time. Unfortunately, Windows doesn't provide any particular error message for no more resources. You will simply be unable to open a dialog box or create a chart. The more you try the worse it gets since partially created charts and dialog boxes will continue to take up more and more memory. We suggest you save all your studies, groups, batches and clusters and restart Parity. On occasion, System Resources will be so low that Windows, and therefore Parity, will start to crash. If this happens you may need to do a CTRL-ALT-F2, which will wipe all of Parity's charts and variables from memory. If you do this you will lose any unsaved studies, groups and clusters and you will need to restart Parity. System Requirements and Execution Speed Minimum System Requirements Parity requires Windows 3.x set in VGA or higher display mode, running on an 80286/80386/80486 IBM compatible computer with at least 4 MB of extended memory and 1.5 MB of free disk space. Parity will perform best on a 80486 DX or a 33 MHz 80386 DX computer equipped with a math coprocessor and 8 MB of memory. Parity takes full advantage of high resolution displays and 17 or 20 inch monitors. Parity is compatible with OS/2 2.0 when it is run as a Windows application. Maximizing Execution Speed While every effort has been made to optimize Parity's execution speed there are inevitably two factors that make it (and every other Windows application) slow compared to their DOS equivalents. The first is the processing overhead required by Windows' multitasking operating system. Secondly, Parity is graphically processor intensive. This also consumes significant CPU cycles. Finally, Parity performs calculations on large data arrays. Each time you create a chart is equivalent to recalculating a large spreadsheet filled with formulas. What to do? The first thing is that Parity is not intended to run on 80286 or 16 MHz 80386 computers. If that is your hardware configuration nothing we suggest is likely to make Parity perform adequately. If you do have adequate hardware and would like Parity to perform faster here are a few suggestions in order of their importance. 1 Upgrade to Windows 3.1 if you are using Windows 3.0. Windows 3.1 runs Parity noticeably faster and provides faster printing and greater System Resources. 2 Install a Math Coprocessor. 3 Make sure you have at least 4 MB of available memory on your computer, i.e. memory not devoted to disk caches etc. Studies have shown that 8 MB is the optimal memory configuration for Windows 3.x from a speed standpoint. 4 If screen redraws are a problem buy a new graphics card with an accelerator or coprocessor chip optimized for Windows. These cards cost $200 to $500 and have display resolutions up to 1280x1024 pixels. 5 Upgrade your motherboard. 6 The best enhancement we ever made to our computers was to go to 17" flat screen 1024x768 non-interlaced monitors. This won't enhance the speed of Parity at all but we guarantee you will find a whole new pleasure in running any Windows program. Additional Factors The XOPointFigure() and DBarPointFigure() procedures and the SAR() and ZIG() functions have not been optimized for speed in the 1.5 Version of Parity. They will be optimized in a future release. Problems and Solutions Although Parity is as bug free as possible, there are a few things that may cause problems. In particular, Parity performs no error checking on the formulas in a study before it attempts to chart a study. This causes two problems if you make an error in a formula. The Hour Glass Cursor If a study has an invalid formula, Parity gives an error message when it attempts to chart the study. In most cases, Parity will not have reset the Hour Glass Cursor for the mouse. When the Hour Glass Cursor is set, all commands and mouse clicks are disabled. To reset the cursor hit the up arrow key on your keyboard. Incomplete Charts and System Resources When Parity encounters an error in a study, it has already begun constructing a chart, but is stopped before the chart can be displayed. It is not possible to close this chart and free up the System Resources it consumes. Since each chart only consumes 1.5-2% of the System Resources this isn't a problem in and of itself. However, if you have created a large number of partial undisplayed charts, you may find your self running out of resources. The only solution is to exit Parity (and possibly Windows) and restart. Remember to save any studies, groups, clusters and batches you may have created or modified. Incompatability with ATI Graphics Ultra Video Cards Parity Plus 1.5 may be somewhat incompatable with the drivers supplied with the ATI Graphics Ultra video cards. Use the older ATI video drivers or the video drivers supplied with Windows 3.1 instead. Other Problems If you attempt to display a cluster created for a higher resolution display the effects will be unpredictable. In many cases the Tool Bar will be locked onto a new screen position. This can also happen if you move a chart partially off the "desktop" and then use the scroll bars to view it and the perform a Window Cascade or Tile command. In either case you should simply recreate the tool bar using the commands on the Options Menu. Also, note that a maximized chart is restored to its previous size when you open a dialog box or display another chart. If the Tool Bar is hidden behind a maximized chart, use the Window Menu to select the "TBar" window. Appendix Data Vendors Version 1.5 of Parity does not include any utilities for collecting price data or automatically updating data files. If you are upgrading to Parity from another technical analysis program you should continue to use whatever data collection and file maintenance utilities you are comfortable with. If your price data is not in the MetaStock/CompuTrac, ChartPro/MegaTech, comma delimited ASCII, or TeleChart 2000 formats Parity supports please contact us. If you are able to provide sufficient information on the file format you are currently using we may choose to include file compatibility with your data format in a future version of Parity. If you do not own any utilities for collecting and updating your price data you have several alternatives. You can manually update your data files using the File and Data Maintenance commands. You can manually maintain price data files in Excel, Lotus 123 WKS, comma separated value (CSV) or tab separated value text files and use Parity's Import Other Formats command to chart the data in these files. However, you will not be able to include these files in a Group and using Parity will generally be more cumbersome than if your data is in one of the supported formats. Or you can use the Data Conversion command to convert these files to a format Parity supports. A number of third party utilities exist which can create or maintain price data files in MetaStock or ChartPro formats. One of the best general purpose tools is the Personal Ticker Tape (PTT). PTT is a shareware program which can convert ASCII text files into MetaStock data files. PTT can download data automatically from CompuServe and GEnie and can also update and maintain your data files from data downloaded manually from on-line services like CompuServe, GEnie, Prodigy, and Dow Jones News/Retrieval. PTT will also automatically update data files from an ASCII file that is in the format expected by the MSU utility provided with MetaStock. The latest version of PTT can be downloaded from the FlexSoft BBS at (510) 829-2293. ParTech Software Systems will also provide PTT on a diskette for a $5 shipping and handling fee. We cannot provide any support for using PTT. Another excellent program for downloading current prices from Prodigy is Stock Watch 7. You can obtain more information on Stock Watch 7 by reading the various topics on the program on Prodigy's Money Talk BB in the Investment Tools section. Most of the Price Data Vendors listed below also offer software which can be used to access their data service and download price data into MetaStock data files. Each vendor's service is different and we suggest you contact them directly for information on the capabilities and current pricing of there products. EQUIS International, sells The Downloader program which automatically dials a number of different data services and downloads and formats the data into MetaStock data files. You can call EQUIS at 1-800-882- 3040. Recomendations While we are loathe to take responsibility for recommending any particular data services or software we have had personal experience with the following data vendors and feel that one or more of them would meet most investors needs. Worden Brothers, Inc. is a low cost, easy to use source of historical data on U.S. Stocks and Mutual Funds. Note that Worden Brothers' business practices have been the subject of some negative commentary on Prodigy. Worden Brothers is the developer of the TeleChart 2000 program. Stock Data Corp. is a very inexpensive source of data for investors that want to get price data for all the securities on the NYSE, AMEX, and NASDAQ. Their data is often dirty and the software is arcane but the price can't be beat and we have found the company to be fairly responsive. Commodity Systems, Inc. (CSI) is a very reliable source of data on the Futures markets and international equities. Their QuickTrieve downloading software badly needs an overhaul to bring it into the 1990's but it is very functional and permits you to convert their data files to the MetaStock format. General Information Services CompuServe, Inc. P.O. Box 20212 5000 Arlington Centre Blvd. Columbus, OH 43220 (800) 848-8199 (614) 457-8650 GEnie 401 North Washington Street Rockville, MD 20850 (800) 638-9636 Current quotes only. Prodigy Service Company P.O. Box 791 White Plains, NY 10601 (800) 284-5933 Current quotes only. Dow Jones News/Retrieval P.O. Box 300 Princeton, NJ 08543 (609) 452-1511 Price Data Vendors Commodity Systems, Inc. (CSI) 200 W. Palmetto Park Road Boca Raton, FL 33432 (800) 327-0715 (407) 392-8663 Commodity and stock data. Relatively expensive but comprehensive and high quality. Includes downloading software. Dial/Data 95 Rockwell Place Brooklyn, NY 11217 (718) 522-6886 24 hour flat rate unlimited access pricing plans. Stock Data Corp. 905 Bywater Road Annapolis, MD 21401 (410) 280-5533 Only Stock Data. Weekly diskette or daily updating for the entire stock market. Supports MetaStock and other formats. Technical Tools 334 State Street, Suite 201 Los Altos, CA 94022 (800) 231-8005 (415) 948-6124 Commodity and stock data. Tick Data, Inc. 720 Kipling Street, Suite 115 Lakewood, CO 80215 (800) 822-8425 (303) 232-3701 Mostly commodity data. Data Base includes tick data for every trade. Worden Brothers, Inc. 4905 Pine Cone Drive, # 10-12 Durham, NC 27707 (800) 776-4940 Relatively inexpensive but only offer data on U.S. Stocks and Mutual Funds. Other Resources An excellent source of information on technical analysis is the magazine, Technical Analysis of Stocks & Commodities. TASC can be difficult to find on a newsstand but you can get a sample copy by calling 1-(800) 832-4642. The Traders Press offers a comprehensive catalog of books on the Stock Market and Technical Analysis. You can reach them at 1-(800) 927-8222 or at 1-(803) 298-0222. The Market Technicians Association BBS is an excellent source of advanced technical analysis information and discussion. Log on at 1- (914) 478-7311. Other sources of free data include the Free Financial Network, call 1-(212) 752-8660 to log on, and Bob Harriman's BBS, call 1-(305) 749-8271 to log on.Other good on-line sources for information and discussion on investing include the INVFORUM on CompuServe and the Money Talk BB on Prodigy.