MetaMarket+ US

 

 

 

User’s Guide Manual

 

 

 

 

 

 

 

 

 

 

Paritech Inc.

425 Market Street.

Suite 2200

San Francisco, CA 94105

USA

1-877-882-7274 (Toll Free)

    +1 (415) 955-0592

 

training@paritech.com

http://www.paritech.com

 

 

Printed in the USA


C O P Y R I G H T   N O T I C E

 

MetaMarket+ US

 

Published by Paritech, Inc.

 

All Rights Reserved

 

Copyright © Paritech, Inc.

 

 

Apart from any fair dealing for the purpose of study, research, criticism or review, as permitted under the copyright act, no part of this manual may be reproduced by any process, without written permission.  Enquires should be made to Paritech, Inc.

 

 

DISCLAIMER

 

General information only - Non Advisory, the material provides general information only.

 

The materials enclosed herein are sold/ distributed as is, without warranty of any kind, either expressed or implied, respecting the contents of this book, including but not limited to warranties for the book’s quality, performance, merchantability, or fitness for any particular purpose.  Neither Paritech, Inc. nor its dealers or distributors shall be liable to the purchaser of to any other person or entity with respect to any liability, loss or damage caused or alleged to be caused directly or indirectly by this publication.

 

This material is not intended as investment advice and must not be relied upon as such.  You should obtain professional investment advice tailored to your specific circumstances prior to making any investment decisions.  You should also consult with a broker to verify pricing before conducting any securities trading.  The material provided does not, and must not be construed as providing recommendations in relation to any securities or other financial products.  It does not constitute and must not be construed as an offer of securities or other financial products nor is it an invitation to you to take up securities or other financial products.

 

 

TRADEMARK ACKNOWLEDGEMENT

 

Microsoft Windows and Windows 2000 are registered trademarks of Microsoft Corporation.  MetaStock is the registered trademark of Equis International.  All other product names or services mentioned are trademarks or registered trademarks of their respective owners.

 


Contents

 

Overview.. 2

Getting Started. 3

System Requirements. 3

Installing MetaMarket+ US. 3

Start up. 3

Main Screen Overview.. 4

Find Security. 5

Switching between the Find Security window and MetaStock. 6

How to copy to the clipboard. 8

How to copy a value to the clipboard. 8

How to copy all the contents to the clipboard. 8

Customizing Your Display. 9

How to add, delete and change the order of fields within a Profile. 9

How to make the window appear always on top of other windows. 9

Multiple Database Folder Locations. 10

Import/Updating the Fundamentals Database. 11

Metastock scanning Add-on. 12

Metastock Scans. 12

Information Fields. 16

Metastock Syntax and Lookup Tables. 19

SECTOR_CODE. 19

INDUSTRY_CODE. 19

EXCHANGE_CODE. 21

Sample of MetaMarket+ US formula in MetaStock. 23

Advanced Features. 25

Advanced Mode. 25

Managing Profiles. 25

Managing Field Definitions. 26

Managing Lookup Tables. 27

Configure Profile Fields. 27

Profile Manager 28

Configure Profile Available Fields. 29

Configure Field Definitions. 30

Configure Lookup Tables. 31

Options Window.. 32

Lookup options. 32

Advanced Mode. 32

All Fields Available For Profiles. 33

Synchronize with MetaStock. 33

Remove Symbol Prefix. 33

Remove Symbol Suffix. 33

Enable Debug Scanning DLL. 33

Tick this to tell the Metastock Scanning DLL to write debugging information to the file. 33

This may help isolate problems when the scanning DLL is not working. 33

Metastock Version. 34

Although MetaMarket+ US is designed to work with Metastock 8 and above, an unsupported option is available to use it with Metastock 7 and Metastock 7.2.  Restart the program after changing this setting. 34

Load Configuration. 34

Load Configuration Options. 34

Formula Debug Window.. 35

Formula Language. 35

Warning Window.. 37

MetaStock Lock Files. 37

No Data Imported. 38

Location of Security Data for Import 38

Select MetaStock Folder Location. 38

Profile: Default 39

Formula Language. 40

Expressions. 40

Loops. 41

If Statement 41

Operators. 41

Variables. 42

User Defined Functions. 43

Functions. 44

Standard functions. 45

Format Strings. 48

Limitations. 51

Begin Sequence Statement 51

Support 52

Important Notes. 52

Frequently Asked Questions. 52

Data Copyright 54

Personal Notes: 55





Paritech’s MetaMarket+ US

Overview

The Paritech MetaMarket+ US program allows you to see Fundamental data for stocks on the NYSE, NASDAQ and AMEX exchanges.  MetaMarket+ US “connects” to the MetaStock application and presents the corresponding fundamental information of the active security displayed in MetaStock. MetaMarket+ US also includes a Metastock Extension that allows you to use the fundamental information in Metastock Explorations. This documentation first describes the MetaMarket+ US main screen.

 

You can specify which Fields to display by selecting “Configure current profile” from the popup menu (right click on main screen).

 

MetaMarket+ US includes Paritech's MetaStock scanning add-on that allows you to access MetaMarket+ US data from within MetaStock Explorations formulas.  Simply click the "Install MetaStock Link" button at the top of MetaMarket+ US to install the add-on into MetaStock.  After the MetaStock add-on is installed you can run MetaStock and run scans over the market for stocks that meet your technical and fundamental criteria. Refer to section Metastock Explorations.Metastock scanning Add-on (page 13) for further information.

 

 

Getting Started

System Requirements

Windows 98/ME/2000/NT/XP operating system, 50MB hard drive, internet connectivity (to update the data), CD-ROM Drive, MetaStock 7.2 or above, Pentium 3 processor or better, 64 MB memory or better...

 

Please note: Installing the MetaStock Links from MetaMarket+ US will only function with Version 7.2 of MetaStock or later ... earlier versions of MetaStock will need to be upgraded to Version 7.2 or later in order for the fundamental explorations to function.

 

 

Installing MetaMarket+ US

To Install MetaMarket+ US, follow this simple process.

Insert the MetaMarket+ US program CD into your CD-ROM drive.  The setup program should start automatically.

If the auto-run feature of Windows isn't enabled on your system, click the START button and choose the RUN command. Click the “browse” button and navigate to your CD-ROM drive. Double click on the install program to run it.

 

 

Start up

To start the MetaMarket+ US program, click on START, then PROGRAMS then PARITECH, then METAMARKET+ US US (if you are using the US version).

 

The first time you start the MetaMarket+ US software, you will need to again view and accept the terms of the License Agreement.

 

 

Click on the View License Agreement button to view the agreement.  After carefully reading the agreement and accepting the terms contained therein, click on the “YES, I accept” button.

 

The program will then load the configuration information from the default configuration file.  A progress bar gives an indication of the loading progress.  The configuration information contains the default profiles, field definitions and lookup tables.

 

It will then ask if you wish to import the Security Data.  The Import Data Wizard will first ask you where your MetaStock database resides.  This will be a path like “C:\METASTOCK DATA”. 

 

 

 

If you are not sure where your MetaStock data resides, click on the folder button on the right of the Database Location line.  This will allow you to browse to your file location.  By default, MetaStock places data in the MetaStock Data directory on the “C” drive. You can set multiple locations after installation is complete … refer Multiple Database Folder Locations page 11 .

 

Now you can start MetaStock, and MetaMarket+ US will display the Fundamental Data associated with the stocks that you view in MetaStock.

 

Main Screen Overview

The left column of the Grid has the name of the Security Data, and the right column has the value.

 

Using the Security Data Grid:

·        You can double click on a row to bring up a description of the information in that row.

·        You can change the order of the rows by holding down the control key and dragging the row to the new location (during which time the cursor will change to indicate you are dragging).

·        You can also change the order using the Configure Profile Fields window.

Exception Situations:

A Field value is shown between two sets of square brackets if a lookup fails e.g. [[F]].

 

 

 

 

Find Security

Click on FILE then OPEN SECURITY.  The Find Security dialog window opens.  This Window will display a list of all of the securities that were found using the MetaStock Folder Locations you have specified.  The corresponding symbol is given, as well as the location of the data.  The small column before the location has an asterisk (*) if there is Security Data information available for that security.

 

You can click on any security to bring up the Security Data for that security in the Main Screen of MetaMarket+ US.

 

You can click on the name of a column to sort the contents based on that column.  Click successively on the name of a column to sort in ascending or descending order.

 

You can also type the name of the security you wish to find in the Security Name text box at the top of the window.  As you type the name, the next matching security is found corresponding to the letters you have already typed.  Likewise, you can enter the security symbol in the Security Symbol text box.

 

 

 

 

Switching between the Find Security window and MetaStock

In the bottom left corner of the MainScreen is an area that indicates whether you are connected to MetaStock, and whether the Security Data currently displayed matches the MetaStock security or the security currently selected in the Find Security window.  You can also click on this area to bring up the Find Security Window and toggle between displaying the Security Data for the Security selected in the Find Security Window or the MetaStock window (You can also use Cntrl-T).

 

Below is a picture showing a sample status bar from a MainScreen indicating the relevant area.

 

 

This area indicates whether the program is “connected” to MetaStock, and whether you are synchronized with the MetaStock contents.

 

It is colored red when MetaStock is not running.  If you click on the area, the Find Security Window is raised.

 

 

When MetaStock is running, then its color will be either green or yellow.  You can toggle whether the display is synchronized with MetaStock or the Find Security window by clicking on the area.

 

It will be green when the current security is determined by the title bar of the MetaStock program (i.e. the Security Data displayed by this program match the currently selected security in MetaStock).  When it is green it will contain the letters ‘CS’ (standing for Connected and Synchronized).

 

 

It will be colored yellow if you use the Find Security window to select a security while the program is connected to MetaStock. This indicates that the information displayed is not synchronized with MetaStock, but rather matches the selected Security in the Find Security window. When it is yellow it will contain the letters ‘CF’ (standing for Connected and Find security window).

 


How to copy to the clipboard

How to copy a value to the clipboard

Select the row containing the value that you want to copy, and then select “Copy Cell Contents To Clipboard” from the Edit menu (or use Control-C).

 

 

 

How to copy all the contents to the clipboard

Select “Copy all Cells To Clipboard” from the Edit menu (or use Control-A).

 


Customizing Your Display

How to add, delete and change the order of fields within a Profile

The Security Data information that is displayed for each type of security can be customized by configuring the fields within the Profile associated with the security.

 

From the MainScreen you can move a row of Security Data Information by holding down the Control key and dragging the row to the new position.

 

You can also use the Configure Profile Fields window.  Open this window by clicking on “Configure Current Profile” in the Pop Up menu or from the Tools menu.

 

Within the Configure Profile Fields window, you can drag and drop Fields in the “Fields currently in Profile” list box.  You can also add and delete fields from the Profile as described in the reference manual entry for the Configure Profile Fields window.

 

 

How to make the window appear always on top of other windows

Select Always On Top from the Pop Up menu or from the Display menu.  A tick against the menu item appears if this is enabled.  Select it again to turn it off.

 

 


Multiple Database Folder Locations

The program requires access to the MetaStock Database.  It stores the Security Data beneath the MetaStock Database, and uses the MetaStock Database for its operation.  Thus, you need to set the location of the MetaStock Database folders.

 

Set the Database Folder Locations using the “Folder Locations” menu item under the Tools menu.

 

You can have up to four separate locations specified.  In addition, you can specify whether the program should search the sub-folders of that folder for MetaStock Database information.  It will continue looking in the sub-folders of sub-folders until no sub-folders remain (i.e. it is a recursive search).

 

 

 

 


Import/Updating the Fundamentals Database

Click the “Update” button on the main screen to bring up the update window. A new window will open.  In the bottom left corner, click on the update button again.  This will automatically connect to our servers and update the database for you.  Nothing more is needed on your part.  When complete (about 20 seconds via broadband connection) you may use MM+ again with updated data.




Metastock scanning Add-on

 

MetaMarket+ US includes Paritech's MetaStock scanning add-on that allows you to access MetaMarket+ US data from within MetaStock formulas.  Simply click the "Install MetaStock Link" button at the top of MetaMarket+ US to install the add-on into MetaStock.  After the MetaStock add-on is installed you can run scans over the market from within the MetaStock program for stocks that meet your technical and fundamental criteria.

 

 

 

You can either run one of the included pre-defined searches or you can simply add criteria to your favorite searches.  See the information field section for a full list of fields you can search on.

 

Once you have selected the criteria you wish to scan for, simply look up the relevant formula syntax and add it to your Exploration.  Alternatively you may want to cut and paste the relevant formula syntax from one of our pre-defined explorations as shown in the information field section.

 

 

Metastock Scans

Please refer to our website for updated information, http://www.paritech.com/us/support/metamarketplus

 

PTUS-01- Basic Materials Sector

This scan ranks the "percentage change" performance of the Basic Materials Economic Sector over the last 10, 20, 30, 40, 50 and 60 days.

 

PTUS-02- Capital Goods Sector

This scan ranks the "percentage change" performance of the Capital Goods Economic Sector over the last 10, 20, 30, 40, 50 and 60 days.

 

PTUS-03- Conglomerates Sector

This scan ranks the "percentage change" performance of the Conglomerates Economic Sector over the last 10, 20, 30, 40, 50 and 60 days.

 

PTUS-04- Consumer Cyclical Sector

This scan ranks the "percentage change" performance of the Consumer Cyclical Economic Sector over the last 10, 20, 30, 40, 50 and 60 days.

 

PTUS-05- Consumer/Non-Cyclical Sector

This scan ranks the "percentage change" performance of the Consumer/Non-Cyclical Economic Sector over the last 10, 20, 30, 40, 50 and 60 days.

 

PTUS-06- Energy Sector

This scan ranks the "percentage change" performance of the Energy Economic Sector over the last 10, 20, 30, 40, 50 and 60 days.

 

PTUS-07- Financial Sector

This scan ranks the "percentage change" performance of the Financial Economic Sector over the last 10, 20, 30, 40, 50 and 60 days.

 

PTUS-08- Healthcare Sector

This scan ranks the "percentage change" performance of the Healthcare Economic Sector over the last 10, 20, 30, 40, 50 and 60 days.

 

PTUS-09- Services Sector

This scan ranks the "percentage change" performance of the Services Economic Sector over the last 10, 20, 30, 40, 50 and 60 days.

 

PTUS-10- Technology Sector

This scan ranks the "percentage change" performance of the Technology Economic Sector over the last 10, 20, 30, 40, 50 and 60 days.

 

PTUS-11- Transportation Sector

This scan ranks the "percentage change" performance of the Transportation Economic Sector over the last 10, 20, 30, 40, 50 and 60 days.

 

PTUS-12- Utilities Sector

This scan ranks the "percentage change" performance of the Utilities Economic Sector over the last 10, 20, 30, 40, 50 and 60 days.

 

PTUS-13- Example Industry Scan

This is an example scan which ranks the "percentage change" performance of the Advertising Industry over the last 10, 20, 30, 40, 50 and 60 days.

 

PTUS-14- Exchange Code

This scan allows you to identify which exchange a security is listed/traded on.

1 = ADR

2 = AMEX

3 = NASD

4 = NYSE

5 = OTC

 

PTUS-15- Shares Outstanding

This scan displays the number of shares on issue for each equity, expressed in millions.

 

PTUS-16- Shares Float

This scan displays the number of issued shares less those held by institutional investors expressed in millions.

 

PTUS-17- Sales Per Share

This scan displays the dollar value of sales generated per share.

 

PTUS-18- Return on Investment

This scan displays the return on assets generated by each dollar invested a company.

 

PTUS-19- Return on Equity

This scan expresses in percentage terms the total return on Equity generated by the company as reported at its last annual report date.

 

PTUS-20- Return on Assets

This scan expresses in percentage terms the total return on Assets generated by the company as reported at its last annual report date.

 

PTUS-21- Quick Ratio

This scan displays the Quick Ratio of a company.

 

PTUS-22- Profit Margin

This scan expresses in percentage terms the Profit Margin generated by the company as reported at its last annual report date.

 

PTUS-23- Price to Sales

This scan expresses the Sales generated for each issued share of a company as reported at its last annual report date.

 

PTUS-24- Price to Cash

This scan expresses the Cash flow generated for each issued share of a company as reported at its last annual report date.

 

PTUS-25- Price to Book

This scan expresses the Book value of the companies assets as a ratio of its share price as reported at its last annual report date.

 

PTUS-26- Price to Earnings

What is the Price Earnings Ratio?  The Price-To-Earnings Ratio (P/E Ratio) is calculated by dividing the close price by Earning Rate Per Share.  It is a measure of the share price in relation to the companies profit, reflecting the investor's expectation of future company performance.

 

PTUS-27- Operating Margin

This scan expresses in percentage terms the Operating profit per dollar of sales generated by the company at its last annual reporting date.

 

PTUS-28- Market Capitalization

What is Market Capitalization?  Market Capitalization is total number of issued shares multiplied by the company's latest close price as reported at its last annual balance date expressed in $ millions.

 

PTUS-29- Gross Margin

This scan expresses in percentage terms the Gross profit per dollar of sales generated by the company at its last annual reporting date.

 

PTUS-30- Employees

This scan identifies the number of employees of a company at its last annual reporting date.

 

PTUS-31- Earnings Per Share

What is Earning Rate Per Share?  Earning Rate Per Share is calculated using a rolling 12 months (latest half year plus prior half year), earnings per share as announced by the company and, adjusted by dilution factors resulting from bonus / rights, issues and capital reconstruction.  The full year is calculated as follows:-

 

(Company reported EPS(1) x Dilution Factor(1)) + (Company reported EPS(2) x Dilution Factor(2))

 

Where (1) is the latest report and  (2) is the report prior to the latest report.  All dilution factors that have occurred since the company reported the EPS figure will be included in the calculation.  The dilution factors are accumulated by multiplying them together if there is more than one in this period.

 

PTUS-32- Dividend Yield

What is Dividend Yield?  The Dividend Yield is also known as Current Yield and is calculated by dividing the Dividend Rate Per Share by the Close Price as at last balance date, expressed as a percentage (Divided Rate Per Share / Close Price  * 100).  The higher the dividend yield the healthier the company is perceived to be.  The yield changes as the share price changes, if the share price falls the dividend yield will rise, if the share price rises the dividend yield will fall.

 

PTUS-33- Payout Ratio

The Payout Ratio represents the amount of profit allocated to the payment of dividends.

PTUS-34- Debt to Equity

The Debt to Equity ratio expresses the level of debt as a ratio of the company's equity.

 

PTUS-35- Current Ratio

This scan expresses in ratio terms value of Current Assets to Current Liabilities on a company's balance sheet.

 

PTUS-36- Cash Per Share

This scan expresses the value of Cash or Cash equivalent investments held on a per share basis on a company's balance sheet.

 

PTUS-37- Cash Flow Per Share

This scan expresses the value of Cash flow generated on a per share basis on a company's balance sheet.

 

PTUS-38- Book Value Per Share

This scan expresses the Book value of the company's net assets on a per share basis.

 

PTUS-39- Annual Dividend

What is the Annual Dividend Amount?  It is the cash dividend amount of the most recently completed full year, payable in cents per security.

 

PTUS-40- Fundamental Composite Example

This is an example exploration that combines several fundamental criteria into one search.

 

The criteria used:-

Market Capitalization > $500 million;

Dividend Yield > 5.0%;

Close > 50 Day Exponential Moving Average;

Close > 200 Day Exponential Moving Average.

 

Information Fields

Metastock add-on information fields

Shares Out

Shares Float

Sector Code

Sales Per Share

Return on Investment

Return on Equity

Return on Assets

Quick Ratio

Profit Margin

Price Sales

Price Cash

Price Book

Price to Earnings

Operating Margin

Market Cap

Industry Code

Gross Margin

Exchange Code

Employees

Earnings Per Share

Dividend Yield

Payout Ratio

Debt Equity

Current Ratio

Cash Per Share

Cash Flow Per Share

Book Value Per Share

Annual Dividend

 

Once you have selected the criteria you wish to scan for, simply look up the relevant formula syntax and add it to your Exploration.  Alternatively you may want to cut and paste the relevant formula syntax from one of our pre-defined explorations.

 

 

 

Some information fields are supported by additional codes which help you fine you're your Explorations even further.  These fields are market with an asterisk and you are encouraged to use the lookup tables that support these fields so that you are familiar with your range of options.

 

Eg, to identify securities in the Energy Sector the syntax would appear as follows:-

ExtFml( "mmplus_us.Fund","SECTOR_CODE")=6

 


Metastock Syntax and Lookup Tables

SECTOR_CODE

ExtFml( "mmplus_us.Fund","SECTOR_CODE")

 

1=Basic Materials
2=Capital Goods
3=Conglomerates
4=Consumer Cyclical
5=Consumer/Non-Cyclical
6=Energy
7=Financial
8=Healthcare
9=Services
10=Technology
11=Transportation
12=Utilities

 

Eg, to identify securities in the Energy Sector the syntax would appear as follows:-

ExtFml( "mmplus_us.Fund","SECTOR_CODE")=6

 

INDUSTRY_CODE

ExtFml( "mmplus_us.Fund","INDUSTRY_CODE")

 

1=Advertising
2=Aerospace & Defense
3=Air Courier
4=Airline
5=Apparel/Accessories
6=Appliance & Tool
7=Audio & Video Equipment
8=Auto & Truck Manufacturers
9=Auto & Truck Parts
10=Beverages (Alcoholic)
11=Beverages (Non-Alcoholic)
12=Beverages (Nonalcoholic)
13=Biotechnology & Drugs
14=Broadcasting & Cable TV
15=Business Services
16=Casinos & Gaming
17=Chemical Manufacturing
18=Chemicals - Plastics & Rubber
19=Coal
20=Communications Equipment
21=Communications Services
22=Computer Hardware
23=Computer Networks
24=Computer Peripherals
25=Computer Services
26=Computer Storage Devices
27=Conglomerates
28=Constr. & Agric. Machinery
29=Constr. - Supplies & Fixtures
30=Construction - Raw Materials
31=Construction Services
32=Consumer Financial Services
33=Containers & Packaging
34=Crops
35=Electric Utilities
36=Electronic Instr. & Controls
37=Fabricated Plastic & Rubber
38=Fish/Livestock
39=Food Processing
40=Footwear
41=Forestry & Wood Products
42=Furniture & Fixtures
43=Gold & Silver
44=Healthcare Facilities
45=Hotels & Motels
46=Insurance (Accident & Health)
47=Insurance (Life)
48=Insurance (Miscellaneous)
49=Insurance (Prop. & Casualty)
50=Investment Services
51=Iron & Steel
52=Jewelry & Silverware
53=Major Drugs
54=Medical Equipment & Supplies
55=Metal Mining
56=Misc. Capital Goods
57=Misc. Fabricated Products
58=Misc. Financial Services
59=Misc. Transportation
60=Mobile Homes & RVs
61=Money Center Banks
62=Motion Pictures
63=Natural Gas Utilities
64=Non-Metallic Mining
65=Office Equipment
66=Office Supplies
67=Oil & Gas - Integrated
68=Oil & Gas Operations
69=Oil Well Services & Equipment
70=Paper & Paper Products
71=Personal & Household Prods.
72=Personal Services
73=Photography
74=Printing & Publishing
75=Printing Services
76=Railroads
77=Real Estate Operations
78=Recreational Activities
79=Recreational Products
80=Regional Banks
81=Rental & Leasing
82=Restaurants
83=Retail (Apparel)
84=Retail (Catalog & Mail Order)
85=Retail (Department & Discount)
86=Retail (Drugs)
87=Retail (Grocery)
88=Retail (Home Improvement)
89=Retail (Specialty)
90=Retail (Technology)
91=S&Ls/Savings Banks
92=Schools
93=Scientific & Technical Instr.
94=Security Systems & Services
95=Semiconductors
96=Software & Programming
97=Textiles - Non Apparel
98=Tires
99=Tobacco
100=Trucking
101=Waste Management Services
102=Water Transportation
103=Water Utilities

 

EXCHANGE_CODE

ExtFml( "mmplus_us.Fund","EXCHANGE_CODE")

 

1=ADR
2=AMEX
3=NASD
4=NYSE
5=OTC

 

 

SHARES_OUT

ExtFml("mmplus_us.Fund","SHARES_OUT")

 

SHARES_FLOAT

ExtFml("mmplus_us.Fund","SHARES_FLOAT")

 

SALES_PER_SHARE

ExtFml("mmplus_us.Fund","SALES_PER_SHARE")

 

RETURN_ON_INVESTMENT

ExtFml("mmplus_us.Fund","RETURN_ON_INVESTMENT")

 

RETURN_ON_EQUITY

ExtFml("mmplus_us.Fund","RETURN_ON_EQUITY")

 

RETURN_ON_ASSETS

ExtFml("mmplus_us.Fund","RETURN_ON_ASSETS")

 

QUICK_RATIO

ExtFml("mmplus_us.Fund","QUICK_RATIO")

 

PROFIT_MARGIN

ExtFml("mmplus_us.Fund","PROFIT_MARGIN")

 

PRICE_SALES

ExtFml("mmplus_us.Fund","PRICE_SALES")

 

PRICE_CASH

ExtFml("mmplus_us.Fund","PRICE_CASH")

 

PRICE_BOOK

ExtFml("mmplus_us.Fund","PRICE_BOOK")

 

PRICE_TO_EARNINGS

ExtFml("mmplus_us.Fund","PRICE_TO_EARNINGS")

 

OPERATING_MARGIN

ExtFml("mmplus_us.Fund","OPERATING_MARGIN")

 

MARKET_CAP

ExtFml("mmplus_us.Fund","MARKET_CAP")

 

GROSS_MARGIN

ExtFml("mmplus_us.Fund","GROSS_MARGIN")

 

EMPLOYEES

ExtFml("mmplus_us.Fund","EMPLOYEES")

 

EARNINGS_PER_SHARE

ExtFml("mmplus_us.Fund","EARNINGS_PER_SHARE")

 

DIVIDEND_YIELD

ExtFml("mmplus_us.Fund","DIVIDEND_YIELD")

 

PAYOUT_RATIO

ExtFml("mmplus_us.Fund","PAYOUT_RATIO")

 

DEBT_EQUITY

ExtFml("mmplus_us.Fund","DEBT_EQUITY")

 

CURRENT_RATIO

ExtFml("mmplus_us.Fund","CURRENT_RATIO")

 

CASH_PER_SHARE

ExtFml("mmplus_us.Fund","CASH_PER_SHARE")

 

CASH_FLOW_PER_SHARE

ExtFml("mmplus_us.Fund","CASH_FLOW_PER_SHARE")

 

BOOK_VALUE_PER_SHARE

ExtFml("mmplus_us.Fund","BOOK_VALUE_PER_SHARE")

 

ANNUAL_DIVIDEND

ExtFml("mmplus_us.Fund","ANNUAL_DIVIDEND")

 

 



==

G1 ExtFml("mmplus_us.Fund","G1")


G1 (US)
25=Consumer Discretionary
30=Consumer Staples
10=Energy
40=Financials
35=Health Care
20=Industrials
45=Information Technology
15=Materials
50=Telecommunication Services
55=Utilities
==

G2 ExtFml("mmplus_us.Fund","G2")


G2 (US)
2510=Automobiles & Components
2520=Consumer Durables & Apparel
2530=Hotels Restaurants & Leisure
2540=Media
2550=Retailing
3010=Food & Staples Retailing
3020=Food Beverage & Tobacco
3030=Household & Personal Products
1010=Energy
4010=Banks
4020=Diversified Financials
4030=Insurance
4040=Real Estate
3510=Health Care Equipment & Services
3520=Pharmaceuticals & Biotechnology
2010=Capital Goods
2020=Commercial Services & Supplies
2030=Transportation
4510=Software & Services
4520=Technology Hardware & Equipment
4530=Semiconductors & Semiconductor Equipment
1510=Materials
5010=Telecommunication Services
5510=Utilities
==

G3 ExtFml("mmplus_us.Fund","G3")


G3 (US)
251010=Auto Components
251020=Automobiles
252010=Household Durables
252020=Leisure Equipment & Products
252030=Textiles, Apparel & Luxury Goods
253010=Hotels Restaurants & Leisure
254010=Media
255010=Distributors
255020=Internet & Catalog Retail
255030=Multiline Retail
255040=Specialty Retail
301010=Food & Staples Retailing
302010=Beverages
302020=Food Products
302030=Tobacco
303010=Household Products
303020=Personal Products
101010=Energy Equipment & Services
101020=Oil & Gas
401010=Commercial Banks
401020=Thrifts & Mortgage Finance
402010=Diversified Financial Services
402020=Consumer Finance
402030=Capital Markets
403010=Insurance
404010=Real Estate
351010=Health Care Equipment & Supplies
351020=Health Care Providers & Services
352010=Biotechnology
352020=Pharmaceuticals
201010=Aerospace & Defense
201020=Building Products
201030=Construction & Engineering
201040=Electrical Equipment
201050=Industrial Conglomerates
201060=Machinery
201070=Trading Companies & Distributors
202010=Commercial Services & Supplies
203010=Air Freight & Logistics
203020=Airlines
203030=Marine
203040=Road & Rail
203050=Transportation Infrastructure
451010=Internet Software & Services
451020=IT Services
451030=Software
452010=Communications Equipment
452020=Computers & Peripherals
452030=Electronic Equipment & Instruments
452040=Office Electronics
453010=Semiconductors & Semiconductor Equipment
151010=Chemicals
151020=Construction Materials
151030=Containers & Packaging
151040=Metals & Mining
151050=Paper & Forest Products
501010=Diversified Telecommunication Services
501020=Wireless Telecommunication Services
551010=Electric Utilities
551020=Gas Utilities
551030=Multi-Utilities & Unregulated Power
551040=Water Utilities
==

G4 ExtFml("mmplus_us.Fund","G4")

G4 (US)
25101010=Auto Parts & Equipment
25101020=Tires & Rubber
25102010=Automobile Manufacturers
25102020=Motorcycle Manufacturers
25201010=Consumer Electronics
25201020=Home Furnishings
25201030=Homebuilding
25201040=Household Appliances
25201050=Housewares & Specialties
25202010=Leisure Products
25202020=Photographic Products
25203010=Apparel, Accessories & Luxury Goods
25203020=Footwear
25203030=Textiles
25301010=Casinos & Gaming
25301020=Hotels, Resorts & Cruise Lines
25301030=Leisure Facilities
25301040=Restaurants
25401010=Advertising
25401020=Broadcasting & Cable TV
25401030=Movies & Entertainment
25401040=Publishing
25501010=Distributors
25502010=Catalog Retail
25502020=Internet Retail
25503010=Department Stores
25503020=General Merchandise Stores
25504010=Apparel Retail
25504020=Computer & Electronics Retail
25504030=Home Improvement Retail
25504040=Specialty Stores
30101010=Drug Retail
30101020=Food Distributors
30101030=Food Retail
30101040=Hypermarkets & Super Centers
30201010=Brewers
30201020=Distillers & Vintners
30201030=Soft Drinks
30202010=Agricultural Products
30202030=Packaged Foods & Meats
30203010=Tobacco
30301010=Household Products
30302010=Personal Products
10101010=Oil & Gas Drilling
10101020=Oil & Gas Equipment & Services
10102010=Integrated Oil & Gas
10102020=Oil & Gas Exploration & Production
10102030=Oil & Gas Refining, Marketing & Transportation
40101010=Diversified Banks
40101015=Regional Banks
40102010=Thrifts & Mortgage Finance
40201020=Other Diversifed Financial Services
40201030=Multi-Sector Holdings
40201040=Specialized Finance
40202010=Consumer Finance
40203010=Asset Management & Custody Banks
40203020=Investment Banking & Brokerage
40203030=Diversified Capital Markets
40301010=Insurance Brokers
40301020=Life & Health Insurance
40301030=Multi-line Insurance
40301040=Property & Casualty Insurance
40301050=Reinsurance
40401010=Real Estate Investment Trusts
40401020=Real Estate Management & Development
35101010=Health Care Equipment
35101020=Health Care Supplies
35102010=Health Care Distributors
35102015=Health Care Services
35102020=Health Care Facilities
35102030=Managed Health Care
35201010=Biotechnology
35202010=Pharmaceuticals
20101010=Aerospace & Defense
20102010=Building Products
20103010=Construction & Engineering
20104010=Electrical Components & Equipment
20104020=Heavy Electrical Equipment
20105010=Industrial Conglomerates
20106010=Construction & Farm Machinery & Heavy Trucks
20106020=Industrial Machinery
20107010=Trading Companies & Distributors
20201010=Commercial Printing
20201030=Diversified Commercial Services
20201040=Employment Services
20201050=Environmental Services
20201060=Office Services & Supplies
20301010=Air Freight & Logistics
20302010=Airlines
20303010=Marine
20304010=Railroads
20304020=Trucking
20305010=Airport Services
20305030=Marine Ports & Services
45101010=Internet Software & Services
45102010=IT Consulting & Other Services
45102020=Data Processing & Outsourced Services
45103010=Application Software
45103020=Systems Software
45103030=Home Entertainment Software
45201020=Communications Equipment
45202010=Computer Hardware
45202020=Computer Storage & Peripherals
45203010=Electronic Equipment Manufacturers
45203020=Electronic Manufacturing Services
45203030=Technology Distributors
45204010=Office Electronics
45301010=Semiconductor Equipment
45301020=Semiconductors
15101010=Commodity Chemicals
15101020=Diversified Chemicals
15101030=Fertilizers & Agricultural Chemicals
15101040=Industrial Gases
15101050=Specialty Chemicals
15102010=Construction Materials
15103010=Metal & Glass Containers
15103020=Paper Packaging
15104010=Aluminum
15104020=Diversified Metals & Mining
15104030=Gold
15104040=Precious Metals & Minerals
15104050=Steel
15105010=Forest Products
15105020=Paper Products
50101010=Alternative Carriers
50101020=Integrated Telecommunication Services
50102010=Wireless Telecommunication Services
55101010=Electric Utilities
55102010=Gas Utilities
55103010=Multi-Utilities & Unregulated Power
55104010=Water Utilities

Sample of MetaMarket+ US formula in MetaStock

 


Advanced Features

Advanced Mode

Advanced Mode gives access to some additional functionality.  This is mainly for managing the profiles, field definitions and lookup tables.

 

To change to and from Advanced Mode, select Options from the Pop Up menu or from the Tools menu and check or uncheck the Advanced Mode check box.

 

 

 

Managing Profiles

Use the Profile Manager to Manage Profiles.

 

To bring up the Profile Manager window, select “Profile Manager” from the Pop-up menu or from the Configure menu.

 

The Profile Manager allows you to define the fields within the profile.

 

In the Configure Profile Fields window, you are restricted to adding only certain fields to the profile because only subsets of all the fields are relevant.  The Profile Manager allows you to manage those fields that are in this subset.  They are referred to as the available Fields. Use the Configure Profile Available Fields window to add and remove fields from the list of available fields for the profile.

 

 

 

Managing Field Definitions

Field Definitions are managed using the Field Definitions Configuration Window

 

Management operations include:

·        Create new Field definitions

·        Delete existing Field definitions

·        Edit existing Field definitions

·        Associate a lookup table with a Field definition

·        Specify the description of the Field definition.

·        Specify the formula for calculating the field definition

·        Specify the data type of the Field definition

·        Change the name of a Field definition

 

(Note: you can right click on the field that you wish to look at when raising the Popup menu to select “Configure Field Definitions” and that field will be the selected field in the “Configure Field Definitions” window.)

 

 

 

Managing Lookup Tables

Many fields can be directly displayed.  However, other fields must be determined by using a Lookup Table to map the value into a meaningful description.

 

Lookup Tables are managed using the Lookup Table Configuration Window

 

Management operations include

·        Create new Lookup Tables

·        Delete existing Lookup Tables

·        Edit the contents of an existing Lookup Table

·        Add and Delete rows from a Lookup Table

·        Change the name of a Lookup Table

 

 

Configure Profile Fields

This Form allows the selection and ordering of the Fields associated with a Profile.  The Window has two lists.  The left list contains the fields that are displayed for a security associated with this Profile, and the right list contains the remaining available fields that can be added to the left list.

 

Use the arrow keys to move fields between the lists.  The double arrows move the entire contents.  The single arrows move the selected items.  You can also double click a single item to move it to the other list.  Further, you can drag and drop a selection of items from one list to the other list.  If you click on one item, then Shift-Click on another item, all of the items in between are also selected.  If you hold down the control key while clicking on items, all those items will be selected.  The Available Fields list is sorted alphabetically.  The left list is not sorted automatically, and when you drop multiple items on this list, they are inserted at the location that they are dropped.  You may choose to sort the left list at any time by clicking the sort button.

 

When you click on a Field in either list, the corresponding description of that field is displayed in the area below the lists.

 

You can resize both the left and right list boxes and the size of the description box by either using the splitters or by resizing the window.

 

 

Profile Manager

The Profile Manager allows any of the Profiles to be configured.  You can also add and delete Profiles.

 

 

 

All of the Profiles are listed in the list box.  Click the “Add” button to add a new Profile.  It will bring up a dialog box to enter the new profile name.  The “Delete”, “Fields” and “Available Fields” buttons will only be enabled when a Profile is selected.  The “Delete” button will delete the selected Profile.

 

The “Fields” button will bring up the Configure Profile Fields window.  The “Available Fields” button will bring up the Configure Profile Available Fields window.  Note that you can resize the window to enlarge the list box.


Configure Profile Available Fields

Each Profile consists of a list of fields that are displayed for securities associated with that Profile.  You can use the Configure Profile Fields Window to select the Fields that you wish to display from the available fields for that Profile.  This section describes how to specify what the available Fields are for the Profile.

 

The “Configure Profile Available Fields” Window allows the specification of the available Fields associated with a Profile.  The Window has two lists.  The left list contains the fields that are available for the Profile, and the right list contains the totality of fields that are defined.

 

 

 

Use the arrow keys to move fields between the lists.  The double arrows move the entire contents.  The single arrows move the selected items.  You can also double click a single item to move it to the other list.  Further, you can drag and drop a selection of items from one list to the other list.  If you click on one item, then Shift-Click on another item, all of the items in between are also selected.  If you hold down the control key while clicking on items, all those items will be selected.  Both lists are sorted alphabetically.

 

When you click on a Field in either list, the corresponding description of that field is displayed in the area below the lists.

 

You can resize both the left and right list boxes and the size of the description box by either using the splitters or by resizing the window.

 

Configure Field Definitions

Field Definitions are configured using the “Field Definitions Configuration” Window.  On the left of the Window is a list of all of the currently defined Field Definitions.  To see the details associated with a Field Definitions, click on it. 

 

On the right side of the Window is a tabbed area where you can see and change details associated with the currently selected Field Definition.  Under the General tab is the name of the Field Definitions, the type of data it defines (e.g. String, Integer, Currency, Date etc.), whether it has a lookup table and if so the name of the lookup table. 

 

Click on the “Edit Lookup Table” button to bring up the Configure Lookup Tables Window.  Under the Help tab you can edit the description of the Field Definition, and under the Formula tab you can edit the associated formula for the Field Definition.

 

Pressing the Cancel button cancels any changes since the Apply button was previously pressed.  Note that the Window can be resized, as can the width of the Field Definitions list.

 

 

 

Configure Lookup Tables

The Security Data that the program reads uses short codes for many of the Field values.  The lookup tables map the codes into their meanings.

 

The program allows you to add, delete and change the lookup tables.

 

On the left side is a list of all of the lookup tables currently defined.  Click on one of the tables to bring up its details.  You can use the Add and Delete buttons to add a new lookup table and delete the currently selected table.  On the right side of the window are the table name and table contents.  You can change the table name and contents.  You can use the add button to add a row at the row currently selected, and the delete button to delete that row.

 

 

 

Pressing the Cancel button cancels any changes since the Apply button was previously pressed.

 

Note that the Window can be resized, as can the width of the Lookup Tables list.

 


Options Window

 

 

 

Lookup options

The program allows you to see the codes used in the original Security Data (prior to using the Lookup tables).  Normally, these codes are translated using the lookup tables to their meaning.  However, it is possible to see the original codes, or a combination of both the codes and the lookup value.

 

 

Advanced Mode

You can also choose either simple or advanced mode.

 

 

All Fields Available For Profiles

The option for “All Fields Available For Profiles” sets the available fields for all profiles to the totality of fields available rather than a subset specific to that profile.  Refer to Configure Profile Fields and to Profile Available Fields.

 

 

Synchronize with MetaStock

MetaMarket+ US will normally follow what you are doing with MetaStock.  MetaMarket+ US finds out what security you are looking at in MetaStock by looking in the title bar of the MetaStock application.  When you change what you are looking at in MetaStock, MetaMarket+ US will normally try to display the Security details for the new Security.  To disable this behavior (so MetaMarket+ US does not follow what you do in MetaStock), turn off this option.

 

 

Remove Symbol Prefix

Like the “Remove Symbol Suffix” option (refer below) except this removes text at the start of the symbol.

 

 

Remove Symbol Suffix

MetaMarket+ US tries to match the symbol name in your MetaStock database with the symbol name in the Security Data (i.e. it tries to match the security data with the MetaStock security using the symbol name).  Our symbol names may not match your symbol names.  For instance, your data supplier may use BHP^AU to represent BHP in Australia but our data uses BHP.  By setting the Remove Symbol Suffix to ^AU, MetaMarket+ US will remove the ^AU before it looks for the Security Data.

 

Use regex to extract name from MetaStock title bar (normally not set)

Tick this option if you wish to specify a Regular Expression that finds the part of the MetaStock title bar string that you wish to remove to find the name of the security. A trailing “[” will be removed from the remaining text if found.

 

Enable Debug Scanning DLL

Tick this to tell the Metastock Scanning DLL to write debugging information to the file

C:\ paritech_mm_us_scanning_dll_log2.txt

This may help isolate problems when the scanning DLL is not working.

 

Metastock Version

Although MetaMarket+ US is designed to work with Metastock 8 and above, an unsupported option is available to use it with Metastock 7 and Metastock 7.2.  Restart the program after changing this setting.

 

Load Configuration

The default configuration information should be automatically loaded when the program is first installed.  At any time you may reload the default configuration to revert to the default configuration.  You can also save the current configuration to your own configuration file, and reload it again to restore that configuration.  Important Note: by default, the Profiles are not loaded when you load a configuration file using this method.  However, you can select this option.

 

Use this Window to load a configuration File.  Click on Options to set load options.  While loading a window will show the progress using progress bars

 

 

 

Load Configuration Options

The load options allow you to specify whether to load Profiles, Field Definitions, and Lookup Tables.

 


Formula Debug Window

Formula Language

This Window allows you to do limited debugging of formulas.  The window is raised when a formula which has the debug checkbox ticked (in the Field Definition) is executed.

 

 

 

You can step thru the formula using the Step button.  The current line is shown in blue.

 

Breakpoints consist of a location and an optional condition.  You can specify three types of location.

·        Line number

·        Function name  (Note: functions are only compared for this length of characters – i.e. any function name starting with these characters will match)

·        Any where (indicated with ‘*’)

 

Some examples of break points are

·        Break on line 14

·        Break on line 14 when J>3

·        Break in function “Foo” when History.GetHigh(I) > 6.5

·        Break anywhere when J = 9

 

To add a breakpoint, use the Add button.  To delete a breakpoint, select it in the breakpoint list and use the Delete button.  To edit a breakpoint, double click on it in the breakpoint list.  When you click the run button, if a breakpoint that causes execution to stop, then that breakpoint will be selected in the breakpoint list.  You can click on a line of the source code to create a line number break point with no condition on that line.  The line number will become red when the break point is enabled.  Click on it again to turn it off.

 

The debugger can be used in two ways.  If you want to see the line numbers (and be able to turn breakpoints on and off by clicking on the line numbers) then you should use the “Line Numbers On Mode”.  However, in this mode you cannot edit the source code while executing or stepping thru the code.  You will need to use the “Edit Code” button to edit the code, which will remove the line numbers so you can edit the code but you will still be in “Line Numbers On Mode”.  When you press “Step” or “Run” or “Restart” while editing the code the debugger will place the line numbers back and execute the code (from the beginning).  This mode is convenient when you are using breakpoints and infrequently modifying the code.

 

The second way to use the debugger is without the line numbers being displayed.  In this mode, you can edit the source code without having to press the “edit code” button (which won’t be displayed anyway).  This is convenient while you are frequently making changes.  If you edit the formula, then pressing Step or Run will execute the formula from the beginning.

 

Along the bottom of the window are the following buttons

 

Step

Execute the next line (shortcut F8)

Run

Continue running until a breakpoint is triggered or the formula completes execution (shortcut F9)

Restart

Start from the beginning again

Evaluate

Evaluate some arbitrary code (Limitation: you can’t assign to variables.)

Edit Code or Line Number

This position will either have the “Edit Code” button, or the Line Number display, depending on whether or not you are in “Line Numbers On Mode”.  If you are in “Line Numbers On Mode”, then the “Edit” button is displayed, and pressing the “Edit” button allows you to edit the Formula. The line numbers will be removed while you edit the code, but you will still be in “Line Numbers On Mode”.  When you are not in “Line Numbers On Mode”, then the line number of the cursor position in the formula is displayed.  This number is not the line number of the blue line, but rather allows you to determine the line number of any line by clicking on it or moving the cursor to it.

Num

The “Num” button toggles the “Line Numbers On Mode”.  You can tell which mode you are in by the presence of the “Edit Code” button or the Line Number box.

Font

Change the font used for the source code

Save Code

If you edit the formula, your changes will be lost when you close the debugger unless you save it.

Close

Close the window.  The debugger window will appear again the next time the formula is executed.

Stop

Close the window.  Turn off the debug flag on the formula so the debugger will not appear the next time the Formula is executed

Help

Bring up this help window

 

The Watch list (upper right) can be used to display the value of expressions every time the formula stops because of a break point or because you are stepping.  As with breakpoints, use the “Add” and “Delete” buttons to add and delete expressions to watch, and double click in an expression in the list to edit it (Limitation: you can’t assign to variables).

 

The Memo box above the row of buttons on the bottom of the screen is used to show messages.  It also shows the line number and line being executed.

 

Limitations of the debugger include:

·        The breakpoints will not move as you insert and delete lines

·        If you debug a formula, then after you press close or stop the result will not be displayed in the main screen if that formula was being debugged.

·        The formula language allows you to bring up your own windows using ShowModal(). (There are some sample formulas included that do this e.g. Sample Formula – Graphics.)  However, you can not use the debugger to step thru formulas that use the ShowModal() call.  You can achieve limited debugging capability by changing ShowModal() to Show() and then stepping thru the formula. (ShowModal() causes the new window to receive keyboard and mouse focus denying other windows in the application the ability to receive keyboard and mouse focus until the Modal window closes, whereas Show() allows other windows in the application to continue receiving focus).

 

Note: You can enlarge each box in the Window.  There is a splitter at the left side of the Breakpoints/Watch box, and a splitter at the bottom of the source code box.

 

 

Warning Window

The Warning Window is a log of the warnings that are generated by the program.  The time of the warning is given in square brackets.  At any time, you may clear the log by clicking “Clear All”.

 

 

MetaStock Lock Files

The MetaStock Database uses a Lock File to control access to the Database.  This will prevent two copies of a program accessing the Database at the same time.  However, if a program that is accessing the Database does not terminate normally, then the Lock File may not be removed even though the program is no longer running.  The next time the program is started, it sees the old Lock File and must determine whether another copy of the program is running.  By clicking “Yes” in the dialog box, you can inform the program that no other copy of the program is running and it can safely delete the Lock File.  If you are running another copy of the program, you must realize that only one copy of the program can access the Database at one time.

 

 

No Data Imported

The Security Data corresponding to the securities in the MetaStock Database needs to be imported.  You can start the Import Data Wizard that will allow you to enter the location of the MetaStock Database and the location of the Security Data and import the data.  This message will no longer appear after the MetaStock Database Folder location is set and the Security Data has been successfully imported.  (Note: It will appear if no folder locations are set even if the Security Data has already been imported.)

 

 

Location of Security Data for Import

MetaMarket+ US displays Data for Securities.  MetaMarket+ US is shipped with Data for most securities.  When you perform the Import data operation, you selectively extract the Data for the Securities that are in your MetaStock Database.  The Import operation needs to know where the Data is.

 

Select MetaStock Folder Location

MetaMarket+ US displays Data for Securities.  When you perform the Import data operation, you selectively extract the Data for the Securities that are in your MetaStock Database.  The Import operation needs to know where the MetaStock Database is located.  It’s the Folder with lots of files like F1.dat, F2.dat, F3.dat ... etc.

 

 

Note: If you have more the one Folder containing MetaStock data, then you can use the Folder Locations available from the Advanced Mode Pop Up Menu to list up to four different locations.

 

 

Profile: Default

The following fields are currently available for company options:


·        Symbol

·        Security Name

·        Exchange

·        Sector

·        Industry

·        Employees

·        Market Cap (Mil)

·        Shares Out (Mil)

·        Shares Float (Mil)

·        Dividend Yield

·        Annual Dividend

·        Dividend Payout Ratio

·        Quick Ratio

·        Current Ratio

·        Debt to Equity

·        Price to Earnings

·        Price to Sales

·        Price to Book

·        Price to Cash Flow

·        Earnings Per Share

·        Sales Per Share

·        Book Value Per Share

·        Cash Flow Per Share

·        Cash Per Share

·        Return On Equity

·        Return On Assets

·        Gross Margin %

·        Operating Margin

·        Profit Margin

·        Price Volume Breakout=0

·        52 Week High

·        52 Week Low

·        Average Volume (200 trading days)

·        Average Volume (26 trading days)

·        Average Volume (34 trading days)

·        Average Volume (over entire history)

·        Last MetaStock Date

·        Latest Close Price

·        Latest Daily High

·        Latest Daily Low

·        Move

·        Volume and Close Movement


 


Formula Language

The Formula Language is available for advanced users to create their own formulas.  Only basic reference information will be given here.  You can look at the existing formulas to see how formulas work.

 

A Formula like …

IniFile.GetCurrency('ASX Security','AssetBacking') gets its value from the AssetBacking key in the [ASX Security] section of the INI file whose name is $SecuritySymbol.ptf in the PTFData directory.

 

Security data like the Open, High, Low and Close information is available via the History object.  Have a look at the 52 week high formula and the Average Volume formula for examples.

 

This software uses the SimCop (Simple Command Processor) Language.  SimCop was written by Thomas Schubbauer (SchubbT@csi.com, http://ourworld.compuserve.com/Homepages/SchubbT).  Thanks for allowing us to use it Thomas!  The SimCop language section of this help file has largely been extracted from the SimCop help file by Thomas.

 

The following sections provide some basic language details.

 

 

Expressions

Expressions consist of operators, constants, variables and functions. Valid SimCoP constants are of the type integer (e.g. 2), double (e.g. 2.3), string (e.g. 'Hello' bzw. "Hello"), and array (e.g. [1, 2, 'x']). 

 

Integer constants consists of numbers without decimal dot, double constants have a decimal dot. 

 

String constants are enclosed in string delimiters (' or "). 

 

Array constants are enclosed in brackets (“[“, “]”), they are untyped.  Array elements are identified with the name of the array and the index enclosed in brackets.  Array of array is not supported.

 

Functions consists of a name followed by a pair of parentheses, which can enclose a list of 0-16 parameters.  The parentheses must be written, even if the function has no parameters.

Variables are valid identifiers.

 

Identifiers consists of letters, numbers and '_'. They must not start with a number.

 

Examples for valid expressions:

 

2*(x+3)

Fn (1, 'X', Sin (3))

Time ()

 

 

Loops

For <LoopVariable> := <Start> To <End> [Step <Width>]

  <Commands>

  [Exit]

  <Commands>

Next

 

Do While <Condition>

  <Commands>

  [Exit]

  <Commands>

EndDo

 

 

If Statement

If <Condition>

  <Commands>

[[ElseIf <Condition>]

  <Commands>

[...]]

[Else]

  <Commands>

EndIf

 

 

Operators

SimCoP supports operators with 1 or 2 arguments and different priorities.

 

The expressions are evaluated from left to right.  Only the ':=' (assign operator) is evaluated from right to left.

 

The macro operator '&' evaluates an expression in a string. e.g. &'1+1' => 2


 

Operator

Priority

Operation, argument type -> result type

+

30

Addition, numbers and strings -> number, string

-

30

Subtraction, numbers -> number

*

20

Multiplication, numbers -> number

/

20

Division, numbers -> number

%

20

Modulo, numbers -> number

^

10

Exponent, numbers -> number

1

10

pos. , number -> number

-1

10

neg. , number -> number

=

40

equal, numbers, strings, boolean-> boolean

>

40

greater than, numbers, strings, boolean -> boolean

<

40

less than, numbers, strings, boolean -> boolean

>=

40

greater or equal, numbers, strings, boolean -> boolean

<=

40

less or equal, numberen, strings, boolean -> boolean

<>

40

not equal, numberen, strings, boolean -> boolean

AND

60

and. numberen, boolean -> number, boolean

OR

70

or numberen, boolean -> number, boolean

XOR

70

xor numberen, boolean -> number, boolean

NOT (1)

50

Negation number, boolean -> number, boolean

: (1)

5

Get Value of Field, string -> Variant

& (1)

1

Macro-evaluation string -> any type

 

 

Variables

The declaration of variables is not necessary in SimCoP.  Variable are declared when they are assigned first.  It is possible to declare a variable, to control the scope and the data type.  Arrays must be declared.  Only the first 16 characters of names of variables are significant. 

For the declaration of variables the following keywords can be used: Global, Public, Private. 

The following data types are supported: _Empty,  _Integer,  _SmallInt,  _Single, _Double, _Currency, _Date, _string, _Boolean _Empty = untyped.

 

Syntax:

{Global | Public | Private}  <VariableName> [ As <Type>] [, ...]

 

Arrays are declared with the upper bounds between brackets.  The lower bound is always 1. Arrays can have up to four dimensions.

 

Example:

Private i As _Integer, s As _string, x, a[3,3]

 

Defines: i as Integer, s as string, x is private but untyped, a is an array with (3*3) = 9 elements.

 

Global, Public and Private are no declarations, but commands, so they can occur everywhere in the program.  Variables are declared after one of these commands is executed.

 

Global

The scope of global variables is the livetime of the TSimCoP object. They are valid, even if different SimCoP programs are loaded and executed.

 

Public

Public variables are valid as long as the SimCoP programs runs.  When the program is terminated, public variables are deleted.

 

Private

Private variables are valid in the function where they where declared, and in all called functions.  If the function returns, private variable are deleted.

 

 

User Defined Functions

Functions can be declared with the Function statement in SimCoP.  It makes no difference, whether the function has a return value or not.  With the Return the function is terminated.  Return allows to return a function result.  Only the first 16 characters of names of functions are significant.

 

With the Parameter statement, the parameters can be read.

The statement External allows to call a function that is written in another source file.

Functions must be declared, before they are used.

 

Syntax:

Function <Name> [External <Filename>]

 

<Name> is a identifier, <Filename> is a string expression

e.g.: Function Test External "Test.Sim"

 

Parameter <Variable> [, ...]

<Variable> is a valid identifier.

            Parameters are declared as Private automatically.

 

Return [<ResultValuet>]

<ResultValue> is any expression

 

Functions are called with an identifier, followed by a pair of round parentheses, which can cover a list of parameters.

 

The program SimTest calls the function main, if the start button is pressed.

 

Example

 

Function FuncTest

Parameter X

  if Type ("X") <> "N"

    Return -1

  endif

  if X = 0

    Return 0

  endif

Return X + 3

 

Function Main

  * Shows 5:

  ShowMessage (IntToStr (FuncTest (2)))

  * Shows 0:

  ShowMessage (IntToStr (FuncTest (0)))

  * Shows -1:

  ShowMessage (IntToStr (FuncTest ()))

Return

 

 

Functions

Internal Functions

 

ErrorCode ()

Returns the last error code, can be used in Recover blocks.

 

ErrorText ()

Like ErrorCode(), returns the error text.

 

Type (<cAusdruck>)

Returns the data type of an expression.  The return values are

'U' = undefined

'D' = Date

'N' = numeric

'C' = string or char

'L' = boolean (logic)

 

Example:

Type ("1+1")                -> "N"

Type ("1#1")                -> "U"

Type ("'Hallo'")             -> "C"

Type (1)                       -> runtime error

 

 

Standard functions

Asc (<cstring>) -> Integer

Returns the Ansi-code of the 1st character of the string.

 

At (<cstring1>, <cstring2>) -> Integer

Returns the position of cstring1 in cstring2, 0 if not included

 

Chr (<nValue>) -> string

Returns character with the Ansi-code nValue

 

Date () -> Date

Actual date

 

Format (<cFormat>, <aArgs>) -> string

 

Format strings passed to the string formatting routines contain two types of objects--plain characters and format specifiers.  Plain characters are copied verbatim to the resulting string.  Format specifiers fetch arguments from the argument list and apply formatting to them. 

Format specifiers have the following form:

 

"%" [index ":"] ["-"] [width] ["." prec] type

 

A format specifier begins with a % character. After the % come the following, in this order:

 

An optional argument index specifier, [index ":"]

            An optional left justification indicator, ["-"]

            An optional width specifier, [width]

            An optional precision specifier, ["." prec]

            The conversion type character, type

 

The following table summarizes the possible values for type:

 

d

Decimal.  The argument must be an integer value.  The value is converted to a string of decimal digits.  If the format string contains a precision specifier, it indicates that the resulting string must contain at least the specified number of digits; if the value has less digits, the resulting string is left-padded with zeros.

u

Unsigned decimal.  Similar to 'd' but no sign is output.

e

Scientific.  The argument must be a floating-point value.  The value is converted to a string of the form "-d.ddd...E+ddd".  The resulting string starts with a minus sign if the number is negative.  One digit always precedes the decimal point.  The total number of digits in the resulting string (including the one before the decimal point) is given by the precision specifier in the format string--a default precision of 15 is assumed if no precision specifier is present.  The "E" exponent character in the resulting string is always followed by a plus or minus sign and at least three digits.

f

Fixed.  The argument must be a floating-point value.  The value is converted to a string of the form "-ddd.ddd...". The resulting string starts with a minus sign if the number is negative.  The number of digits after the decimal point is given by the precision specifier in the format string--a default of 2 decimal digits is assumed if no precision specifier is present.

g

General.  The argument must be a floating-point value.  The value is converted to the shortest possible decimal string using fixed or scientific format.  The number of significant digits in the resulting string is given by the precision specifier in the format string--a default precision of 15 is assumed if no precision specifier is present.  Trailing zeros are removed from the resulting string, and a decimal point appears only if necessary.  The resulting string uses fixed point format if the number of digits to the left of the decimal point in the value is less than or equal to the specified precision, and if the value is greater than or equal to 0.00001.  Otherwise the resulting string uses scientific format.

n

Number. The argument must be a floating-point value. The value is converted to a string of the form "-d,ddd,ddd.ddd...". The "n" format corresponds to the "f" format, except that the resulting string contains thousand separators.

m

Money.  The argument must be a floating-point value.  The value is converted to a string that represents a currency amount.  The conversion is controlled by the CurrencyString, CurrencyFormat, NegCurrFormat, ThousandSeparator, DecimalSeparator, and CurrencyDecimals global variables, all of which are initialized from the Currency Format in the International section of the Windows Control Panel.  If the format string contains a precision specifier, it overrides the value given by the CurrencyDecimals global variable.

p

Pointer.  The argument must be a pointer value.  The value is converted to an 8-character string that represents the pointers value in hexadecimal.

s

String.  The argument must be a character, a string, or a PChar value. The string or character is inserted in place of the format specifier.  The precision specifier, if present in the format string, specifies the maximum length of the resulting string. If the argument is a string that is longer than this maximum, the string is truncated.

x

Hexadecimal.  The argument must be an integer value.  The value is converted to a string of hexadecimal digits.  If the format string contains a precision specifier, it indicates that the resulting string must contain at least the specified number of digits; if the value has fewer digits, the resulting string is left-padded with zeros.

 

Conversion characters may be specified in uppercase as well as in lowercase--both produce the same results.

 

For all floating-point formats, the actual characters used as decimal and thousand separators are obtained from the DecimalSeparator and ThousandSeparator global variables. 

Index, width, and precision specifiers can be specified directly using decimal digit string (for example "%10d"), or indirectly using an asterisk character (for example "%*.*f").  When using an asterisk, the next argument in the argument list (which must be an integer value) becomes the value that is actually used.  For example,

 

Format('%*.*f', [8, 2, 123.456]) is the same as

 

Format('%8.2f', [123.456]).

 

A width specifier sets the minimum field width for a conversion.  If the resulting string is shorter than the minimum field width, it is padded with blanks to increase the field width.  The default is to right-justify the result by adding blanks in front of the value, but if the format specifier contains a left-justification indicator (a "-" character preceding the width specifier), the result is left-justified by adding blanks after the value.

 

An index specifier sets the current argument list index to the specified value.  The index of the first argument in the argument list is 0.  Using index specifiers, it is possible to format the same argument multiple times.  For example "Format('%d %d %0:d %1:d', [10, 20])" produces the string '10 20 10 20'.

 


Format Strings

FormatDateTime (<cFormat>, <dDateTime>) -> string

FormatDateTime formats the date-and-time value given by DateTime using the format given by cFormat. The following format specifiers are supported:

 

Specifier

Displays

c

Displays the date using the format given by the ShortDateFormat global variable, followed by the time using the format given by the LongTimeFormat global variable.  The time is not displayed if the fractional part of the DateTime value is zero.

d

Displays the day as a number without a leading zero (1-31).

dd

Displays the day as a number with a leading zero (01-31).

ddd

Displays the day as an abbreviation (Sun-Sat) using the strings given by the ShortDayNames global variable.

dddd

Displays the day as a full name (Sunday-Saturday) using the strings given by the LongDayNames global variable.

ddddd

Displays the date using the format given by the ShortDateFormat global variable.

dddddd

Displays the date using the format given by the LongDateFormat global variable.

m

Displays the month as a number without a leading zero (1-12).  If the m specifier immediately follows an h or hh specifier, the minute rather than the month is displayed.

mm

Displays the month as a number with a leading zero (01-12). If the mm specifier immediately follows an h or hh specifier, the minute rather than the month is displayed.

mmm

Displays the month as an abbreviation (Jan-Dec) using the strings given by the ShortMonthNames global variable.

mmmm

Displays the month as a full name (January-December) using the strings given by the LongMonthNames global variable.

yy

Displays the year as a two-digit number (00-99).

yyyy

Displays the year as a four-digit number (0000-9999).

h

Displays the hour without a leading zero (0-23).

hh

Displays the hour with a leading zero (00-23).

n

Displays the minute without a leading zero (0-59).

nn

Displays the minute with a leading zero (00-59).

s

Displays the second without a leading zero (0-59).

ss

Displays the second with a leading zero (00-59).

t

Displays the time using the format given by the ShortTimeFormat global variable.

tt

Displays the time using the format given by the LongTimeFormat global variable.

am/pm

Uses the 12-hour clock for the preceding h or hh specifier, and displays 'am' for any hour before noon, and 'pm' for any hour after noon. The am/pm specifier can use lower, upper, or mixed case, and the result is displayed accordingly.

a/p

Uses the 12-hour clock for the preceding h or hh specifier, and displays 'a' for any hour before noon, and 'p' for any hour after noon. The a/p specifier can use lower, upper, or mixed case, and the result is displayed accordingly.

ampm

Uses the 12-hour clock for the preceding h or hh specifier, and displays the contents of the TimeAMString global variable for any hour before noon, and the contents of the TimePMString global variable for any hour after noon.

/

Displays the date separator character given by the DateSeparator global variable.

:

Displays the time separator character given by the TimeSeparator global variable.

'xx'/"xx"

Characters enclosed in single or double quotes are displayed as-is, and do not affect formatting.

 

Format specifiers may be written in upper case as well as in lower case letters--both produce the same result.  If the string given by the Format parameter is empty, the date and time value is formatted as if a 'c' format specifier had been given.

 

Int (<nValue>) -> Integer

Truncates a real-type value to an integer-type value (Like Delphi function Trunc.)

 

IntToStr (<nValue>) -> string

The IntToStr function converts an integer into a string containing the decimal representation of that number. (Like Delphi.)

 

Len (<cstring>) -> Integer

Length of String. Like Delphi function Length.

 

Lpad (<cstring>, <nLen>) -> string

Returns a string of the length nLen, cString is truncated or filled with blanks left.

 

Now () -> Date

Returns the current Date. (Like Delphi.)

 

Pad (<cstring>, <nLen>) -> string

Returns a string of the length nLen, cString is truncated or filled with blanks right.

 

Random () -> Double

Returns a random number between 0 and 1.

 

Randomize ()

Initializes the randomizer.

 

Replicate (<cstring>, <nCount>) -> string

Returns a string the contains of nCount times cString.

 

ShowMessage (<cstring>)

Call ShowMessage to display a simple message box with an OK button.  The parameter is the message string that appears in the message box (Like Delphi.)

 

Space (<nLen>) -> string

Returns a string with the length nLen filled with spaces.

 

SubStr (<cstring>, <nPos>, <nCount>) -> string

The first parameter is an expression of a string. nPos and nCount are integer-type expressions. SubStr returns a string or array containing nCount characters or elements starting at cstring[nPos].

 

If nPos is larger than the length of cstring, SubStr returns an empty string or array.

 

If nCount specifies more characters or elements than are available, only the characters or elements from cstring[nPos] to the end of cstring are returned (Like Delphi function Copy.)

 

Str (<nValue>, <nLen>, <nDec>) -> string

Returns a string of the length nLen, with the number formatted with nDec digits after the decimal dot.

 

StrToInt (<nValue>) -> Integer

Convert a string to an integer (Like Delphi).

 

StrTran (<cBasestring>, <cFindstring>, <cReplacestring>) -> string

Replace all occurences of cFindString in cBaseString with cReplaceString.

 

Time () -> Date

Returns the actual time.

 

Trim (<cstring>) -> string

Trims leading and trailing spaces and control characters from the given string (Like