INTRODUCTION

The 4xChart, or as we refer to it in the manual "the chart", is an advanced, interactive technical analysis charting tool.

4XCHART DESKTOP USERS ONLY: DESKTOP MAIN MENU

This section applies to members using the 4xChart Desktop.

The Desktop Main Menu controls functions for the overall Desktop software, rather than individual charts. Here is a breakdown of the Menu's features:

General

  • Add Single Chart: This will add a new chart to your layout. You will be prompted to select the cross rate and then the time frame. This can be adjusted once the chart is launched.
  • Add New Single Chart from Template: This allows you to open an individual chart template which is a single chart that is already saved in your settings.
  • Show Streaming Quote Window: This will open Streaming Quote, a window that displays real-time, self-updating quotations, including the Bid/Ask, Today's Change, and Day High/Low with color-coded instantaneous updates. Export of DDE data is accessible from this window.
  • DDE/Live Data Update:
    This allows the export of Streaming data from the Quote Window. To use the DDE/Live Data Update function follow these steps:
    1. Open the Streaming Quote Window (this is launched from the drop down menu listed under "General".
    2. Using your mouse, right click in the window on the numeric value you would like to export.
    3. A small popup window will appear in which you must highlight the selection "DDE".
    4. A drop down menu will appear and you must scroll with your mouse, highlight, and left click to select what you would like to export; the selected cell, row, column, or entire table.
    5. Once you make a selection, the program will copy this data.
    6. Open Excel.
    7. In Excel select the cell(s) within which you would like the data to update.
    8. From the menu at the top of Excel, select "Edit".
    9. A drop down menu will appear, select "Paste".
    10. The selected data will be pasted into the cell(s) and will continuously update as long as the Streaming Quote Window is opened.
  • Exit: This will close 4xChart Desktop program.

Group

  • New: To open space for a new Group, select the "New" option
  • Open: To open an existing Group, one that you have already saved, select "Open".
  • Save: This allows you to save a Group that either:
    1. Group has never been saved. If Group is new and has never been saved; you will be prompted to name the group you would like to save.
    2. Group is not new, it is an existing group (already named and saved) then you will be saving any new settings and adjustments that were applied to the charts.
  • Save As: This allows an existing Group to be saved as a new Group. You will be prompted to apply a new name to the Group.
  • Backup: This allows you to Backup all of your Groups to our centralized server. Just like making copies of critical documents, it is a good idea to periodically create a backup copy of your charts. This will enable you to retrieve your chart preferences from the central servers if you cannot access your computer. To use this feature, simply highlight and click on the "Backup" selection, the backup will occur automatically, and you will see a popup message confirming your Backup.
  • Restore: Restore will allow you to retrieve the settings for your 4xChart Desktop based on the last time you Backed-up to the central servers. If you have changed any saved chart settings on your computer since the last date a Backup was created, restoring your work will overwrite these saved changes.

Setting

  • Time Zone: From the drop down menu, choose from "New York Time (US & Canada Eastern Time)" or "Local Time," which will adjust to the time zone set on your computer.
  • Data Feed: Using the drop down menu you can choose from 2 datafeeds. With your mouse, highlight and click on the datafeed you would like to use.

Windows

The Windows feature allows you to re-arrange the charts at the click of a bottom. By highlighting and clicking on the items in the dropdown menu, you can instantaneously manipulate the charts to Cascade, Tile in 1 Column, Tile in 2 Columns, or Tile Vertically. Additionally, you can switch between which the individual chart you wish to make active by clicking on the chart identified in the drop down menu.

Help

  • Help is your link to the 4xChart instruction manual.
  • Help offers 4xChart product information.

4XCHART DESKTOP USERS ONLY: INTELLISCRIPTTM

This section applies to members using the 4xChart Desktop.

The Desktop IntelliScript is a programming feature that allows users to draft and create their own Customized Alerts and Indicators. The IntelliScript is designed for the advanced chartist, with some programming experience.

Price Alert

You can add an alert (s) that will pop-up when a rate moves above or below a specified price. We call these basic alerts Price Alerts. When an alert is reached a pop-up menu will appear on your screen, as will a sound. There are two methods you can use to set price alerts.

    Method I: Set Price Alert inside chart
    1. Scroll in a chart with your mouse.
    2. Use the Price Value (PV) box on the bottom of the chart to identify the desired alert value in the chart.
    3. Rest your cursor on the price and then right click with your mouse on the chart.
    4. A window will pop up with many choices; highlight and select 'IntelliScript'.
    5. Then another pop-up menu will appear, please select "Add Price Alert"
    6. From here, scroll into the new window and select the price either "Above" or "Below" the selected price, or select "Price At" This last option allows you to choose at what price you wish the alert to be met.
    7. When alert is met, a window will pop up to announce the alert.


      Method I: Set Price Alert inside chart.

    Method II: Set Price Alert using Streaming Quote window

    Method II allows you to set an exact price alert by typing the price in manually.

    1. Open the Streaming Quote Window (accessed from the Desktop’s main window, in the drop down menu under "General").
    2. Using your mouse, right click on the row of a symbol for which you wish to add a price alert, and a pop up window will appear. Highlight and select "Price Alert" as shown in Figure 1.


      Figure1: Setting Price Alerts from the Streaming Quote Window.
    3. A new window will pop up and all you need to do is enter the value for when you wish to receive a Price Alert.

    Delete Price Alerts

    1. From the "IntelliScript" drop-down menu select 'Delete Price Alert'.
    2. Another window will appear with a list of current Price Alerts set in your system.
    3. With your mouse, scroll over and highlight the Price Alert you would like to delete.
    4. Left click with your mouse on the highlighted selection and the Price Alert will automatically be deleted.

Crossover Alert

You can set up an alert to let you know when 2 different indicators intersect, this would be a Crossover Alert.

Here is an example to help explain the steps in setting a Crossover alert.

Disclaimer: The following examples do not reflect real trade strategies. They are designed for syntax demonstration purpose only.

Example: I want the chart to alert me when 5-period EMA crosses with the 10-period EMA on the EUR/USD 5-minute 12-hour chart.

  1. Add both the 5-period EMA and 10-period EMA indicators on the EUR/USD 5-minute 12-hour chart.
  2. Use your mouse to left click on the colored square, located to the left of the EMA(5), as shown in Figure 1 Set Cross Over Alert. Then click on option "Set Cross Over Alert with". You will see a menu offering a choice of indicators that are actively on the chart for which you can choose one to be used in a crossover alert/signal. Select EMA(10) in this case. See Figure 1 Set Crossover alert image below.


    Figure 1. Set Crossover alert.
  3. The IntelliScript feature will pop up with the cross over syntax already in place in the Expression box, see Figure 2. Apply Crossover Alert.
  4. You can enter a name for this IntelliScript next to the box "Name:" For example, we have entered "EMA Crossover" in the screenshot below.
  5. Now you will to activate and apply this IntelliScript Crossover Alert by attaching it to the EUR/USD 5-minute 12-hour Data Series. Select "EUR/USD(5min. 12hr.)" next to the "Attach" button if this is not already selected. Click on the "Attach" button. Please check the bottom left corner of the IntelliScript window to see the Status of your actions. You will need to wait until this Status bar reads: "Calculation is complete. The script is attached to the chart." Once you see this, you can close the IntelliScript feature by clicking on the "Close" button.


    Figure 2. Apply Crossover Alert.

Custom Alert

This section explains how to use the IntelliScript to draft a very simple alert.

Disclaimer: The following examples do not reflect real trade strategies. They are designed for syntax demonstration purpose only.

Example: I want the chart to alert me add a buy entry signal when the current MACD(12,26,9) on a 2-hour USD/JPY chart goes from negative to positive across the zero line.

  1. First you need to open the IntelliScript's Alert window you have two options:
    1. Go to the main window and select Click on "IntelliScript", then from the drop down menu select "Add Customized Alert"
    2. Inside a chart, select the "A" icon, it looks like this:
  2. The syntax for this example requires an IF statement. You can add the basics of an IF statement by clicking on the "IF THEN" button in the "Add Advanced Script to Expression" section.
  3. The MACD(12,26,9) > 0 is the condition for the IF statement. So now move your mouse to the big box below the "Expression" section, and click on the position to the right of the open parenthesis. See Figure 1. Setting up a simple Alert.

    Figure 1. Setting up a simple Alert.
  4. Now you need to add the indicator MACD(12,26,9) to the Expression. In the "Add Indicator to Expresion" section, under the dropdown menu under "Select Indicator", find "MACD" and click on it. Then select "Close" under the "Apply to" menu. Enter 12, 26, and 9 in the boxes below the "Parameters" menu. Enter 0 under the "Displacement" menu. Now click on "Add". Below, you can review Figure 2. Setting up a simple Alert…continued.
  5. The MACD(12,26,9) is now added to the expression. Type "> 0" next to the syntax MACD[0](Close, 12, 26, 9). Then complete the rest of the syntax so the Expression box will display:
    IF (MACD[0](Close, 12, 26, 9) > 0) THEN
      AddBuyEntry
    ENDIF

    IF (MACD[0](Close, 12, 26, 9) < 0) THEN
      AddSellEntry
    ENDIF
  6. Type a name for this alert next to the "Name:" field (just above the Expression box).
  7. If you want to generate historical alerts, please check the box "Generate Historical Alert" in the "Set Alert Properties" section.
  8. Now you want to activate this IntelliScript by attaching it to the USD/JPY 2-hour 10-day Data Series. Select "USD/JPY(2 hr. 10 day)" next to the "Attach" button (if USD/JPY(2 hr. 10 day) does not appear in the drop down, go to Step 9). Click on the "Attach" button. Please check the bottom left corner of the IntelliScript window see the Status of your actions. You will need to wait until this Status bar reads: "Calculation is complete. The script is attached to the chart." Once you see this, you can close the IntelliScript feature by clicking on the "Close" button.

    Please wait until the status line in red color on the bottom shows: "Calculation is complete. The script is attached to the chart." Now you can close the IntelliScript feature by clicking on the "Close" button.

    Figure 2. Setting up a simple Alert…continued.

    1. (Optional Step): If the Data Series USD/JPY(2 hr. 10 day) does not appear as specified in Step 8 above, then you will need to use the Organizer tab. First, click on the "Save" button under the "Alert" tab. Now click on the "Organizer" tab. See Figure 3. Adding Alert to other symbols and time scales.
    2. (Optional Step): The alert name "MACD Alert" should appear under "My IntelliScript". Highlight "MACD Alert".
    3. (Optional Step): In the "Attach Symbol/Time Scale" section, select "USD/JPY" in the first dropdown menu and "2 Hour" in the second dropdown menu. Click on the "Add>>" button. Now Data Series "USD/JPY(2 hr. 10 day)" should appear in this section.
  9. Click on "Close" to exit the IntelliScript tool.

    Figure 3. Adding Alert to other symbols and time scales.

Send Email Alert

Now you have learned how to create price alerts, crossover alerts, and customized alerts. This section explains how to use the IntelliScript tool to send emails to you or send SMS messages to your cell phone.

For any alert drafted using IntelliScript, being sent out via email, there is a limit of 3 email addresses. The alerts will only reference the addresses listed in the mail list defined in the mail list as defined in the "Email" tab. You can list one email address in the "To:" field, one email address in the "CC:" field, and one email address in "BCC:" field, totaling 3 addresses.

Disclaimer: The following examples do not reflect real trade strategies. They are designed for syntax demonstration purpose only.

     Default Email List

To send an email or SMS message using the alerts from the IntelliScript, you must enter your email address in the default mailing list. For any alert drafted using IntelliScript being sent out via email, there is a limit of 3 email addresses. The alerts will only reference the addresses listed in the mail list as defined in the "Email" tab. You can list one email address in the "To:" field, one email address in the "CC:" field, and one email address in "BCC:" field, totaling 3 addresses. If you draft syntax and use the "SendMail" command, this command will only send mail to those listed in the mail list defined in "Email" tab. Important things to note:

  1. There is a maximum of 3 email addresses that may be entered in the Mail List
  2. Only one email address may be entered in the "To:" field
  3. Only one email address may be entered in the "CC:" field
  4. Only one email address may be entered in the "BCC" field

Please follow these steps to add your email addresses:
  1. Open the IntelliScript window and click on the tab labeled "Email".
  2. Enter your email address in the "To:" field and select the "Add" button, as demonstrated below.
  3. If you want you can send the email to two other addresses, just type in the email addresses in the "CC:" and "BCC:" fields.

  Send Emails for Price Alert

If you have price alerts added (alerts added by clicking in the chart, not through the IntelliScript), to receive an email when a price alert is generated, you simply follow the instructions listed above for "Default Email List" to enter your email address. Then check the box "Send email when Price Alert achieved" located on the "Email" tab within the IntelliScript. See the image below:

  Send Emails for Buy/Sell Positions

If you have created a customized alert by drafting syntax from the "Alert" tab, to receive emails when a buy/sell position is generated, check the box "Send Email at Buy/Sell" in the "Set Alert Properties". Please note the alert from which you wish to generate email alerts needs to be active, meaning the alert’s syntax needs to be visible in the "Expression" box.

Please note by checking this option, the IntelliScript tool will send emails to the email addresses defined in the Default Email List section when one of the following conditions is generated as defined in your IntelliScript syntax:

AddBuyEntry
AddBuyExit
AddSellEntry
AddSellExit

  Send Emails by Writing Syntax in IntelliScript

This option gives you the most flexibility for sending emails from your IntelliScript. You call the "SendMail" function anywhere in your syntax when you wish to send an email at that condition. The SendMail function will only work if you entered an email address in the Default Email list (see above for directions). The syntax for "SendMail" is:

SendMail "RSI over 80"

The syntax example below will send an email whenever the RSI reaches over 80. You will enter such syntax in the "Expression" box under the "Alert" tab.

IF RSI[0](Close, 14) > 80 THEN
    SendMail "RSI over 80"
ENDIF

Important Notes:

  1. Entering email address in the syntax will not be recognized.
  2. This software does not support the ability to send more than 3 email messages simultaneously.
  Send SMS Messages to Your Cell Phone

Note most cellular phones from the United States can receive text messages through text email. This is probably true for cellular phones in most other countries in the world. You can check to see if your current cell phone plan already includes such a service. If it does not, you may add such a plan at a low monthly fee, please check with your cell phone provider for text messaging services.

Below is a sampling of email addresses:

Major US providers:  
Sprint PCS:
Voice Stream (T-Mobile):    
AT&T (M Life):
Nextel:
Verizon:
1231231234@messaging.springpcs.com
1231231234@voicestream.net
1231231234@mobile.att.net
1231231234@messaging.nextel.com
1231231234@vtext.com
 
Major Canadian providers:  
Telus Mobility:
Rogers AT&T (Canada):
1231231234@msg.telus.com
1231231234@pcs.rogers.com

Please substitute your real phone number where 1231231234 is written above. Instead of entering a real email address in IntelliScript, enter your cell phone text email address. This way, when an alert is generated, you will receive a text message on your cell phone!

Syntax Help

Syntax Help is designed as a basic guide to assist you with writing IntelliScript syntax in the IntelliScript Alert feature.

Disclaimer: The following examples do not reflect real trade strategies. They are designed for syntax demonstration purpose only.

     Basic Concepts
 
1. What is IntelliScript?
2. How does the IntelliScript run?
3. What is a Data Series?
4. How many IntelliScripts can be attached to each Data Series and vice versa?
5. What are Position Controls?
6. What is the scope of a variable?

1.  What is IntelliScript?

The IntelliScript is designed to build alerts, strategies, and indicators based on both historical and real-time data. You can write your own expressions using "IF THEN" conditional branch, "WHILE" loops, variable declarations, buy/sell signals, as well as many other means. You will be able to quickly reference all of the available indicators and even build your own indicators.

2. How does the IntelliScript run?
  1. Real-time Data Calculation
    Each time when a new ticker price changes on the chart, this will trigger all the IntelliScripts attached to the chart to execute for the last price bar on the chart. If the condition you defined in the script is satisfied, you will get a corresponding signal on the chart for the last price bar, which is also defined by you in the script.


  2. Historical Data Calculation
    First we must suppose you select the option "Generate Historical Alert" checkbox within the IntelliScript editor or activate this option by right clicking in a chart and select "Generate Historical Alerts" once a script is attached to a chart. Once selected, this script will run from the first bar to the last bar, one bar at a time. If the condition you defined in the script is satisfied, you will get a corresponding signal on the chart, which is also defined by you in the script.

    Please keep in mind when using the IntelliScript to draft your own signals, there will be a difference between real-time generated signals versus historical generated signals. Real-time generated signals are generated using tick by tick data (unless you have checked the option "Calculate on Close Only" in the IntelliScript editor). So a signal can be generated in the middle of a real-time bar. However, for historical signals, we do not have tick by tick data for each of the historical bars so historical signals are only calculated using the close price of each bar. Depending on your syntax, this difference is likely to cause differences in the performance comparison.
3. What is a Data Series?

A Data Series is defined by the combination of a symbol and its Time Scale and Period. For example, when you open a chart for "EUR/USD 10-minute 2-day" and when you export the data, you will get a data stream similar to:

"Date","Time","O","H","L","C"
10/29/2003,1030,1.1685,1.1702,1.1685,1.17
10/29/2003,1040,1.17,1.1702,1.1694,1.17
10/29/2003,1050,1.17,1.1707,1.1693,1.1695
......
......
......
10/31/2003,1010,1.1613,1.1634,1.1613,1.1628
10/31/2003,1020,1.1628,1.1651,1.1628,1.164
10/31/2003,1022,1.164,1.1642,1.1636,1.1636

We call this stream of data one unique Data Series. Both Customized Indicator and Customized Alert calculations are essentially based on this span of data. Note a Data Series for "EUR/USD 10-minute 2-day" is different from a Data Series for "EUR/USD 15-minute 2-day". A Data Series for "EUR/USD 10-minute 2-day" is more obviously different from a Data Series for "USD/CHF 10-minute 2-day".

Generally you attach an IntelliScript to a chart, but internally, the IntelliScript is attached to the Data Series underlying the chart. In other words, when you attach an IntelliScript to a "EUR/USD 10-minute 2-day" chart, in reality, this IntelliScript is attached to the Data Series "EUR/USD 10-minute 2-day". This also means if you open two charts and both of them are showing "EUR/USD 10-minute 2-day", if you attach an IntelliScript to one of the charts, you will see that this IntelliScript is actually attached to both of these charts. Also understand that since the script is attaching to the Data Series, if you attach the Data Series "EUR/USD 10-minute 2-day" and have no such chart opened, if the script's conditions are met, you will still receive an alert notification.

4. How many IntelliScripts can be attached to each Data Series and vice versa?

You can write an unlimited number of IntelliScripts, all of which can be saved within the IntelliScripts organizer. Each IntelliScript can be attached to an unlimited number of Data Series. Each Data Series can also have an unlimited amount of IntelliScripts attached.

5. What are Position Controls?

By default, you can only have one opened position at a time. For example, if your IntelliScript generates a buy entry position 10 minutes ago, then even if another buy entry position is satisfied now on the chart, you will not see this second buy entry position. At this point, only a sell entry or a buy exit position can be generated. However, keep in mind you can adjust the script and add a special parameter to enable a continuous buy entry position.

6. What is the scope of a variable?

The scope of a variable is defined by using one of the three declaration keywords: Share, Global, or Local. Here are the differences between them:

A. Share: when a variable is declared as a share variable, every single IntelliScript can access this variable. For example, suppose you make the following declaration:

Share myVarShare

Even if you attach this script to "EUR/USD 1-minute 2-hour", you can still reference myVarShare's value in a different script attached to "USD/CHF 5-minute 12-hour".

B. Global: when a variable is declared as a global variable, only the Data Series in which the script is attached can access this variable. Suppose you make the following declaration:

Global myVarGlobal

If you make this declaration in a script and attach this script to "EUR/USD 1-minute 2-hour", then you can only reference the value of myVarGlobal in all the scripts attached to the same Data Series "EUR/USD 1-minute 2-hour". You cannot reference the value of myVarGlobal in a script attached to a different Data Series, such as in a script attached to "USD/CHF 1-minute 2-hour".

C. Local: as the name indicates, local variables can only be accessed within the particular script in which the variable is declared.

For example, suppose you make the following declaration:

Local myVarLocal

If you attach this script that has this declaration to "EUR/USD 1-minute 2-hour", then you can only reference this variable in this script only. You cannot reference the value of myVarLocal in a different script, even if this second script is attached to the same Data Series "EUR/USD 1-minute 2-hour".

  Syntax Examples

Disclaimer: The following examples do not reflect real trade strategies. They are designed for syntax demonstration purpose only..

 

  Example 1:

    

Purpose:

Generate a buy alert when 5-period EMA crosses from below 10-period EMA to above 10-period EMA.

Expression Syntax:

         IF CrossUp(EMA(Close, 5), EMA(Close, 10)) THEN
       AddBuyEntry
  ENDIF

Points to note:

EMA(Close, 5): This statement says that the EMA is calculated using the Close price of each bar and 5 is the EMA period. A further example MACD(high, 12, 26, 9) says that the MACD is calculated using the High price of each bar and 12, 26, and 9 are the three parameters for this MACD.

AddBuyEntry: This command* will generate a buy position by painting an arrow pointing upward on the chart. The corresponding sell position is command AddSellEntry.

*In programming language a "Command" is an action type of statement. In this case it is a specific order to the Intelliscript software from you, the user.

An "IF … THEN … ELSE … ENDIF" structure is the basic structure for most alert conditions. The basic syntax for this statement is:

         IF (condition) THEN
       command
  ENDIF

In this structure, condition** is a statement that evaluates if the statement is either true or false at a given time. When a condition is true, the command is executed. An extension of this structure is the "ELSE" statement:

         IF (condition) THEN
       command1
  ELSE
       command2
  ENDIF

In this extension structure, when a condition is true, command1 is executed; when the condition is false, command2 is executed.

** In programming, the condition is a type of statement that controls the flow of the IF-THEN-ELSE statement, or alert in this case, based on whether certain conditions are met. The statement is normally set up in the form: If (specific condition is met) Then (do this action) Else (do this if the condition is not met).

CrossUp(EMA(Close, 5), EMA(Close, 10)): This statement uses the special CrossUp function, which is true if its first parameter crosses from below the second parameter to above the second parameter. The opposite function is CrossDown(EMA(Close, 5), EMA(Close, 10)).

  Example 2:

    

Purpose:

Generate a buy alert when the K-line of Slow Stochastic (with 5, 6, and 10 as the parameters) crosses from below the D-line of Slow Stochastic to above the D-line, and generate a sell alert when the same K-line crosses from above the same D-line to below the D-line.

Expression Syntax:

         IF (SlowK(Low, 5, 6, 10) > SlowD(Low, 5, 6, 10)) THEN
       AddBuyEntry
  ELSE
       AddSellEntry
  ENDIF

Points to note:

This example demonstrates the "ELSE" extension structure. Please refer to Example 1 for more information on the "IF … THEN … ELSE … ENDIF" structure

SlowK(Low, 5, 6, 10): this statement says that the Slow Stochastic's K-line is calculated using the Low price of each bar and 5, 6, and 10 are the three parameters for the K-line.

  Example 3:

    

Purpose:

Generate a buy entry alert when the upper Bollinger Band crosses with the previous bar's high price, and close the buy entry alert (a buy exit alert) when the lower Bollinger Band crosses with current bar's low price.

Expression Syntax:

         IF (BLG_U[0](Close, 20, 2) < High[1]) THEN
       AddBuyEntry
  ENDIF
 
  IF (BLG_L[0](Close, 20, 2) > Low[0]) THEN
    AddBuyExit
  ENDIF

Points to note:

Up until now we have assumed that each condition requires the indicator calculated on the current bar. If an alert requires the indicator calculated on the previous bar, we then need to use the "displacement" parameter.

High[1]: This statement refers to the high price of the previous bar. [0] indicates the current bar. Note that [0] can be omitted. [1] indicates the previous bar. [2] indicates you want to use the second bar to the left of the current bar.

BLG_U[0](Close, 20, 2): This statement says that the Bollinger Band's upper band is calculated using the close price of each bar and 20 and 2 are the two parameters for the Bollinger Band. In this expression, we once again introduced the displacement parameter [..]. By default, this parameter is omitted in the syntax, which means the indicator is applied to the current bar. BLG_U[0](Close, 20, 2) is equivalent to BLG_U(Close, 20, 2).

AddBuyExit: This command will close the previous buy entry position. The corresponding sell position's command is AddSellExit.

  Example 4:

    

Purpose:

Generate a buy entry alert when the upper Bollinger Band crosses with the previous bar's high price. Set a stop loss for this buy entry alert if the current price is 75 pips below the buy entry price.

Expression Syntax:

         Global MyBuyStop = -1
 
  IF (BLG_U[0](Close, 20, 2) < High[1]) THEN
       AddBuyEntry
  ENDIF
 
  MyBuyStop = LastTradePrice[0] - .0075
 
  IF (Close < MyBuyStop) THEN
    AddBuyExit AT MyBuyStop
  ENDIF

Points to note:

This alert introduces to us how to declare variables† and how to set stop losses.

Global MyBuyStop = -1: This statement makes the initial declaration for variable MyBuyStop. Note that the word "MyBuyStop" is arbitrary. One can create any single word after the Global keyword as the variable name. We introduce the word Global as the necessary language to be used in the declaration of the variable. The syntax for Global is:

Global variableName = expression

The above statement has two effects: 1. Declare variable named variableName; 2. Initialize this variable with the value evaluated by expression, in the example above, expression is -1..

LastTradePrice: This keyword evaluates to the entry price of the last buy or sell position. Note that the displacement parameter is applicable to this keyword, LastTradePrice. Another example is LastTradePrice[1] which evaluates to the entry price of buy or sell position just prior to (one position to the left of) the last generated entry price of buy or sells position.

AT: By default, commands AddBuyEntry, AddBuyExit, AddSellEntry, AddSellExit, or AlertOnly cause the event to happen at the price when the condition is met. We refer to these 5 commands as the addCommand. The AT keyword enables the above commands to occur at the price following the AT keyword or expression. The formal syntax for AT is:

addCommand AT expression

The list of available addCommand is:

AddBuyEntry
AddSellEntry
AddBuyExit
AddSellExit
AlertOnly

†In programming, a variable is uniquely named by the programmer (you the user) and is a structure that holds data, or your statement in this case. It holds the data assigned to it until a new value is assigned.

  Example 5:

    

Purpose:

Generate a sell entry alert when the lower Bollinger Band crosses with the previous bar's low price. Set a stop loss for this sell entry alert if the price goes 30 pips above the sell entry price. Exit the sell entry alert if the price goes 75 pips below the sell entry price.

Expression Syntax:

         Global MySellStop = -1
Global MySellProfit = -1
 
  IF (BLG_L[0](Close, 20, 2) > Low[1]) THEN
       AddSellEntry
  ENDIF
 
  MySellStop = ABS(LastTradePrice[0]) + Point(30)
 
  MySellProfit = ABS(LastTradePrice[0]) - Point(75)
 
  IF (LastTradePrice[0] < 0 and Close[0] > MySellStop) THEN
    AddSellExit AT MySellStop
  ENDIF
 
  IF (LastTradePrice[0] < 0 and Close[0] < MySellProfit) THEN
    AddSellExit AT MySellProfit
  ENDIF

Points to note:

This example shows us how to set a stop loss for a sell position and how to exit the sell position if the profit target is reached.

ABS(LastTradePrice[0]): A sell position is the opposite of a buy position. Therefore, LastTradePrice for a sell position will always evaluate to a negative value. In order to return its positive value, we can use the ABS(x) function, which returns the absolute value of the input. For example, ABS(-10) is equal to 10. ABS(20) is equal to 20.

Point(75): Here we introduce a special short-cut function so that this same alert can be applied to JPY related currency pairs as well as other pairs. For JPY related currency pairs, this function 0.75. For all other currency pairs, this function evaluates to 0.0075.

  Example 6:

    

Purpose:

Draws a customized indicator which displays as two colors. If the close price is greater than the open price, the indicator is displayed as a blue line; otherwise, the indicator is displayed as a red line. The value of the indicator is the percentage difference of each bar's close price and open price in reference with the close price.

Expression Syntax:

         // Define a customized indicator called "MyInd"
Indicator MyInd
MyInd.Channel = 1

IF Close > Open THEN
       MyInd.Color = "Blue"
MyInd.Value = (Close - Open) / Close * 100
  ELSE
       MyInd.Color = "Red"
MyInd.Value = (Open - Close) / Close * 100
  ENDIF
 
  MyInd.Draw

Points to note:

// When a line of script is started with these two forward slashes, it means this line is ignored by the IntelliScript engine. This is called commenting. It is a convenient way to add your note in your script.

Indicator MyInd: This is how you define the name of your customized indicator. The name of the indicator can be any word you create. The declaration's formal syntax is:

Indicator indicatorName

MyInd.Channel = 1: This syntax tells the chart in which channel to draw this indicator. When the channel is equal to 0, the indicator is drawn in the same channel as the price bars (the Price Channel). When the channel is equal to 1, the indicator is drawn in the first lower channel below the Price Channel.

MyInd.Value = (Close - Open) / Close * 100: To assign the calculations to the customized indicator, you use the .Value property.

MyInd.Color = "Blue": This syntax assigns a blue color to the customized indicator. The available colors are "Yellow", "Green", "Black", "Purple", "Blue", and "Red"

MyInd.Draw: Only if you write this syntax in the end, this customized indicator will be drawn on the chart.

  Example 7:

    

Purpose:

Send an email when an alert is generated.

Expression Syntax:

         IF CrossUP(EMA(Close,5) , EMA(Close,10)) THEN
       AddBuyEntry "EMA Cross Up"
SendMail "EMA Cross UP", "johnsmith@yahoo.com"
  ENDIF
 
  IF CrossDown(EMA(Close,5) , EMA(Close,10)) THEN
    AddSellEntry "EMA Cross Down"
SendMail "EMA Cross Down", "MailList"
  ENDIF

Points to note:

AddBuyEntry "EMA Cross Up": This syntax shows you that you can add your own popup messages when a buy entry position is added to the chart. You can substitute any text you want inside the two double quotes.

SendMail "EMA Cross Up", "johnsmith@yahoo.com": This syntax shows you that you can send an email when an alert is generated. The first double quotes contain the subject for the email. The second double quotes contain the email address. Note instead of writing an email address every time when you write the script, you can configure a list of email addresses under the Organizer tab in the Default Email List section. Then you can simply use "MailList" as the second parameter.

  Example 8:

    

Purpose:

Generate a buy alert when 5-period EMA crosses from below 10-period EMA to above 10-period EMA and the EUR/USD 1-Hour chart is currently in a buy position at the same moment. Generate a sell alert when 5-period EMA crosses from above 10-period EMA to below 10-period EMA and the EUR/USD 1-Hour chart is currently in a sell position at the same moment. Please read "Points to Note" below to learn more details.

Expression Syntax:

         Local OneHourEURTradePos
OneHourEURTradePos = getValue("EUR/USD,1 Hour", getTradePrice(0))
 
  IF CrossUP(EMA(Close,5) , EMA(Close,10)) AND (OneHourEURTradePos > 0) THEN
       AddBuyEntry
  ENDIF
 
  IF CrossDown(EMA(Close,5) , EMA(Close,10)) AND (OneHourEURTradePos < 0) THEN
       AddSellEntry
  ENDIF
 
Points to note:

This example assumes that the syntax above is attached to a data series that is not a EUR/USD 1-hour data series. The purpose is that suppose you have a different strategy written as a customized alert and attached to the EUR/USD 1-hour data series, now you want to generate an alert in a second strategy only when the first strategy is in the same trade. For example, you have attached the script shown in Example 1 to the EUR/USD 1-hour data series. Now you attach this Example 8 script to the EUR/USD 5-minute data series. As a result, this Example 8 script will generate a buy entry position when the 5-period EMA crosses with the 10-period EMA in both the EUR/USD 1-hour data series and the EUR/USD 5-minute data series.

getValue("EUR/USD,1 Hour", getTradePrice(0)): This syntax shows you how to retrieve the current position in a different data series. If the current position on the EUR/USD 1-Hour chart is a buy position, the syntax returns a position number. If the current position on the EUR/USD 1-Hour chart is a sell position, the syntax returns a negative number. If on the EUR/USD 1-Hour, there is no buy or sell position at the moment, the syntax above returns 0.

  Example 9:

    

Purpose:

Generate a log file at the close of each bar for the data series in which the script is attached.

Expression Syntax:

         IF BarClosed() THEN
       LogData "C:\EURUSD.TXT"
  ENDIF

Points to note:

Unlike previous examples, this example does not generate any signals. We use this example to demonstrate how to generate a data file automatically when a bar closes. Suppose this script is attached to a EUR/USD 1-minute chart, then you will be able to log a 1-minute historical data continuously when the chart is open.

BarClosed(): This function returns true when the current bar becomes closed.

LogData: This function takes one parameter: the location of the log file you wish to be saved. In this example, the log file is named EURUSD.TXT and is saved in your local C: drive.

  Example 10:

    

Purpose:

Draw customized Pivot Points (horizontal support and resistance lines) on the chart.

Expression Syntax:

         Local MyPivot, R1, R2, R3, S1, S2, S3
 
         MyPivot = (High[1] + Low[1] + Close[1]) / 3
 
         S1 = MyPivot - (High[1] - MyPivot) //S1 Line
S2 = MyPivot - (High[1] - Low[1]) //S2 Line
S3 = Low[1] - (High[1] - Low[1]) //S3 Line
 
         R1 = MyPivot + (MyPivot - Low[1]) //R1 Line
R2 = MyPivot + (High[1] - Low[1]) //R2 Line
R3 = High[1] + (High[1] - Low[1]) //R3 Line
 
         HLine MyS1 = S1
HLine MyS2 = S2
HLine MyS3 = S3
HLine MyR1 = R1
HLine MyR2 = R2
HLine MyR3 = R3

Points to note:

HLine MyS1 = S1: This syntax creates a horizontal line called "MyS1" on the chart. The value of MyS1 is S1.

Syntax Reference

       # Comments

Sometimes a user wants to add his/her texts in the script as comments, which are ignored by the IntelliScript engine. There are two ways to place comments in IntelliScript.

Syntax 1:
// ...

Remark:
Any content after // and on the same line as // is ignored by IntelliScript. // can comment only one line of script at a time.

Syntax 2:
/* ... */

Remark:
Any content between /* and */ is ignored by IntelliScript engine. In contrast with //, commenting using /* ... */ can cover many lines of script.

Example:
// The script below will add a buy entry
IF (RSI[0](Close, 14) < 20/* This is my RSI condition */ and
    CrossUP(EMA[0](close, 10), EMA[0](Close, 48)) /* This is my EMA condition
*/) THEN
  AddBuyEntry // This is when I place a buy entry
ENDIF


    # Syntax Conventions

The IntelliScript Syntax Reference uses the following conventions in its documentations:

| (vertical bar): Separating syntax items within brackets or braces. You can only choose one of the items.

[ ] (brackets): Optional syntax items. Do not type the brackets in your real syntax.

{ } (braces): Required syntax items. Do not type the braces in your real syntax.


    ABS

Syntax:
Abs({valueExpression})

Parameter:
valueExpression
    Required. Float expression to be evaluated.

Action:
Evaluates to the absolute value of valueExpression. For example, ABS(-10) = 10, and ABS(20) = 20.

Example:
ABS(-50)


    AddBuyEntry

Syntax:
AddBuyEntry [{"messageString"}] [Contract [=] {"nameString"}] [AT [=] {valueExpression} | OVER [=] {valueEpression} | BELOW [=] {valueExpression}]

Arguments:
messageString
    Optional. A string to be displayed in the message box.

Contract
    Optional. A string to identify a specified contract.

AT
    Optional. Float value to specify the entry price level. Note, if you use the AT parameter, the entry price will be added even if price does not reach this value. If you want to enforce that the price must be an attainable price, please use the OVER and BELOW parameters below instead.

OVER
    Optional. Float value to enter as the entry price until the price goes up to this value.

BELOW
    Optional. Float value to enter as the entry price until the price goes down to this value.

Action:
Popup a message box with sound and place a buy arrow on the chart.

Remark:
1: "messageString" is what will popup when the buy entry position is triggered. Use double quote to surround your message.
2: Contract defines which contract this position belongs to. In order to have multiple same directional positions, each position must belong to a different contract. Use double quote to surround your contract names.
3: AT, OVER, and BELOW are mutually exclusive, you cannot use more than one of them at a time. AT will add the position despite whether the valueExpression is an attainable price or not. In contrast, using OVER or BELOW will ensure that the position will only be added if the valueExpression is an attainable price.

Example 1:
IF CrossUP(EMA[0](Close, 5), EMA[0](Close, 10)) THEN
    AddBuyEntry
ENDIF

Example 2:
IF CrossUP(EMA[0](Close, 5), EMA[0](Close, 10)) THEN
    AddBuyEntry "EMA5 Cross UP EMA10" Contract="MyCon1"
ENDIF


    AddBuyExit

Syntax:
AddBuyExit [{"messageString"}] [Contract [=] {"nameString"}] [AT [=] {valueExpression} | OVER [=] {valueEpression} | BELOW [=] {valueExpression}]

Arguments:
messageString
    Optional. A string to be displayed in the message box.

Contract
    Optional. A string to identify a specified contract.

AT
    Optional. Float value to specify the exit price level. Note, if you use the AT parameter, the exit price will be added even if price does not reach this value. If you want to enforce that the price must be an attainable price, please use the OVER and BELOW parameters below instead.

OVER
    Optional. Float value to exit the contract until the price goes up to this value.

BELOW
    Optional. Float value to exit the contract until the price goes down to this value.

Action:
Popup a message box with sound and place a buy exit arrow on the chart.

Remark:
1: "messageString" is what will popup when the buy exit position is triggered. Use double quote to surround your message.
2: Contract defines which contract this position belongs to. In order to have multiple same directional positions, each position must belong to a different contract. Use double quote to surround your contract names.
3: AT, OVER, and BELOW are mutually exclusive, you cannot use more than one of them at a time. AT will add the position despite whether the valueExpression is an attainable price or not. In contrast, using OVER or BELOW will ensure that the position will only be added if the valueExpression is an attainable price.

Example 1:
IF Profit(0) > Point(50) THEN
    AddBuyExit "Take Profit"
ENDIF

Example 2:
IF Loss(0) > Point(30) THEN
    AddBuyEixt "Stop Loss"
ENDIF


    AddSellEntry

Syntax:
AddSellEntry [{"messageString"}] [Contract [=] {"nameString"}] [AT [=] {valueExpression} | OVER [=] {valueEpression} | BELOW [=] {valueExpression}]

Arguments:
messageString
    Optional. A string to be displayed in the message box.

Contract
    Optional. A string to identify a specified contract.

AT
    Optional. Float value to specify the entry price level. Note, if you use the AT parameter, the entry price will be added even if price does not reach this value. If you want to enforce that the price must be an attainable price, please use the OVER and BELOW parameters below instead.

OVER
    Optional. Float Float value to enter as the entry price until the price goes up to this value.

BELOW
    Optional. Float value to enter as the entry price until the price goes down to this value.

Action:
Popup a message box with sound and place a sell arrow on the chart.

Remark:
1: "messageString" is what will popup when the sell entry position is triggered. Use double quote to surround your message.
2: Contract defines which contract this position belongs to. In order to have multiple same directional positions, each position must belong to a different contract. Use double quote to surround your contract names.
3: AT, OVER, and BELOW are mutually exclusive, you cannot use more than one of them at a time. AT will add the position despite whether the valueExpression is an attainable price or not. In contrast, using OVER or BELOW will ensure that the position will only be added if the valueExpression is an attainable price.

Example 1:
IF CrossDOWN(EMA[0](Close, 5), EMA[0](Close, 10)) THEN
    AddSellEntry
ENDIF

Example 2:
IF CrossDOWN(EMA[0](Close, 5), EMA[0](Close, 10)) THEN
    AddSellEntry "EMA5 Cross DOWN EMA10" Contract="MyCon1"
ENDIF


    AddSellExit

Syntax:
AddSellExit [{"messageString"}] [Contract [=] {"nameString"}] [AT [=] {valueExpression} | OVER [=] {valueEpression} | BELOW [=] {valueExpression}]

Arguments:
messageString
    Optional. A string to be displayed in the message box.

Contract
    Optional. A string to identify a specified contract.

AT
    Optional. Float value to specify the exit price level. Note, if you use the AT parameter, the exit price will be added even if price does not reach this value. If you want to enforce that the price must be an attainable price, please use the OVER and BELOW parameters below instead.

OVER
    Optional. Float value to exit the contract until the price goes up to this value.

BELOW
    Optional. Float value to exit the contract until the price goes down to this value.

Action:
Popup a message box with sound and place a sell exit arrow on the chart.

Remark:
1: "messageString" is what will popup when the sell exit position is triggered. Use double quote to surround your message.
2: Contract defines which contract this position belongs to. In order to have multiple same directional positions, each position must belong to a different contract. Use double quote to surround your contract names.
3: AT, OVER, and BELOW are mutually exclusive, you cannot use more than one of them at a time. AT will add the position despite whether the valueExpression is an attainable price or not. In contrast, using OVER or BELOW will ensure that the position will only be added if the valueExpression is an attainable price.

Example 1:
IF Profit(0) > Point(50) THEN
    AddSellExit "Take Profit"
ENDIF

Example 2:
IF Loss(0) > Point(30) THEN
    AddSellExit "Stop Loss"
ENDIF


    AlertOnly

Syntax:
AlertOnly [{"messageString"}]

Arguments:
messageString
    Optional. A string to be displayed in the message box.

Action:
Popup a message box with sound. No arrow is added on the chart.

Remark:
Generates a popup message only. This statement will not place a position on the chart.

Example:
IF (RSI[0](Close, 14) > 80) THEN
    AlertOnly "RSI14 Over 80"
ENDIF


    And

Syntax:
{Boolean expression1} AND {Boolean expression2}

Parameters:
Boolean expression1, Boolean expression2
    Both are required.

Action:
If boolean expression1 and boolean expression2 are both TRUE, Otherwise (at least one of expressions is FALSE) return FALSE.

Example:
2 > 0 AND 15 > 10 //will return TRUE

2 > 0 AND 3 < 0 //will return FALSE


    BarClosed

Syntax:
BarClosed()

Remark:
During the current calculation, if the bar is closed, return boolean expression TRUE.

Example:
IF BarClosed() THEN
    AlertOnly "5 min closed"
ENDIF


    BuyStopLoss

Syntax:
BuyStopLoss {valueExpression}

Argument:
valueExpression
    This is the stop loss amount you set: a float value.

Action:
When you have a buy entry position on the chart, this command will calculate the stop loss. If the stop loss is greater than valueExpression points, the IntelliScript engine will issue the AddBuyExit command automatically for you.

Example:
IF CrossUP(EMA(Close,5) , EMA(Close,10)) THEN
    AddBuyEntry
ENDIF

BuyStopLoss Point(30)


    BuyTakeProfit

Syntax:
BuyTakeProfit {valueExpression}

Argument:
valueExpression
    This is the profit amount you set: a float value.

Action:
When you have a buy entry position on the chart, this command will calculate the current profit the position has generated. If the current profit is greater than valueExpression points, the IntelliScript engine will issue the AddBuyExit command automatically for you.

Example:
IF CrossUP(EMA(Close,5) , EMA(Close,10)) THEN
    AddBuyEntry
ENDIF

BuyTakeProfit Point(50)


    CrossDOWN

Syntax:
CrossDOWN({indicatorExpression1}, {indicatorExpression2})

Parameter:
indicatorExpression1
    Required. This is the first indicator parameter, a float expression.

indicatorExpression2
    Required. This is the second indicator parameter, a float expression.

Action:
When {indicatorExpression1} is crossing from above indicatorExpress2 to below indicatorExpress2, return boolean expression TRUE. Otherwise, return Boolean expression FALSE.

Example:
IF CrossUP(EMA(Close,5) , EMA(Close,10)) THEN
    AddBuyEntry "EMA Cross Up"
    SendMail "EMA Cross UP", "john@hotmail.com"
ENDIF

IF CrossDown(EMA(Close,5) , EMA(Close,10)) THEN
    AddSellEntry "EMA Cross Down"
    SendMail "EMA Cross Down", "MailList"
ENDIF


    CrossUP

Syntax:
CrossUP({indicatorExpression1}, {indicatorExpression2})

Parameter:
indicatorExpression1
    Required. This is the first indicator parameter, a float expression.

indicatorExpression2
    Required. This is the second indicator parameter, a float expression.

Action:
When {indicatorExpression1} is crossing from below indicatorExpress2 to above indicatorExpress2, return boolean expression TRUE. Otherwise, return Boolean expression FALSE.

Example:
IF CrossUP(EMA(Close,5) , EMA(Close,10)) THEN
    AddBuyEntry "EMA Cross Up"
    SendMail "EMA Cross UP", "john@hotmail.com"
ENDIF

IF CrossDown(EMA(Close,5) , EMA(Close,10)) THEN
    AddSellEntry "EMA Cross Down"
    SendMail "EMA Cross Down", "MailList"
ENDIF


    Enter_Open

Syntax:
Enter[{0 | 1 | 2 | 3 | ...}]
or
Open[{0 | 1 | 2 | 3 | ...}]
("Enter" and "Open" are interchangeable, they are two names for the same function)

Parameter:
{0 | 1 | 2 | 3 | ...}
    Required. This is the index of the bar counted to the left from the current bar (the index of the current bar is 0).

Action:
Returns the Open price of the bar specified by the parameter, counted from the right to the left.

Example:
Open[0] //returns the Open price of the current bar.

Open[25] //returns the Open price of the 25th bar to the left of the current bar.


    FOR_NEXT

Syntax:
FOR counter {=} start {TO} end [Step step]
    {statement
      [statement
        ...]}
NEXT

Arguments:
counter
    Required. Numeric variable used as a loop counter.

indicatorExpression2
    Required. This is the second indicator parameter, a float expression.

start
    Required. Initial value of counter.

end
    Required. Final value of counter.

Step
    Optional. Amount counter is changed each time through the loop. If not specified, counter will be increased by one each time through the loop.

Remark:
Repeats a group of statements a specified number of times.

Example 1:
Local i
FOR i = 1 TO 10 Step 2
    IF (High[i] < Close) THEN
      AlertOnly "Current Close is higher than High[" + i + "]"
    ENDIF
NEXT


    GetBarDate

Syntax:
GetBarDate({0 | 1 | 2 | 3 | ...}}

Parameter:
{0 | 1 | 2 | 3 | ...}
    Required. This is the index of the bar to the left of the current bar.

Action:
Returns the close date of the nth bar to the left of the current bar in Integer format.

Example:
// If the current bar closes on 10/30/2003, GetBarDate(0) returns 20031030
IF GetBarDate(0) = 20031030 THEN
    AlertOnly "This is my birthday!"
ENDIF


    GetBarTime

Syntax:
GetBarTime({0 | 1 | 2 | 3 | ...})

Parameter:
{0 | 1 | 2 | 3 | ...}
    Required. This is the index of the bar to the left of the current bar.

Action:
Returns the close time of the nth bar to the left of the current bar in Integer format.

Example:
// If the current bar closes on 11:59PM, GetBarTime(0) returns 2359
IF GetBarTime(0) = 2359 THEN
    AlertOnly "I am sleeping at this time"
ENDIF


    GetBEPrice

Syntax:
GetBEPrice({0 | 1 | 2 | 3 | ...})

Parameter:
{0 | 1 | 2 | 3 | ...}
    Required. This is the index of the trade signal (BuyEntry, SellEntry, BuyClose or SellClose) counted to the left from the rightmost signal (whose index is 0).

Action:
If the specified signal is a BuyEntry, returns signal price. If it is not or non-existent, returns 0.

Example:
GetBEPrice(5) //returns the signal price of the 6th trade signal from the rightmost if that signal is indeed a BuyEntry, otherwise it returns 0.


    GetBXPrice

Syntax:
{0 | 1 | 2 | 3 | ...}

Parameter:
{0 | 1 | 2 | 3 | ...}
    Required. This is the index of the trade signal (BuyEntry, SellEntry, BuyExit or SellExit) counted to the left from the rightmost signal (whose index is 0).

Action:
If the specified signal is a BuyExit, returns signal price. If it is not or non-existent, returns 0.

Example:
GetBXPrice(5) //returns the signal price of the 6th trade signal from the right if that signal is indeed a BuyExit, otherwise it returns 0.


    GetCurrTime

Syntax:
GetCurrTime()

Action:
Returns the current time in String format displayed as hhmmss.

Example:
// If the current time is after 1:00 am, alert me to go to sleep
IF GetCurrTime() = "010000" THEN
    AlertOnly "It's time to go to bed!"
ENDIF


    GetHour

Syntax:
GetHour(TimePoint)

Parameter:
TimePoint
    Required. It is a long integer value returned by function GetTimePoint().

Action:
Returns the hour of the time point (0-24).

Example:
Local tp = GetTimePoint(5) //now tp is a long integer marking the ending time of the 5th bar to the left of the current bar
Local h = GetHour(tp) //b is the hour element of tp, if that bar ended at 3:45pm, then h is 15.


    GetIndexByTime

Syntax:
GetIndexByTime("mm/dd/yyyy HH:MM:SS")

Parameter:
"mm/dd/yyyy HH:MM:SS"
    Required. This is the time of the bar for which you want to return the index.

Action
Returns the index of the bar relative to the current bar that falls at the time specified.

Example:
GetIndexByTime("05/21/2004 05:17:44")


    GetIndexByTimePoint

Syntax:
GetIndexByTimePoint(TimePoint)

Parameter:
TimePoint
    Required. Long integer value returned by function GetTimePoint().

Action
Returns the bar index specified by timepoint. It works like a reverse function of GetTimePoint().

Example:
Local tp = GetTimePoint(5) //tp, the TimePoint, is the ending time of the 5th bar to the left of the current bar
Local b = GetIndexByTimePoint(tp) //b is 5


    GetSEPrice

Syntax:
GetSEPrice({0 | 1 | 2 | 3 | ...})

Parameter:
{0 | 1 | 2 | 3 | ...}
    Required. This is the index of the trade signal (BuyEntry, SellEntry, BuyClose or SellClose) counted to the left from the rightmost signal (whose index is 0).

Action
If the specified signal is a SellEntry, returns signal price. If it is not or non-existent, returns 0.

Example:
GetSEPrice(5) //returns the signal price of the 6th trade signal from the rightmost if that signal is indeed a SellEntry, otherwise it returns 0.


    GetSXPrice

Syntax:
GetSXPrice({0 | 1 | 2 | 3 | ...})

Parameter:
{0 | 1 | 2 | 3 | ...}
    Required. This is the index of the trade signal (BuyEntry, SellEntry, BuyClose or SellClose) counted to the left from the rightmost signal (whose index is 0).

Action
If the signal pointed is a SellExit, returns signal price. If it is not or non-existent, returns 0.

Example:
GetSXPrice(5) //returns the signal price of the 6th trade signal from the rightmost if that signal is indeed a SellExit, otherwise it returns 0.


    GetTimePoint

Syntax:
GetTimePoint({0 | 1 | 2 | 3 | ...})

Parameter:
{0 | 1 | 2 | 3 | ...}
    Required. This is the index of the bar to the left of the current bar (or the rightmost bar, whose index is 0).

Action
Returns a unique long integer value marking the bar's ending time (to the milliseconds). This value is often used later by functions such as GetIndexByTimePoint.

Example:
GetTimePoint(0) //Returns a long integer value marking the current time.
GetTimePoint(5) //Returns a long integer value marking the ending time of 5th bar to the left of the current bar.


    GetTradeBarIndex

Syntax:
GetTradeBarIndex({0 | 1 | 2 | 3 | ...})

Parameter:
{0 | 1 | 2 | 3 | ...}
    Required. This is the index of the bar to the left of the current bar.

Action:
Returns the bar index of the nth position on the chart, counted from the right to the left.

Example:
GetTradeBarIndex(0)
/* If the last position to the left of the current bar is a buy entry position occurring at the 10th bar to the left of the current bar, GetTradeBarIndex(0) returns 10 */


    GetTradePrice

Syntax:
GetTradePrice({0 | 1 | 2 | 3 | ...})

Parameter:
{0 | 1 | 2 | 3 | ...}
    Required. This is the index of the bar to the left of the current bar.

Action:
Returns the price of the nth position on the chart, counted from the right to the left.

Example:
GetTradePrice(0)
/* If the last position to the left of the current bar is a buy entry position occurring at the 10th bar to the left of the current bar and if this position's entry price is 1.1612, GetTradePrice(0) = 1.1612 */

/* If the 4th last position to the left of the current bar is a sell entry position occurring at the 10th bar to the left of the current bar and if this position's entry price is 113.16, GetTradePrice(4) = -113.16 */


    GetValue

Syntax:
getValue({stringExpression}, {floatExpression})

Parameter:
stringExpression
    Required. String expression that represents the currency symbol and time frame for which you wish to return the value.

floatExpression
    Required. Float expression that represents the field for which you wish to return the value. Not that this expression is calculated on the currency symbol and time frame specified by the stringExpression above.

Action:
Return the value of the expression specified by floatExpression for the specified currency symbol and time frame. This function enables you to retrieve the value from a different data series than the one to which the IntelliScript is attached.

Example 1:
getValue("EUR/USD,1 hr. 30 day", Close[0])
// returns the current close price for EUR/USD 1-Hour 30-Day chart

Example 2:
getValue("1 hr. 30 day", GetTradePrice(0))
// returns the entry price of the last traded position on the 1-hour 30-day chart for the same currency symbol as the one to which this syntax is attached. For example, if this IntelliScript is attached to the EUR/USD 5-minute 12-hour chart, this syntax will return the entry price of the last traded position on the EUR/USD 1-hour 30-day chart

Example 3:
getValue("EUR/USD", EMA(Close, 10))
// returns the 10-period Exponential Moving Average for EUR/USD on the same time frame as the one to which this syntax is attached. For example, if this IntelliScript is attached to the USD/JPY 10-minute 1-day chart, this syntax will return the 10-period EMA value for EUR/USD 10-minute 1-day chart.


    Global

Syntax:
Global {variableName} [= {initialValueExpression}] [, {variableName} [= {initialValueExpression}] ...]

Action:
Declares a global variable. These variables remain accessible from every IntelliScript that are attached to the same Data Series. These variables can be assigned an initial value.

Example 1:
Global A = 0, B = -1
A = A + 1
B = 0


    HHV

Syntax:
HHV({indicatorExpression}, {integerValueExpression})

Parameter:
indicatorExpression
    Required. Float expression.

integerValueExpression
    Required. Integer expression.

Action:
Returns the highest indicatorExpression value for the last n bars.

Example 1:
HHV(High, 10)
/* Returns the highest high value for the last 10 bars. */

Example 2:
HHV(SMA(Close, 5), 20)
/* Returns the highest 5-period simple moving average value for the last 20 bars. */


    HHVindex

Syntax:
HHVindex({indicatorExpression}, {integerValueExpression})

Parameter:
indicatorExpression
    Required. Float expression.

integerValueExpression
    Required. Integer expression.

Action:
Returns the position of the bar where the highest indicatorExpression value for the last n bars occurs.

Example 1:
HHVindex(High, 10)
/* Returns the position of the bar where the highest high value for the last 10 bars occurs. */

Example 2:
HHVindex(SMA(Close, 5), 20)
/* Returns the position of the bar where the highest 5-period simple moving average value for the last 20 bars occurs. */


    High

Syntax:
High[{0 | 1 | 2 | 3 | ...}]

Parameter:
{0 | 1 | 2 | 3 | ...}
    Required. This is the index of the bar counted to the left of the current bar (or the rightmost bar, whose index is 0).

Action:
Returns the High price of the bar specified by the parameter.

Example:
High[0] //return the current bar's High price;
High[6] //return the High price of the 6th bar to the left of the current bar.


    HLine

Syntax:
HLine {indicatorName} {=} {valueExpression}

Arguments:
indicatorName
    This is the name of the horizontal line.

valueExpression
    This is the value of the horizontal line, a float expression.

Action:
Defines a horizontal line. The value for the horizontal line must be initialized in the declaration.

Property:
{indicatorName}.color = {"Yellow" | "Green" | "Black" | "Purple" | "Blue" | "Red"}
    After you declare a horizontal line, you can set the line color to be one of the colors listed above.

Example:
HLine myLine = (High[1] + Low[1] + Close[1]) / 3
myLine.Color = "BLUE"


    IF_THEN_ELSE_ENDIF

Syntax:
IF {booleanExpression} THEN
    {statement
      [statement
        ...]}
[ELSE
    {statement
      [statement
        ...]}
ENDIF

Action:
Imposes conditions on the execution of a statement or a series of statements (here we refer to this as a statement block). The statement block following the THEN keyword is executed if the condition is satisfied (when the booleanExpression following the IF keyword returns TRUE). The optional ELSE keyword introduces an alternate statement block that is executed when the IF condition is not satisfied (when the booleanExpression returns FALSE).

Example 1:
IF EMA[0](Close, 5) > EMA[0](Close, 10) THEN
    AddBuyEntry
ELSE
    AddSellEntry
ENDIF


    Indicator

Syntax:
Indicator {indicatorName}

Augument:
indicatorName
    This is the name of the customized indicator.

Action:
Defines a new customized Indicator.

Properties:
{indicatorName}.Value = {valueExpression}
    Set the value for the defined customized indicator.

{indicatorName}.Channel = {0 | 1 | 2 | 3 | ...}
    Set the channel in which the customized indicator is drawn. Setting as 0 will draw the indicator in the price channel. Setting as 1 will draw the indicator in the first lower channel below the price channel.

{indicatorName}.Color = {"Yellow" | "Green" | "Black" | "Purple" | "Blue" | "Red"}
    Set the customized indicator to use one of the colors above.

{indicatorName}.Draw
    Draws this customized indicator on the chart in which the IntelliScript is attached.

Example:
// Define a customized indicator called "MyInd"
Indicator MyInd
MyInd.Channel = 1
IF Close > Open THEN
    MyInd.Color = "Blue"
    MyInd.Value = (Close - Open) / Close * 100
ELSE
    MyInd.Color = "Red"
    MyInd.Value = (Open - Close) / Close * 100
ENDIF

MyInd.Draw


    IsBeginBar

Syntax:
isBeginBar()

Action:
During the current calculation, if the bar is the first bar on the chart (if the bar appears on the most left side of the chart), return boolean expression TRUE.

Example:
Global Counter
IF isBeginBar() THEN
    Counter = 0
ENDIF


    IsBuyPosition

Syntax:
isBuyPosition()

Action:
If the last generated position is a buy entry position, return Boolean expression TRUE. Otherwise, return Boolean expression FALSE.

Example:
IF isBuyPosition() AND Close - GetTradePrice(0) > Point(20) THEN
    AddBuyExit
ENDIF


    IsEmptyPosition

Syntax:
isEmptyPosition()

Action:
If the last generated position is either a buy exit position or a sell exit position or if there have not been any position generated on the chart, return Boolean expression TRUE. Otherwise, return Boolean expression FALSE.

Example:
IF isEmptyPosition() AND CrossUp(EMA(Close,10), EMA(Close, 20)) THEN
    AddBuyEntry
ENDIF


    IsPair

Syntax:
IsPair({"EUR/USD" | "USD/CHF" | "USD/JPY" | "GBP/USD" | ...})

Action:
Returns true if the IntelliScript is currently running on the Data Series with the symbol specified in the parameter.

Example:
Global pips
IF IsPair("USD/JPY") THEN
    pips = 0.01
ELSE
    pips = 0.0001
ENDIF


    IsSellPosition

Syntax:
isSellPosition()

Action:
If the last generated position is a sell entry position, return Boolean expression TRUE. Otherwise, return Boolean expression FALSE.

Example:
IF isSellPosition() AND GetTradePrice(0) - Close > Point(20) THEN
    AddSellExit
ENDIF


    LLV

Syntax:
LLV({indicatorExpression}, {integerValueExpression})

Parameter:
indicatorExpression
    Required. Float expression.

integerValueExpression
    Required. Integer expression.

Action:
Returns the lowest indicatorExpression value for the last n bars.

Example 1:
LLV(High, 10)
/* Returns the lowest high value for the last 10 bars. */

Example 2:
LLV(SMA(Close, 5), 20)
/* Returns the lowest 5-period simple moving average for the last 20 bars. */


    LLVindex

Syntax:
LLVindex({indicatorExpression}, {integerValueExpression})

Parameter:
indicatorExpression
    Required. Float expression.

integerValueExpression
    Required. Integer expression.

Action:
Returns the position of the bar where the lowest indicatorExpression value for the last n bars occurs.

Example 1:
LLVindex(High, 10)
/* Returns the position of the bar where the lowest high value for the last 10 bars occurs. */

Example 2:
LLVindex(SMA(Close, 5), 20)
/* Returns the position of the bar where the lowest 5-period simple moving average for the last 20 bars occurs. */


    Local

Syntax:
Local {variableName} [= {initialValueExpression}] [, {variableName} [= {initialValueExpression}] ...]

Action:
Declares a local variable in the chart. These variables remain accessible only within the particular script, in contrast with the global variables, which are accessible to other scripts that are attached to the same Data Series. These variables can be assigned an initial value.

Example 1:
Local A = 0, B = -1
A = A + 1
B = 0


    Loss

Syntax:
Loss(["nameString",] {integerValueExpression})

Parameter:
"nameString"
    Optional. This is the contract name for which you wish to return the loss amount.

integerValueExpression
    Required. Integer expression.

Action:
Returns the loss for the last n trades. The first parameter "nameString" is the contract name. This parameter can be omitted. The Loss function returns the opposite value of the Profit function. So if the trade generates a profit instead of a loss, when you call the loss function, you will receive a negative value.

Example 1:
Loss("contract1", 0)
/* Returns the loss value for the last occurred trade under contract1. */

Example 2:
Loss(3)
/* Returns the loss value for the third most recent occurred trade. */


    Low

Syntax:
Low[{0 | 1 | 2 | 3 | ...}]

Parameter:
{0 | 1 | 2 | 3 | ...}
    Required. This is the index of the bar counted to the left of the current bar (or the rightmost bar, whose index is 0).

Action:
Returns the Low price of the bar specified by the parameter.

Example:
Low[0] //return the current bar's low price;
Low[6] //return the Low price of the 6th bar to the left of the current bar.


    Max

Syntax:
Max({valueExpression1}, {valueExpression2})

Parameter:
valueExpression1
    Float expression 1.

valueExpression2
    Float expression 2.

Action:
Returns to the larger one of valueExpression1 and valueExpression2.

Example:
Max(5, 4)
/* This expression returns 5 */


    Min

Syntax:
Min({valueExpression1}, {valueExpression2})

Parameter:
valueExpression1
    Float expression 1.

valueExpression2
    Float expression 2.

Action:
Returns to the smaller one of valueExpression1 and valueExpression2.

Example:
Min(5, 4)
/* This expression returns 4 */


    Or

Syntax:
{Boolean expression1} OR {Boolean expression2}

Parameter:
Boolean expression1, Boolean expression2
    Both required.

valueExpression2
    Float expression 2.

Action:
If at least one of the expressions is TRUE, returns TRUE. Otherwise (both expressions are FALSE), returns FALSE.

Example:
2 < 0 OR 15 < 10 //return FALSE
3 > 0 OR 2 < 0 //return TRUE


    Pause

Syntax:
Pause {integerValueExpression}

Parameter:
integerValueExpression
    Required. Integer expression that represents the number of milliseconds to pause.

Action:
The IntelliScript stops running for n milliseconds as specified by integerValueExpression.

Example:
/* This example will give me the status whether EMA5 is greater or less than EMA10 status every 5 minutes */
IF EMA[0](Close, 5) > EMA[0](Close, 10) THEN
    AlertOnly EMA[0](Close, 5) + " > " + EMA[0](Close, 10)
ELSE
    AlertOnly EMA[0](Close, 5) + " < " + EMA[0](Close, 10) ENDIF

Pause 5 * 60 * 1000


    Pivot

Syntax:
Pivot({"Daily" | "Weekly" | "Monthly"}, {"S1" | "S2" | "S3" | "R1" | "R2" | "R3"})

Parameter:
"Daily" | "Weekly" | "Monthly"
    Pivot time frame type.

"S1" | "S2" | "S3" | "R1" | "R2" | "R3"
    Pivot line’s name you wish to return the value.

Action:
Returns the value of the pivot point (support/resistance lines using the Pivot Calculator).

Example:
Pivot("Daily", "S1")
/* Returns the current daily pivot S1 line's value. */


    Playsound

Syntax:
Playsound {"soundFilePathString"}

Parameter:
soundFilePathString
    Required. String expression for the path of the sound file you wish to play.

Action:
Play a sound file. The soundFilePathString needs to be a valid path for the external sound file, e.g., "C:\Mymusic\alertsound.wav".

Example:
/* This example below will play the specified music whenever the current price is greater than 109.60. */
IF price > 109.60 THEN
    Playsound "sound\alert2.wav"
ENDIF


    Point

Syntax:
Point({floatValueExpression})

Parameter:
floatValueExpression
    Float expression.

Action:
Evaluates to the appropriate decimal numbers based on the currency. The parameter floatValueExpression can be an integer or a float number.

Example:
Point(4)
/* For EUR/USD this expression returns 0.0004; for EUR/JPY this expression returns 0.04 */


    Price_Close

Syntax:
Price[{0 | 1 | 2 | 3 | ...}]
or
Close[{0 | 1 | 2 | 3 | ...}]
("Price" and "Close" are interchangeable, they are two names for the same function)

Parameter:
{0 | 1 | 2 | 3 | ...}
    Required. This is the index of the bar counted to the left from the current bar (the index of the current bar is 0).

Action:
Returns the Close price of the bar specified by the parameter, counted from the right to the left.

Example:
Price[25] //returns the Close price of the 25th bar to the left of the current bar.


    Profit

Syntax:
Profit(["nameString",] {integerValueExpression})

Parameter:
"nameString"
    Optional. This is the contract name for which you wish to return the profit amount.

integerValueExpression
    Required. Integer expression.

Action:
Returns the profit for the last n trades. The first parameter "nameString" is the contract name. This parameter can be omitted. The Profit function returns the opposite value of the Loss function. So if the trade generates a loss instead of a profit, when you call the profit function, you will receive a negative value.

Example 1:
Profit("contract1", 0)
/* Returns the profit value for the last occurred trade under contract1. */

Example 2:
Profit(3)
/* Returns the profit value for the third most recent occurred trade. */


    Return

Syntax:
Return

Action:
Skip running the rest of the IntelliScript for this current cycle.

Example:
Global Counter = 0
IF isBeginBar() THEN
    Counter = 0
ENDIF

IF EMA[0](Close, 10) < EMA[0](Close, 20) THEN
    RETURN
ENDIF
Counter = Counter + 1


    Round

Syntax:
Round({valueExpression}, {0 | 1 | 2 | 3 | ...})

Parameter:
valueExpression
    Float expression.

0 | 1 | 2 | 3 | ...
    Integer expression.

Action:
Round valueExpression to the nth decimal points.

Example:
Round(0.12345, 4)
/* This expression returns 0.1235 */


    Run

Syntax:
Run {"applicationPathString"}

Argument:
applicationPathString
    String expression for the path of the program you wish to run.

Action:
Run an external application. The applicationPathString needs to be a valid path for the external application, e.g., "C:\WINNT\System32\CMD.exe".

Example:
IF RSI[0](Close, 14) > 80 THEN
    Run "C:\WINNT\System32\CMD.exe"
ENDIF


    SellStopLoss

Syntax:
SellStopLoss {valueExpression}

Augument:
valueExpression
    This is the stop loss amount you set: a float value.

Action:
When you have a sell entry position on the chart, this command will calculate the stop loss. If the stop loss is greater than valueExpression points, the IntelliScript engine will issue the AddSellExit command automatically for you.

Example:
IF CrossDown(EMA(Close,5) , EMA(Close,10)) THEN
    AddSellEntry
ENDIF

SellStopLoss Point(30)


    SellTakeProfit

Syntax:
SellTakeProfit {valueExpression}

Argument:
valueExpression
    This is the profit amount you set: a float value.

Action:
When you have a sell entry position on the chart, this command will calculate the current profit the position has generated. If the current profit is greater than valueExpression points, the IntelliScript engine will issue the AddSellExit command automatically for you.

Example:
IF CrossDown(EMA(Close,5) , EMA(Close,10)) THEN
    AddSellEntry
ENDIF

SellTakeProfit Point(50)


    SendMail

Syntax:
SendMail {"emailSubjectString"}, {"emailAddressString"}

Arguments:
emailSubjectString
    This is the subject of the email, a constant string expression.

EmailBodyString
    This is the email body message, a constant string expression.

Action:
Send an email. The emails will be sent to the list of email addresses configured under the IntelliScript Organizer window in the Default Email List section.

Example:
IF RSI[0](Close, 14) > 80 THEN
    SendMail "rsi over 80", "Please take action now that RSI is over 80!"
ENDIF


    SetBarComment

Syntax:
SetBarComment "messageString"

Arguments:
messageString
    Required. A string to be displayed on the status bar.

Action
Create a comment for this current bar. When a bar has had a comment created through IntelliScript, this comment is shown on the status bar, which is located on the top of each chart next to the toolbar, where normally you see the updated time displayed.

Example:
IF (RSI[0](Close, 14) > 80) THEN
    SetBarComment "RSI14 Over 80"
ENDIF


    SetStatus

Syntax:
SetStatus {"messageString"}

Arguments:
messageString
    Required. A string to be displayed in the status box.

Action
Set the status for the Customized Alert. The current status for the Customized Alert is displayed in the "Show Customized Alert Status" window under the "IntelliScript" tab within the charting application.

Example:
IF (RSI[0](Close, 14) > 80) THEN
    AlertOnly "RSI14 Over 80"
    SetStatus "RSI14 Over 80"
ENDIF


    Share

Syntax:
Share {variableName} [= {initialValueExpression}] [, {variableName} [= {initialValueExpression}] ...]

Action:
Declares a share variable. These variables remain accessible from every single IntelliScript. These variables can be assigned an initial value.

Example 1:
Share gCounter1 = 0, gCounter2 = 0


    STDEV

Syntax:
STDEV({indicatorExpression}, {integerValueExpression})

Parameter:
indicatorExpression
    Float expression for which you want to return the standard deviation.

integerValueExpression
    Integer expression.

Action:
Returns the standard deviation value for the last n bars for the indicatorExpression specified as the first parameter.

Example:
STDEV(Close, 10)
/ * Returns the standard deviation for the close price for the last 10 bars. */


    String

Syntax:
String {variableName} [= {initialValueExpression}] [, {variableName} [= {initialValueExpression}] ...]

Action:
Declares a String variable. A String variable has the same scope as a global variable, which remains accessible from every IntelliScript that is attached to the same Data Series. Such variables can be assigned an initial value.

Example:
String sMess
sMess = "Price AT" + Close[0]
IF Close[0] > EMA[0](Close, 4) THEN
    AlertOnly sMess
ENDIF


    TimeDiff

Syntax:
TimeDiff(TimePoint1, TimePoint2)

Parameter:
TimePoint1, TimePoint2
Long Value recorded by GetTimePoint function.

Action:
Returns the difference in minutes of time1 and time2.

Example:
Local t1 = GetTimePoint(0), t2 = GetTimePoint(5)
Local td = TimeDiff(t1, t2) //td is the time difference in minutes of 5 bars interval.


    WHILE_ENDWHILE

Syntax:
WHILE {booleanExpression}     {statement
      [statement
        ...]}
ENDWHILE

Action:
Sets a condition for the repeated execution of a statement block. The statement block is executed repeatedly as long as the specified condition is true (when the booleanExpression following the WHILE keyword returns TRUE).

Example 1:
Local I = 0
WHILE (I < 5)
    IF (High[I] < Close) THEN
      AlertOnly "Current Close is higher than High[" + I + "]"
    ENDIF
    I = I + 1
ENDWHILE


Debugger

The IntelliScript Debug feature is a useful tool to help debug your script. It simulates the process in which the script runs through the historical data and lets you see the steps and expression values when the script runs. Please note that in order to debug your script, the script must be correct in its syntax and successfully attached to a Data Series. Please take a look at Figure 1. Debugger Overview as you read through these instructions.

     1.1  To use the Debugger tool, you first select the Data Series to which you have scripts attached. Then in box labelled #1, it will display the list of scripts attached to this Data Series. Please note the debugger will run through all the scripts attached to this Data Series.
  1.2 The checkboxes under the "Run to:" section displays the list of breakpoints you can check. If you check the boxes next to "Buy Entry" and "Sell Entry", then the debugger will stop whenever a Buy Entry is generated or a Sell Entry is generated.
  1.3 When you click on the "Restart" button, the debugger will start from the beginning of the Data Series. Then you can click on the "GO" button, which will stop at the next breakpoint, which is specified in the "Run to:" section as explained in the previous paragraph. If you click on the "Step" button, the debugger will stop at every bar in the Data Series.
  2 The box #2 labelled "Expression" displays the expression for your script in which the debugger is currently displaying.
  3 The box #3 labelled "Log" displays the values for certain lines of your expression that are currently running.
  4 Next to the box labelled "Watch:", you can enter expressions or variables used in your script. For example, you can enter "EMA(Close, 5)" in the Watch, then box #4 will display EMA(Close, 5)
  5 Lastly box #5 will display the value for expression EMA(Close, 5) at the particular breakpoint where the debugger is running.

Manually Add Buy/Sell Positions

You can add signals to the charts to use as back testing tools. If you are studying a chart and want to see what would have occurred if you placed a buy or a sell trade at certain price you use the "Manually Add Buy/Sell Positions" feature. Once you have added the signals you can utilize the "Customized Alert Performance Summary" or "Customized Alert Performance Detail" to review the potential results of such back tested trades. Here is how to add these signals:

  1. Scroll in a chart with your mouse.
  2. Rest your cursor directly on or inside the Bar or Candle and then right click with your mouse on the chart.
  3. A window will pop up with many choices; highlight and select "IntelliScript".
  4. Then another pop-up menu will appear, please select "Manually Add Buy/Sell Positions"
  5. From here, scroll into the new window and select the Buy or Sell of your choosing. Once selected an arrow will appear on the chart to depict the signal selected.
  6. To check on the performance of these potential trades, right click on the chart, select "IntelliScript" and then from the next pop-up menu, please select "Customized Alert Performance Summary" or "Customized Alert Performance Detail".

Tick Back Testing Lab (TBTL)

Case Study Builder:

  1. Begin building a Case Study by drafting your syntax in the box labeled "Syntax".
  2. Once your syntax is drafted, you will need to add this to a data series, by selecting the "Symbol" first and then the "Interval". Next click on the button "Add to Case Study".
  3. You can add numerous Symbols to the Syntax section, a new tab will appear for each new Symbol and Interval that is selected. If you wish to remove one of these Symbols, click on the tab you wish to remove and select "Delete".
  4. You can call your previously drafted Customized Alerts, by choosing from the drop down list next to the box labeled "Alert". If you have no saved Customized Alerts, then this field will be blank. The Tick Back Testing Lab does not support Customized Indicators.
  5. Now, you will go to the section labeled "Options". Here you will choose how many days back you wish to run the Case Study by first filling in the box llabeled "___Days Back" and then choose if you wish to run tick by tick data or by pip change. Note, since this feature allows you to run the Case Study tick by tick, it will take a long time to load the studies results.
  6. Next select "Run". On the bottom of the window you can check the status bar, which will let you know first now how much of the data has loaded, and then the status of how the calculation is progressing.
  7. If you wish, you can select "Stop" to terminate the process at any time.
  8. Once the Case Study has loaded, you can select "P/L" to check the performance.

Save Feature:

A Case Study will include all of the Syntaxes listed on the tabs. To Save the Case Study, at the top of the window, choose, "Case Study" and select "Save", then follow the on-screen prompts.

Open Feature:

To Open previously saved Case Studies, at the top of the window, choose, "Case Study", then select "Open" and follow the on-screen prompts.

Import Feature:

The Import tool allows you to import alert files from your computer's hard drive. Therefore if you have an Alert file (.alt) that you have previously exported to a file on your computer, you can now select Import and browse to the folder where your saved Alert file is that you wish to load.

Notes:

The Historical Tick Data for this feature is available starting from June 2, 2004.

Loading data tick by tick may take from 5-minutes to numerous hours, depending on such elements as how active the cross rate is and how many days back you have selected to load. If you wish to terminate the loading process, you have the option to select "Stop".

DESKTOP: INTELLIREPORT

Introduction

IntelliReport allows you to review and analyze your trades using many different tools. It is broken down into three separate tools: Equity Curve, Trade List, and Trade Analysis. Once IntelliReport opens, you will see the Equity Curve Line for your trading session in addition to a Strategy and Summary window.

Equity Curve Line

The Equity Curve Line displays the Equity in pips against the number of trades, giving you the ability to visualize how much you would have won/lost. In addition to the Equity Curve Line, there will be windows for your Strategy and a Summary.

Strategy – Displays the pair, time interval, and the date range of the trading session from start to finish.

Summary – Provides you with the Gross profit or loss, Profit factor (net profit/ net loss), Drawdown, total number of trades, Winning ratio as a percentage, average profit/loss ratio, percent of time in market (percent of trading session with an open position) and last open position with the floating profit/loss.

IntelliReport also offers detailed reporting on both the Trade List and Trade Analysis tabs. Note, while toggling between the Trade List, Trade Analysis and Equity Curve tabs, the Strategy and Summary windows will remain visible for easy reference.

Trade List

Trade list details each trade by type, time, price, Lots (K), profit/loss for each particular trade, running profit/loss and drawdown for each particular trade. You also have the ability to view the value of any indicator from the IntelliScript function at each entry/exit point. This is a great tool to help develop or modify your trading strategy.

To analyze an indicator:

  1. Select an indicator from the dropdown menu labeled “Select Indicator” and choose your parameters.
  2. Click “Add”. You will them see the indicator in the window below.
  3. Select “Add>>”, the indicator will be added to the “Watched Indicators” list.
  4. Press “Update Trade List” and a new column will be added with the indicator name and values at each particular entry/exit point.

To analyze a function:

  1. Select the function from the dropdown menu labeled “Functions”.
  2. Click the “Add” button below the dropdown. You will them see the function in the next window.
  3. Select “Add>>” and the function will be added to the “Watched Indicators” list.
  4. Press “Update Trade List” and a new column will be added with the function name and values at each particular entry/exit point.

To remove a function/indicator from the "Watched Indictors" list:

  1. Highlight the function or indicator you would like to remove.
  2. Select “Remove”.

Trade Analysis

Trade Analysis breaks down all trades, only winning trades or only losing trades into separate columns allowing you to analyze the number of trades with these breakdowns:

Average net profit (negative for a loss), average time in the trade in bars, average run-up in pips, average drawdown in pips, entry efficiency, exit efficiency and trade efficiency.

Exporting a Trade List

IntelliReport also allows you to export your Trade List with any functions or indicators added to a text file.

To export the Trade List:

  1. Click on “File” in the IntelliReport main menu.
  2. Select “Export Trade List”
  3. Choose a file name and location.
  4. Press “Save”.

GENERAL CHART INFORMATION

Feature Menu


The Feature menu is the access point to the chart’s analysis tools and technical indicators.

Toolbar


The Toolbar is a group of icons that act as short cuts to frequently used features. Here is a listing of what each icon does:

  Draw Line Click on the icon once to activate feature, click on the icon again to deactivate.

  Display Data Click on Display Data to see value of any point on the chart, using your mouse, right click in the chart. A window will appear with the date, the day's high, low, open, and close prices for that point in the chart. As you move your cursor across the chart, the data for the corresponding points in the chart will be seen in this pop-up box.

  Show Pointer Click on this icon to see the pointer on the chart; re-click to hide the pointer.

  Zoom In Click on this icon to take a closer look at a specific range of information on the chart; you can zoom in on any point. If you continue to click on this icon, you will zoom in even farther.

  Zoom Out Click on this icon, multiple times and return to the original chart view.

   Zoom Scale When you zoom in or out on the chart, you can tell how many times larger or smaller your view is adjusted (e.g. 1 x 4 means the chart is 4 times larger than the initial view). Keep in mind as the chart updates, you will also see data update information in this same place on the chart.

  Traffic Light At a glance, check to see that your chart is connected to the real-time pipeline data feed. The blinking green light identifies that your connection to the data feed is actively updating. If the light turns red, this means the chart has stopped updating. If the light turns red, click here to go to the Technical Difficulties section.

Real-time Status Bar

The Real-time Status Bar combines the Traffic Light with a data feed status clock and a chronometry clock. The data feed clock will change every time the chart receives new data. Use this Status Bar to insure that the data is arriving in real-time and is live. The chronometry clock is strictly for reference, just so you can see the time of day and the time zone in which the chart is being transmitted.

Y-axis

The Y-axis value, on the right side of the chart, is the exchange rate of the symbols selected.

X-axis

The X-axis, just below the chart, displays the date and time. As you change the Time Scale & Period, both date and time will adjust accordingly.

Information Bar

Below the X-axis is a series of boxes that make up the Information Bar. The Information Bar provides all chart data in a numeric form.


Figure A: Information Bar
Default setting: Last Point on chart

  • Figure A: The default setting on the chart will display the last Point Value, or the data for the last candle or bar. If your cursor is outside of the chart or if your mouse is stationary, then the Information Bar will reflect this default, see Figure C for details on individual points within the chart.
  • Last Point Value: The last bar or candle on the chart is either cyan (up) colored bar or orange (down) and it moves up and down to reflect the current price.These candles will change color actively as the rates change and will continue forming based on the Time Scale selected. At the end of each interval (e.g. 1 minute, 5 minute, etc.)a new red or blue candle will be drawn and a another cyan/orange candle, or Last Point Value will be generated
  • CL: The "CL" box will display the value of the updating candle, referred to in the industry as "Last Price" or close. If the rate goes up, it will turn blue if the rate drops the CL will turn red. The red colored CL corresponds to the orange colored updating candle/bar, while the dark blue CL corresponds to the cyan candle, see Figure B.

  • Daily Bar/Candle: The Daily Bar begins at [5:00pm ET] and runs through [5:00pm ET] (since FX is a 24-hour market). E.g. for a bar labeled 5/02/02, the open price is the first price we receive right after 5:00 pm on 5/01/2002. The close price is the last price we receive by 5:00 pm on 5/02/02. The high and lows are accumulated between 5:00 pm 5/01/2002 and 5:00 pm 5/02/2002.
  • Calculation of Rates: The rates on the charts use calculated close price, which is normally the average of the bid and ask at any point. This is generally the standard for foreign exchange since banks never disclose their last exact trade rates, so the average of bid and ask tells us approximately what the last trading rates will equal.

  • Figure C: If you move your cursor inside the chart, the Information Bar will display data for the corresponding point where your cursor rests.
  • Each box represents a value that corresponds to where your cursor is on the chart.
  • Here is a detailed explanation of the Information Bar:
    1. Time/Date: Starting on the left, the first box will show the Time and Date, based upon the Time Scale & Period selected for the candle or bar selected.
    2. Day High: The second box is the High for the selected candle or bar.
    3. Day Low: The third box is the Low for the selected candle or bar.
    4. Close Price: The fourth box is the Close price of the selected candle or bar. When looking at the Last Point, the CL will change colors as the chart updates with new high and low for that bar or candle.
    5. Price Value: The fifth box is the Price Value, or Y-axis value. This is particularly useful when drawing trend lines.

Launch and Enlarge Chart

The icon enables you to detach a chart so it stands alone. This detached chart can be left open while you use other features. Once you detach the chart, you can enlarge the chart, by resizing the window.

FILE

File offers a drop down menu to change symbols and launch separate charts.

Change Symbol

  • You can change the symbol of the chart by clicking on "Change Symbol".
  • Click on the symbols of your choosing and the chart will automatically update to reflect the new selection.
  • If you do not see your symbols, click on "More..." to enter your symbol.
  • If you do not know what the symbol is, click on the to conduct a search.
  • Enter the symbol of your choosing and select "OK", the chart will automatically update to reflect the new selection.

Launch New Chart

  • You can open multiple charts, click on "Launch Another Chart".
  • Once the new chart is opened, you can change the symbol.
  • Once the new chart is opened you can enlarge the chart.

Print Chart

Due to the security restriction on Java, the only way to print a chart is by using the built-in screenshot functionality in your operating system. Follow these instructions to print the chart:

  • Printing a Screenshot:

    You might want to print these instructions before starting.

    1. On your keyboard, Hold down the ALT key and press the Print Screen key (may be labeled PrtSc OR PrtScn) at the same time.
    2. On your computer screen, with your mouse, click on the "Start" button, a menu will appear, choose "Run" from this Start menu.
    3. Type pbrush.exe and press Enter or OK to start Windows' built-in Paintbrush program.
    4. The program will open. From the menu bar at the top chose "Edit", then from the drop down menu, choose "Paste". If the program asks you about enlarging the bitmap, select "Yes".
    5. Next, select File, then from the drop down menu select the Print command to send the image to your printer.

Personal Settings

  • You can save your settings on the chart. Adjust the Time Scale & Period, add Indicators, draw Trend Lines, change the Chart Type, even change the Background Color and then save your personal preferences.

    1. Begin by making all of the preferential changes you would like on the chart.
    2. Next select "File"
    3. Then select "Personal Settings"
    4. A pop-up menu will appear, with options to "Save Setting","Apply Setting" and "Delete Setting".

      1. Save Setting: Allows you to save a new set of settings for the chart. When you choose this, a new window will open and will prompt you to type in a name. This new setting will automatically be your default chart, unless you uncheck the "Default" button. Choose "OK" to save the new settings.

      2. Apply Setting: Once you have saved various chart settings, you can choose which you would like to use. Scroll your mouse over the setting name you want to use to highlight it. Left click, with your mouse, on the selection to activate.
      3. Delete Setting: To remove one of your saved chart settings, scroll over the name of the setting you want deleted in order to highlight it. Left click, with you mouse, to delete.

  • Your default chart will always open as chart number 1. The most recent charts saved will always open as 2, 3, and 4, in the order the charts were saved. However, if you save other charts, this will affect the order.
  • Group Setting: Available in the Desktop version!

VIEW

Show Pointer

  • You can add or remove a pointer to the chart.
  • Click on the "Show Pointer" button to add the pointer. To remove, re-click on "Show Pointer," the pointer will disappear.

Display Data

  • To view the value of any point on the chart, using your mouse, right click in the chart. A window will appear with the date, the day's high, low, open, and close prices for that point in the chart. This window can be minimized or closed.

Change Background Color

  • The default setting for the chart is black and gray. If you prefer a lighter background, you can change the color.
  • To change to a lighter background, select the "Change Background Color." To change back to the dark background, reselect the "Change Background Color" button.

Zoom In/Out

  • If you would like a closer look at a specific range of information on the chart, you can zoom in on any point. To zoom in you have many choices.

     Zoom In Click on this icon to take a closer look at a specific range of information on the chart; you can zoom in on any point. If you continue to click on this icon, you will zoom in even farther.

     Zoom Out Click on this icon, multiple times and return to the original chart view.

  • Use the Feature Menu:
    1. Select "New"
    2. Click on "Zoom In"
    3. Repeat these steps until you have reached an acceptable level of magnification.
    4. Use the Scroll Bar at the bottom of the chart to move forward or backward on the chart.

  • Use your mouse to interact with the chart directly:
    1. With your mouse, left click on any point in the chart; when you click, continue to hold down the button.
    2. Drag your mouse across the chart and highlight the section you would like to see magnified.
    3. When you release your mouse button, the chart will automatically zoom in selection highlighted.
    4. Use the Scroll Bar at the bottom of the chart to move forward or backward on the chart.

  • To view zoom out again, follow these steps:
    1. Select "New"
    2. Click on "Zoom Out"
    3. Repeat these steps until you have returned to the original chart view.

Zoom Scroll Bar

Use the Zoom Scroll Bar to navigate the chart once you have zoomed in. Left click and move your mouse to adjust the scroll bar.

CHART TYPE

To select the chart type, click on Bar, Line, or Candle.

TIME SCALE & PERIOD

  • First select your Time Scale by moving your cursor over your selection of "Minutes, Daily, or Weekly."
  • Then a new menu will appear, depending on the Time Scale selected, you can choose from a Period of Days, Months, or Years.
  • The Time Scale & Period will appear on the X-axis of the chart.

DRAW LINE

Add or Delete Trend Lines

  • This allows you to draw and delete your own trend lines.
  • To draw lines click on "Add line"
  • Next left click, with your mouse, in the chart where you would like to begin your line. To extend the length or change the angle, left click on either end of the line and drag to a new point on the chart.
  • You can continue to draw new lines on the chart by left clicking with your mouse.
  • To move an entire line, left click on the line and hold down your mouse button. Now drag your mouse and the line will move accordingly.
  • To delete the last line drawn, select the "Delete Line" button.
  • To remove all of the lines drawn select "Delete All Lines."

Adjust Trend Line Settings

Here you have a variety of options, including changing the color, deleting, and duplicating a line. You can also add Fibonacci lines.

    Line Color and more...
    1. To adjust settings to a specific line, place your cursor on the line and right click on it with your mouse; a menu will appear. The options on this menu only affect the line you have selected.
    2. To change the line color, scroll your cursor over the "Change Color" button until it is highlighted, then a second menu will appear with color options: white, red, blue, green, or yellow. Left click on one of these colors, and the line will change to that color.
    3. To delete the line just drawn, left click on the "Delete" button.
    4. To duplicate the same line, left click on "Duplicate" and the same length and shape of the line will automatically generate.
    5. Fibonacci Line: see Fibonacci Line.

    Fibonacci Line

    1. Fibonacci lines can be added to individual trend lines. Place your cursor on a line and right click on it with your mouse, a menu will appear. There is an option for "Fibonacci Line."
    2. Select "Fibonacci Line" and the lines will generate automatically.
    3. The first line is a reference line, as is the line perpendicular to this. The retracement lines follow respectively with values of 38.2%, 50%, and 61.8%. " The line closest to the start point is the 38.2% line, then the 50%, 61.8% line respectively.

INDICATORS

Add Indicators

  • You can add as many technical indicators as you need.
  • Scroll your cursor over the indicator of choice, and then click on the button that pops-up.
  • Next type in the period(s) and select OK.
  • You can also add as many of the same indicator as you feel are necessary.
  • Note that the indicators in the top section of the Indicator Menu are calculated using the price value, whereas the Indicators from the bottom of the Menu are based on varying scales. This means that certain indicators in this section, which rely on different numeric scales for calculation, cannot be generated simultaneously.
  • For your reference you will see a summary of the indicators added in the top portion of the chart.

Remove Indicators

  • To remove all indicators at the same time, select "Indicators." Then, at the bottom of the list of indicators, click on the "Clear All Indicators."
There are 2 easy ways to remove indicators individually:
  • To remove only one indicator, select "Indicators" from the Feature Menu, then choose the indicator you wish to remove. This window will appear:

  • Click on the indicator you want removed, in this case it is the "Simple Moving Average (10), and it will automatically be deleted.
    or
  • Remove an indicator using your mouse directly inside the chart.
  • With your mouse, left click on the little box directly to the left of the indicator that you wish to delete, the box looks like this:
  • A menu will appear, place your cursor on the "Delete" and left click with your mouse, the indicator will be automatically deleted.

Change Indicator Color

You can easily change indicator colors.

  • Change an indicator color using your mouse directly inside the chart.
  • With your mouse, left click on the little box directly to the left of the indicator that you wish to adjust the color, the box looks like this:
  • A menu will appear, place your cursor on the "Change Color" and another drop down menu will be visible.
  • Left click with your mouse on the new color and the indicator will automatically change.

Change Indicator Channel

It is easy to overlay indicators, or separate out indicators. This is available only for the lower selection of indicators. Keep in mind that certain indicators rely on different numeric scales for calculation, and therefore cannot be generated simultaneously.

  • Add the indicators of your choosing to the chart.
  • With your mouse, left click on the little box directly to the left of the indicator that you wish to move, the box looks like this:
  • A menu will appear, place your cursor on the "Copy to" and a new menu will appear with the choice of channels:

  • With your cursor, highlight the channel you wish to move the indicator to, and left click on the channel, it will automatically move the indicator to the selected channel. We remind you that certain indicators rely on different numeric scales for calculation, and therefore cannot be generated simultaneously.

Available Indicators

    Desktop Indicators

          
      Upper Indicators
     
    • Automatic Trend Line
    • Bollinger Bands
    • Bollinger Bands Width
    • Bollinger %B
    • Chaos Alligator
    • Chaos Fractal
    • Chaos Awesome Oscillator
    • Ichimoku
    • Keltner Channel
    • Linear Regression
    • Moving Average (Simple)
    • Moving Average (Exponential)
    • Moving Average (Modified Exponential)
    • Moving Average (Weighted)
    • Moving Average (Smoothed)
    • Moving Average Envelope
    • Pivot
    • Price Channels
    • Parabolic SAR
    • Starc
      Lower Indicators
     
    • ADXR
    • ATR
    • CCI
    • DMI (ADX)
    • Gravity
    • Heikin Ashi
    • MACD
    • MACD (Oscillator)
    • MACD (Histogram Format)
    • Momentum
    • Oscillator (Detrend Price)
    • Oscillator (Elliot Wave)
    • Oscillator (Ultimate)
    • Percent change
    • Rate of Change
    • RSI
    • RSI Signal
    • Relative Vigor Index
    • Stochastic (Fast)
    • Stochastic (Slow)
    • Schaff Trend Cycle
    • Trix
    • William %R

    Online Indicators

          
      Upper Indicators
     
    • Bollinger Bands
    • Exponential Moving Average
    • Ichimoku
    • Linear Regression
    • Modified EMA
    • Moving Average Envelope
    • Parabolic SAR
    • Price Channels
    • Simple Moving Average
    • Starc
    • Weighted Moving Average
      Lower Indicators
     
    • ADXR
    • ATR
    • Bollinger %B
    • Bollinger Bands Width
    • CCI
    • Detrend Price Oscillator
    • DMI (ADX)
    • Fast Stochastic
    • Gravity
    • MACD
    • MACD (Histogram Format)
    • Momentum
    • Percent change
    • Rate of Change
    • RSI
    • RSI Signal
    • Schaff Trend Cycle
    • Slow Stochastic
    • Trix

    HELP

    • Help is your link to the 4xChart instruction manual.
    • Help offers 4xChart product information.

    TECHNICAL DIFFICULTIES

    If you are experiencing technical difficulties with features, read though this troubleshooting section. Here, a number of problems are presented with corresponding solutions.

    Download Sun Java

    • In order to provide state of the art applications, many of the tools are developed using Java Technology. This software is Internet based. For both Microsoft Internet Explorer and Netscape users (these are both kinds of web browsers), you need to have a Java component installed within your browser (it should already be there by default).
    • The charting software requires Sun Microsystems’s Java installed on your computer in order to function.
    • We recommend that you update your browser and Java periodically. It is important to use the newest versions available, because this will insure safe, easy movement throughout the web.
    For ALL Windows users:
    You should upgrade your Java before using the chart. This upgrade process will take you less than 5 minutes and will improve your web browser’s performance when running Java applets. To upgrade or download & install Sun Microsystems Java, please visit this web address then click on the "Download Now" button:

    http://java.com/en/download/index.jsp

    After this is downloaded and installed please restart your computer. Then please go back to http://www.fxtrek.com/ to access the chart. Please let us know if you are unable to access the chart.

    The following Microsoft Windows service packs are required in order for the latest Sun Java to run successfully.

    Microsoft Windows XP - SP1 or newer
    Microsoft Windows 2000 - SP3 or newer

    To download the latest service pack for your computer, please visit:
    http://www.windowsupdate.com/

    Browser Upgrade:
    For your browser upgrade on Internet Explorer, access the link:
    http://www.microsoft.com/windows/ie/downloads/default.asp
    For your browser upgrade on Netscape, you can access this link:
    http://home.netscape.com/smartupdate/index.html

    Login Difficulties

    This section is broken down into two different parts, one is for those client using the Online product and are having trouble accessing the online product, while the other is dedicated to those clients using the Desktop software, and are encountering difficulty when trying to access the Desktop software.

      Login Difficulties: Online Clients:

      If you are an Online charting client and have entered the correct ID and password but are unable to login, for example you get brought back to the login screen, the problem most likely lies with the cookies on your computer.

      • This software is Internet based. In order to identify each user when logging in, a cookie is sent to your browser. If you disable cookies in your browser, after you go through the login process, the program will not able to identify you, and therefore it appears that you have never logged in.
      • To learn more about cookies and the way they are used click here. To change the settings of your cookies, follow these instructions:

        If you are using Microsoft Internet Explorer 6, here is what you should do:

        1. Click on "Tools" on the top of your browser and choose "Internet Options".
        2. Click on the "Privacy" tab.
        3. Choose "Medium" as the privacy setting for the Internet zone.
        4. Click "Ok".

        If you are using Microsoft Internet Explorer 5, here is what you should do:
        1. Click on "Tools" on the top of your browser and choose "Internet Options".
        2. Click on the "Security" tab.
        3. Click on the "Internet" icon in the box under "Select a Web content zone to specify its security settings."
        4. You have the option of choosing a "Default Level" or a "Custom Level".
        5. If you click on the "Default Level" button, make sure you choose "Medium" as the security level for this zone.
        6. If you click on the "Custom Level" button, under "Cookies", make sure you choose either "Enable" or "Prompt" under "Allow per-session cookies (not stored)". You will be warned before your browser accepts a cookie if you choose "Prompt".
        7. Click "Ok".

        If you are using Microsoft Internet Explorer 4, here is what you should do:
        1. Click on "Views" on the top of your browser and choose "Internet Options".
        2. Click on the "Advanced" tab.
        3. Scroll down to the "Security" section.
        4. Under "Cookies", make sure you choose either "Prompt before accepting cookies" or "Always accept cookies". You will be warned before your browser accepts a cookie if you choose "Prompt before accepting cookies".
        5. Click "Ok".

        If you are using Netscape Communicator/Navigator, here is what you should do:
        1. Click on "Edit" on the top of your browser and choose "Preferences".
        2. Click on "Advanced" under "Category".
        3. Make sure you choose either "Accept all cookies" or "Accept only cookies that get sent back to the originating server" under the "Cookies" section.
        4. If you wish to be warned before accepting cookies, check the box next to "Warn me before accepting a cookie".
        5. Click "Ok".

        Cookies
        A cookie is a small data file containing certain information and is written to your hard drive when you visit a web-site. A cookie cannot be read by a web-site other than the one that sets the cookie. Most cookies last only through a single session or visit.

        Currently, this Internet based software only offers cookies that capture non-sensitive information. You can set your browser to notify you when you receive a cookie, giving you the chance to decide whether to accept it. If your browser is set to reject cookies, you might need to login each time an access-controlled page is requested.

      Login Difficulties: Desktop Clients:

      To use the Desktop charts with a firewall, the firewall needs to have port 80 and port 443 opened. As long as these two ports are open, you should be able to use the Desktop charts.

      Are you using a proxy server in your network, if you are, then you just need to enter the proxy's IP address. Otherwise, you should speak with your network administrator to have the proxy client installed.

      We have found that Zone Alarm, Norton Internet Security and other Internet Security software often creates a problem with the chart, because it tries to block the data that the chart needs to update. We would like advise you first try to disable your Internet Security software for a period of time, if the problem is resolved, we can safely assume that it is the Internet Security software that is causing the problem.

      If we can discover that the trouble is related to the internet security software, please enable the following IP addresses in your Internet Security software. These are the IPs that the chart needs to access to get data from our server:

      From 65.119.248.1 all the way through to 65.119.248.255

      Please note, later versions of certain Internet security software such as Norton's no longer require entering IP addresses. You only need to change the settings of the charting software to "permit" from within the Internet security software. For more information on configuring your Internet security software, please contact the software vendor for the product you are using.

    Loading Issues: Online clients

    If you are an Online charting client and are have trouble loading the Charts, please read on.

    • This software is Internet based. Periodically new features and upgrades are added to the program, when this occurs, generally, your Internet browser should automatically update your old cache* file. Sometimes browsers do not update the old cache files in due time. These old cache files cause many problems, the symptoms being either charts no longer load, the Toolbar disappears, or the overall loading performance of the program is slow.
    • To correct the situation, all you need to do is to delete the old cache files, relaunch the browser, and then reopen the software. Please follow the directions below:

      If you are using Microsoft Internet Explorer, here is what you should do:

      1. Close all the browsers.
      2. Right click on your IE browser icon.
      3. Click on property.
      4. Click on "general".
      5. Click on "delete file" under the Internet temporary file.
      6. Check on "delete all offline content" box.
      7. Click "OK".

      If you are using Netscape Communicator/Navigator, here is what you should do:

      1. Open Netscape Communicator/Navigator.
      2. Click on Preferences under the Edit menu.
      3. Open Advanced and then click open Caches.
      4. Click "Clear Disk Cache" button.
      5. Click "Clear Memory Cache" button.
      6. Click "OK" button.
      7. Restart the browser.

      America Online users:
      You may need to use the America Online system management tool to clear the cache as well. Or you can launch Internet Explorer outside America Online environment and use the above steps to clear the browser cache.

      * Pronounced "cash." A cache is used to speed up data transfer and may be either temporary or permanent. Memory and disk caches are in every computer to speed up instruction execution and data retrieval. These temporary caches serve as staging areas, and their contents can be changed in seconds or milliseconds. Browser caches and Internet caches hold popular Web pages long periods of time and even for the duration, because caching servers constantly update the page with the latest version from the Internet. In these cases, the cache database is actually a folder on the disk.

    CONTACT US

    FXtrek can be reached by emailing Support@FXtrek.com.