Parity Technical Analysis System Version 1.3 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 and The Display Matrix are trademarks of ParTech Software Systems. IBM is a registered trademark of International Business Machines, Inc. Lotus and 1-2-3 are registered trademarks of Lotus Development Corporation. Microsoft is a registered trademark and Windows is a trademark of Microsoft Corporation. MetaStock, The Technician, and The Downloader are trademarks of EQUIS International. CompuTrac is a trademark of Compu Trac Software 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 1 What Is Parity? 2 Parity and Shareware 2 About Parity Plus 3 Installing Parity 3 Price Data 6 Part 2 Basic Concepts 7 Charts 7 Groups 7 Studies 8 Batches 9 Clusters 9 The Display Matrix„ 10 Part 3 The Tool Bar 13 The Tool Bar 13 Moveable Versus Fixed Tool Bar 13 Action Tools 13 Display Tools 14 Menu Shortcut Tools 15 Window Management Tools 15 Part 4 Menu Commands 17 File Menu 17 Edit Menu 17 Groups Menu 18 Load a Security 18 Create or Modify Group 20 Select a Group 21 Reorder a Group 23 Save All Groups 23 Delete Groups 23 Display Group or Security 24 Import Other Formats 24 Studies Menu 27 Study Commands 27 Batch Commands 27 Create/Modify Current Study 28 Formula Editor 29 Pane Layout Editor 31 Color Editor 33 Options Editor 33 Select a Study 35 Save All Studies 35 Delete Study 35 Display Current Study 35 Batch Studies 36 Select a Batch 36 Reorder Batch 36 Save All Batches 37 Delete Batch 37 Clusters Menu 37 Make a Cluster 38 Select a Cluster 38 Save All Clusters 38 Delete Cluster 39 Display Current Cluster 39 Pointer Menu 39 Options Menu 40 Window Menu 41 Help Menu 42 Part 5 Indicators & Chart Procedures 43 Technical Indicators 43 List of Predefined Technical Indicators 44 Bibliography of Technical Analysis Texts 46 MetaStock Function Compatibility 46 Procedures vs. Functions 47 Chart Procedures 48 Point and Figure Charts 49 The Point and Figure Procedures 50 Adding Lines to a Chart 52 Part 6 Formulas, Operators & Functions 57 Formulas 57 Arrays versus Scalars 58 Predefined Variables 60 Operators, Parenthesis and Mathematical Precedence 62 Arithmetic Operators 62 Comparison Operators 62 Logical Operators 63 Trigonometric Functions 63 Exponential Functions 64 Rounding Functions 64 Array Related Functions 64 Statistical Functions 65 Part 7 File Formats Supported 67 The MetaStock/CompuTrac Format 67 ChartPro File Format 68 Comma Separated ASCII Files 68 Part 8 Odds and Ends 71 Printing Charts 71 Windows 3.0 System Resources 72 System Requirements and Execution Speed 73 Problems and Solutions 74 The Hour Glass Cursor 74 Incomplete Charts and System Resources 75 Appendix 77 Data Vendors 77 Other Resources 78 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. Despite their titles 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 three data file formats that Parity supports directly and provides some tips about the merits of each. Part 8, Odds and Ends, includes some general comments about Parity and Windows 3.0 and the idiosyncrasies of both. 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 40 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 has no intrinsic limit on the number of charts you can create, although Windows' limited System Resources restrict the number of charts that can be displayed at one time. 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. 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 any copies of this manual. Under no circumstances may you give a copy of the REGISTER.DAT file to any other user. 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. 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. Installing Parity The complete Parity program consists of several types of files which are listed in the PACKING.LST file included with the program. Initial Installation If you are installing Parity from compressed ZIP files which you have downloaded or purchased from a disk vendor: 1 Copy the *.ZIP files to a directory on your hard disk. Unzip the files using PKUNZIP or ARCE or LHA depending on the compression used. Do not copy the files to the \Parity directory since this is normally where you will want the program installed to. 2 Start Windows. From the Program Manager Click on the File Menu and select Run. Type in the drive and directory where you unzipped the files followed by INSTALL.EXE, i.e., C:\TEMP\INSTALL.EXE. 3 Parity will automatically install itself. 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. YOU MAY NOT INSTALL PARITY TO THE SAME DIRECTORY AS THE UNZIPPED FILES YOU ARE INSTALLING. If you are installing Parity from uncompressed files on a single high density floppy diskette: 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. 3 Parity will automatically install itself. 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. If you are installing the registered version of Parity also copy the REGISTER.DAT file to your Parity directory by clicking ont the Copy REGISTER.DAT check box. The Installation Program will not do this automatically unless you click on the check box. Parity's installation routine will automatically 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. Always check for a READ_1ST.TXT file with more up-to-date installation instructions. Price Data Parity is compatible with 5 or 7 field MetaStock/CompuTrac data files, ChartPro/MegaTech data files, and Comma Separated ASCII 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 Value text files and Tab Separated Value 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 does not include any utilities for downloading or maintaining price data files. The Parity Plus version of the program does include data and file maintenance utilities, as well as an excellent data conversion command. A number of commercial and shareware programs permit you to download and automatically update your data files. An excellent program for updating MetaStock or ChartPro data files from ASCII text files of price data 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. 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. 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, Chaiken'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 layout. 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. 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 Tool Bar can be set to be moveable with the Moveable Tool Bar command on the Options Menu. 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 or click on the Pointer Tool. The Pointer Menu includes a selection of some less frequently used action tools. Tool Description Print Tool Prints selected chart. 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. See Printing Charts. Trash Can Tool Closes selected chart or all 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. Pointer Tool Resets other action tools and goes to a neutral pointer mode. Text Tool Used to draw text on a 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. - 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. Display Matrix Tool Shows a graphical depiction of the Display Matrix and the Current Chart's position in it. By clicking on the grid of the Display Matrix or selecting from the drop down list boxes you can reposition yourself anywhere within the Display Matrix. 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 the current 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 most commonly used 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. 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. 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. 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: Open a File for Charting 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 three different data file formats, 5 or 7 field MetaStock/CompuTrac files, 7 field ChartPro/MegaTech files, and Comma Separated ASCII files. You can select which file format to use by clicking on the appropriate radio button. 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. The range of records to load can be specified in two ways: 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 whenver 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. 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. 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. 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. 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. # 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 Graph This prints each chart when it is displayed. 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. OK Sets the display and data range options you selected and loads the first security in the group. This will overwrite the group or security that was previously selected. 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. 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. O.K. Button Resets the securities list and display sequence of the group to be identical to the Reordered Group list. 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. 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 specificly. 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. Parity Plus includes a data conversion utility that lets you convert a very wide range of file formats to and from the MetaStock, ChartPro and Comma Delimited ASCII data files Parity supports directly. 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. Importing price data is like the Load a Security command but without the ability to select a data range. 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. Batch Commands 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 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. 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 even lets you include a chart of the first security in a group on the same chart as the current security. 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. 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 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. 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 13. Although you can't plot in panes 12 or 13 these settings can be useful to quickly change the display sequence. For example, if you prefer to show the price and volume panes at the bottom of the chart, simply set their Pane To Overlay settings to 12 and 13 respectively. 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. O.K. Button This temporarily stores any changes you have made in the Pane Layout Editor and returns you to the Formula Editor. Your changes won't be saved unless you select O.K. or Save As from the Formula Editor. 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. 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 created, either manually or automatically, 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. 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. 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. To display the study using the current security use the Display Current Study command or click on one of the display options on the Tool Bar. 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. 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. 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. 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. Command Description Make a Cluster Creates a cluster using the current screen display. A cluster contains information on the size, location, and underlying study of every "named" chart that is currently displayed. The underlying security is irrelevant to the definition of a cluster. Select a Cluster Selects the cluster to display from any of the clusters you have previously defined. Save All Clusters Saves the definition of ALL the clusters to the CLUSTERS.DAT file. Once saved, these definitions are automatically loaded when you start Parity. Delete Cluster Removes the definition of one or more clusters from memory. This change isn't permanent unless you Save All Clusters. Display Current Cluster Displays the current cluster charted on the current security. If no security or group has been selected you will get an error message. 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 All Lines Erases all the lines drawn on the chart except lines drawn with ChartHorizLine(). 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. 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 and 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. Command Description Default Study 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 new "DEFAULT" study use the Create/Modify Current Study editors to define all of the settings for the current study as you want them to appear 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 Permits you to save settings which affect the colors and sizes used to display various Chart Procedures, Action Tools, and the chart size itself. The various settings should be self explanatory. You can enable your preference settings for the current Parity session only, or you can save them to the CHRTPREF.DAT file which is automatically loaded when Parity starts. To return to Parity's standard chart settings delete the CHRTPREF.DAT file from your disk. Directory and File 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. 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. Fixed Tool Bar Will recreate the Tool Bar as a fixed windows of fixed size. 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 either the Moveable Tool Bar or the Fixed Tool Bar commands. 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. 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 provides a full set of trigonometric functions which can be used to generate any sort of cycle and many of the same drawing tools used for chart reading will also be useful for wave analysis. The retail version of the program, Parity Plus, includes special tools to draw and position two sets of independent cycle lines on any of your charts. Technical Indicators Parity includes over 40 of the most popular indicators for the technical analysis of stocks and commodities. These 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. A full description of the derivation and interpretation of these indicators is included in the manuals for the registered versions of Parity and Parity Plus. Please see the Bibliography which follows for a list of books which discuss these indicators in detail. 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. The quotes are required. r Express the result of the indicator in points or percentages. Must be "$" for points or "%" for percentages. The quotes are required 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 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 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. 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 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. 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. 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. 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. MetaStock Function Compatibility Parity supports virtually all of the indicators and functions provided with MetaStock 3.0, 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.3. Options & Commodities None of MetaStock's options or commodities related functions are supported in Parity 1.0. These include the option functions delta(), gamma(), life(), option(), theta(), and vega(). The commodity related functions are aswing(), csi(), hpi(), and swing(). A future release of Parity will provide equivalent support for these functions. Indicators We have had trouble finding the correct formulas for the following indicators: corr(), di(), and ffi(). 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. 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. 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. Formulas Parity permits you to create extremely sophisticated formulas using the Formula 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() Technical Indicators Predefined technical indicators for stock and commodity charting, i.e. AD(), ADXR(), MOV(), TRIX(), TSF() etc.. Other Formulas F1 to F9 when previously defined Custom Formulas Not Supported in Version 1.0 Limitations of Formulas in Parity Version 1.3 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 Custom Functions feature, which will be implemented in a future version of Parity, will permit you to assign the result of a formula to a temporary variable. 3 Parity calculates the result of a formula "all at once" and does not support FOR or WHILE loops. 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 avg. * 0.8 In Version 1.3 of Parity there is no way to reference "the previous periods avg" before all the elements of the array are calculated. 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 shifted ahead by x units. The valid range is also adjusted to match the shifted elements V[-1] would be {?, 2, 4, 6, 8, 10} V[+x] V with elements shifted back x units. Elements shifted before x are discarded. V[+1] would be {4, 6, 8, 10} 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: 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: 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 comparisions. 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 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, and Array Related Functions 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 A Mod B Return the integer remainder of A / B A \ B Truncated Division. Divide A by B and discard digits to the right of the decimal place. - 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 Ceil(data) Returns the smallest integral number >= the value. Floor(data) Returns the largest integral number <= the value. Abs(data) Returns the absolute value of a number. 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 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. 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. Part 7 File Formats Supported Parity directly supports 5 and 7 field MetaStock (and most CompuTrac) data files, 7 field ChartPro/MegaTech data files, and a variety of Comma Separated ASCII file formats. 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). The Parity Plus version of the program includes a very flexible Data Conversion utility that can convert to and from all of the above formats. The MetaStock/CompuTrac Format The MetaStock/CompuTrac format dates from the late 1970's and is widely supported by most data vendors. 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. 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. 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 PML, StockWatch 6.0, Pro$tock, and PDL. The author's of all of these programs offer support on the Money Talk BBS of the Prodigy service. 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 .PRO 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. Part 8 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 a 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 asking if you would like to print the chart "As Displayed", i.e., the way File Print does, or "Full Size." Full Size is the default and it will print your chart to fit the size of the page. To print a chart just click anywhere within the chart while the Print Tool is active. 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. 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 according to the same settings as the Print Tool. 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. A product called SuperPrint from Zenographics claims to accelerate graphics printing from Windows but we have never used it. However we wholeheartedly recommend the WinJet 800 add on for LaserJet II and III printers. The WinJet 800 costs roughly $700 by mail order and is manufactured by LaserMaster. 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. 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 2 MB of memory and 1 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. Unlike most programs Parity makes full use of a Math Coprocessor when it calculates the result of a formula or loads a data file. A math coprocessor will increase the speed of these operations , which can involve tens of thousands of floating point calculations, 3-5 fold. Best of all, math coprocessors are cheap and easy to install. 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 $300 to $500 and have display resolutions up to 1280x1024 pixels. 5 Upgrade your motherboard. This is technically more challenging but an excellent AMI Baby Voyager 80486 motherboard can be purchased by Mail Order for about $1100 dollars. Based on our own experiences, we do not advise you to buy off-brand motherboards. We do not recommend 80386 SX or 80486 SX computers. 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. 7 Parity is relatively insensitive to your hard disk speed but, if you don't have a disk cache installed, we strongly recommend that you install the SmartDrive cache that comes with Windows 3.x and DOS 5.0 or buy Super PC-Kwik 4.13 from MultiSoft. 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. 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.3 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, or comma delimited ASCII 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 maintaining price data you have several alternatives. You can manually maintain price data files in Excel, Lotus 123 WKS, comma separated value (CSV) or tab separated value 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. 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 will also update and maintain your existing data files from data downloaded from on-line services like CompuServe, Genie, Prodigy, and Dow Jones News/Retrieval. The latest version of PTT can be downloaded from the FlexSoft BBS at (510) 829-2293. The cost of registering the software is $30. 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. 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 their products. 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. Genesis Financial Data Services P.O. Box 49578 Colorado Springs, CO 80949 (719) 260-6111 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. 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 4905 Pine Cone Drive, # 10-12 Durham, NC 27707 (800) 776-4940 Relatively inexpensive but won't directly update files. Use PTT. 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 newstand 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 Farpoint BBS offers a free source of historical stock data. Call 1-(312) 274-6128 to log on. Farpoint gives you 120 minutes of free time daily. They have historical data files on hundreds of stocks and you can use PML to convert Farpoint's ASCII data files to the MetaStock format. The Market Technicians Association BBS is an excellent source of advanced technical analysis information and discussion. Log on at 1- (914) 478-7311. Other good on-line sources for information and discussion on investing include the INVFORUM on CompuServe and Money Talk on Prodigy.