November 2005
TRADERS' TIPS

Here is this month's selection of Traders' Tips, contributed by various developers of technical analysis software to help readers more easily implement some of the strategies presented in this and other issues.

You can copy these formulas and programs for easy use in your spreadsheet or analysis software. Simply "select" the desired text by highlighting as you would in any word processing program, then use your standard key command for copy or choose "copy" from the browser menu. The copied text can then be "pasted" into any open spreadsheet or other software by selecting an insertion point and executing a paste command. By toggling back and forth between an application window and the open Web page, data can be transferred with ease.

This month's tips include formulas and programs for:

TRADESTATION 8.1: SPEED TRADING SYSTEM
WEALTH-LAB: SPEED TRADING SYSTEM
AMIBROKER: SPEED TRADING SYSTEM
eSIGNAL: SPEED TRADING SYSTEM
NEUROSHELL TRADER: SPEED TRADING SYSTEM
INVESTOR/RT: SPEED TRADING SYSTEM
NEOTICKER: SPEED TRADING SYSTEM
TRADING SOLUTIONS: SPEED TRADING SYSTEM
TRADE NAVIGATOR: SPEED TRADING SYSTEM
METASTOCK: SPEED TRADING SYSTEM
TECHNIFILTER PLUS: SPEED TRADING SYSTEM
BIOCOMP PROFIT 7: SPEED TRADING SYSTEM
FINANCIAL DATA CALCULATOR: TWO MOVING FUNCTION HYBRIDS
or return to November 2005 Contents


TRADESTATION 8.1: SPEED TRADING SYSTEM

In his article, "Improve Your Trading System With Speed," Gomu Vetrivel presents an indicator called speed. He defines speed as the absolute value of the difference between two closing prices. Vetrivel presents the results of tests he conducted to attempt to determine whether speed can be used to improve the performance of a system, the entries of which are based on moving average crossovers.

In the first test presented by Vetrivel, every crossover signal is traded. In the second, only crossovers with increasing speed are taken. In the third test, only crossovers with decreasing speed are taken.

Vetrivel's article already contains code written for TradeStation 2000i. We have updated that code here to run in the TradeStation 8.1 environment. In addition, the moving average and "speed" lengths are now input parameters.
 

Indicator:   _VetrivelSpeed
inputs:
 SpeedLen( 1 ) ;
variables:
 Speed( 0 ) ;
Speed = AbsValue( Close - Close[SpeedLen] ) ;
Plot1( Speed, "Speed" ) ;
Strategy:   _VetrivelBase
{ Base System }
inputs:
 AverageLen1( 10 ),
 AverageLen2( 5 ) ;
variables:
 Average1( 0 ),
 Average2( 0 ) ;
Average1 = Average( Close, AverageLen1 ) ;
Average2 = Average( Close, AverageLen2 ) ;
if Close crosses over Average1 then
 Buy this bar on Close ;
if Close crosses under Average1 then
 SellShort this bar at Close ;
if MarketPosition = -1 and Close > Average2 then
 BuyToCover this bar on Close ;
if MarketPosition = 1 and Close < Average2 then
 Sell this bar at Close ;
Strategy:   _VetrivelSpeedUp
{ Speed up - Hypothesis 1 }
inputs:
 AverageLen1( 10 ),
 AverageLen2( 5 ),
 SpeedLen( 1 ) ;
variables:
 Average1( 0 ),
 Average2( 0 ),
 Speed( 0 ) ;
Speed = AbsValue( Close - Close[SpeedLen] ) ;
Average1 = Average( Close, AverageLen1 ) ;
Average2 = Average( Close, AverageLen2 ) ;
if Speed > Speed[1] then
 begin
 if Close crosses over Average1 then
  Buy this bar on Close ;
 if Close crosses under Average1 then
  SellShort this bar at Close ;
 end ;
if MarketPosition = -1 and Close > Average2 then
 BuyToCover this bar on Close ;
if MarketPosition = 1 and Close < Average2 then
 Sell this bar at Close ;
Strategy:   _VetrivelSpeedDn
{ Speed Down - Hypothesis 2 }
inputs:
 AverageLen1( 10 ),
 AverageLen2( 5 ),
 SpeedLen( 1 ) ;
variables:
 Average1( 0 ),
 Average2( 0 ),
 Speed( 0 ) ;
Speed = AbsValue( Close - Close[SpeedLen] ) ;
Average1 = Average( Close, AverageLen1 ) ;
Average2 = Average( Close, AverageLen2 ) ;
if Speed < Speed[1] then
 begin
 if Close crosses over Average1 then
  Buy this bar on Close ;
 if Close crosses under Average1 then
  SellShort this bar at Close ;
 end ;
if Marke
etPosition = -1 and Close > Average2 then
 BuyToCover this bar on Close ;
FIGURE 1: TRADESTATION, SPEED TRADING SYSTEM. Here is a sample daily OHLC bar chart with the "_VetrivelSpeedUp" strategy and "_VetrivelSpeed" indicator applied.


 To download this code, search for the file "Speed.eld" in the Support Center at TradeStation.com.

--Mark Mills
TradeStation Securities, Inc.
A subsidiary of TradeStation Group, Inc.
www.TradeStationWorld.com


GO BACK


WEALTH-LAB: SPEED TRADING SYSTEM

To investigate how new indicators can affect the profitability of an existing trading system, you can use the AnalyzeSeries function in a ChartScript. This instructs Wealth-Lab to analyze every trade's profit and plot each one versus the series' value on a specific bar, selectable in the Analysis view. The resulting scattergraph contains a linear regression line that allows you to quickly identify the slope and strength of the correlation (Figure 2).

FIGURE 2: WEALTH-LAB, SPEED INDICATOR ON THE S&P 500 INDEX. An analysis of the raw profit produced by the speed indicator based on the S&P 500 shows a slight correlation between profit percentage and higher values of speed. The bottom chart, however, indicates that the average profit may decrease for the higher-range values (few samples). Note that generally, the bar of interest is the bar prior to the entry bar, but in the case of AtClose orders, we're interested in the series value on the actual entry bar.


To see how speed and the logic presented by Gomu Vetrivel in his article, "Improve Your Trading System With Speed," can affect trading system results, we wrote a simple procedure that creates two series, hSpeed and hScore, that are passed to AnalyzeSeries calls. By simply adding the study to any ChartScript, you can analyze how adding filters based on either of the series would affect profitability.
 

Study: hSpeed and hScore
procedure AnalyzeSpeed();
var hSpeed, hScore: integer;
begin
  hSpeed := CreateSeries;
  hScore := CreateSeries;
  for Bar := 1 to BarCount - 1 do
  begin
{ Speed = Absolute value of the 1-day Rate of Change }
    @hSpeed[Bar] := Abs( ROC( Bar, #Close, 1 ) );
    if @hSpeed[Bar] > @hSpeed[Bar-1] then
      @hScore[Bar] := 1
    else
      @hScore[Bar] := -1;
  end;
  AnalyzeSeries( hSpeed, ‘Speed' );
  AnalyzeSeries( hScore, ‘Score' );
end;
AnalyzeSpeed;
Here, hScore is the main indicator of interest, since it represents whether the speed is increasing (1) or decreasing (-1) relative to the previous bar. Our analysis results of the effect of the speed and score series on simulated trading of the S&P 500 index symbol, and separately on its components, are demonstrated in Figures 2, 3, and 4.
 


FIGURE 3: WEALTH-LAB, SCORE INDICATOR ON THE S&P 500 INDEX. Although correlation is still on the low end, the S&P 500 index raw profit analysis of score indicates that incorporating the score series in trade-trigger logic would result in higher profit for this single-symbol simulation.
 


FIGURE 4: WEALTH-LAB, SCORE INDICATOR ON S&P 500 INDEX COMPONENTS. Collectively analyzing more than 97,000 trades for every component of the S&P 500 index over the test period using the Wealth-Lab $imulator's raw profit mode, the score analysis indicates that no reason exists (near zero correlation) to expect that incorporating the filter will improve the results of this trading system.


WealthScript code:

{ Baseline trading logic from article. Note that since the entries and }
{ exits are not mutually exclusive, the possibility exists to hold both }
{ a long and short position simultaneously for the same symbol. }
var Bar, p, Processed, APCount, hSlow, hFast: integer;
hSlow := SMASeries( #Close, 10 );
hFast := SMASeries( #Close, 5 );
PlotSeries( hSlow, 0, #Red, #Thin );
PlotSeries( hFast, 0, #Blue, #Thin );
HideVolume;
for Bar := 10 to BarCount - 1 do
begin
{ Exit Logic }
  APCount := ActivePositionCount;
  Processed := 0;
  for p := PositionCount - 1 downto 0 do
    if PositionActive( p ) then
    begin
      if PositionLong( p ) then
      begin
        if CrossUnder( Bar, #Close, hFast) then
          SellAtClose( Bar, p, ‘' );
      end
      else if CrossOver( Bar, #Close, hFast ) then
        CoverAtClose( Bar, p, ‘' );
      Inc( Processed );
      if Processed = APCount then
        break;
    end;
{ Entry Logic }
  if CrossOver( Bar, #Close, hSlow ) then
    BuyAtClose( Bar, ‘L' )
  else if CrossUnder( Bar, #Close, hSlow ) then
    ShortAtClose( Bar, ‘S' );
end;
--Robert Sucher
www.wealth-lab.com


GO BACK



 

AMIBROKER: SPEED TRADING SYSTEM

In "Improve Your Trading System With Speed," Gomu Vetrivel presents a method to improve trading system performance by choosing only the entry signals that occur when price speed increases. Speed is defined as the absolute difference between today's and yesterday's closing prices.

Coding such speed-enhanced trading systems is easy in AmiBroker Formula Language (AFL). Ready-to-use code is presented here. To demonstrate, the code uses a simple 10-/five-bar moving average crossover as a base system (as in Vetrivel's article); however, users can replace the entry/exit rules (the first four lines of the code) by any other system of their choice to check whether speed-filtering helps.
 

// Base trading system
Buy = Cross( C, MA( C, 10 ) );
Sell = Cross( MA( C, 5 ), C );
Short = Cross( MA( C, 10 ), C );
Cover = Cross( C, MA( C, 5 ) );
// Speed calculation
Speed = abs( C - Ref( C, -1 ) );
// SpeedUp is boolean, which is true when speed increases
SpeedUp = Speed > Ref( Speed, -1 );
SpeedDown = Speed < Ref( Speed, -1 );
// these statements modify trading system rules
// to enter long/short only when speed increases
// (hypothesis 1)
Buy = Buy AND SpeedUp;
Short = Short AND SpeedUp;


Figure 5 shows the backtest results of a speed-filtered (1) and plain (2) moving average crossover system applied to Microsoft (MSFT) in the period January 1, 2003, to May 31, 2005. Clearly, this very simple speed-filtered system performed better in almost every aspect, including profit (67% versus 58%), drawdowns (-25% versus -35%), and with less exposure.

FIGURE 5: AMIBROKER, SPEED TRADING SYSTEM. Here is a sample AmiBroker chart showing the backtest results of a speed-filtered (1) and plain (2) moving average crossover system applied to Microsoft (MSFT).
--Tomasz Janeczko, AmiBroker.com
www.amibroker.com


GO BACK


eSIGNAL: SPEED TRADING SYSTEM
For this month's article by Gomu Vetrivel called "Improve Your Trading System With Speed," we've provided the following formula, "Speed.efs." The study plots a histogram of the speed value multiplied by 100. The histogram bar will be colored green when the value is greater than the previous value, red when less than, and gray when there is no change in speed. A sample chart is shown in Figure 6.
 


FIGURE 6: eSIGNAL, SPEED TRADING SYSTEM. Here is a demonstration of the speed trading system in eSignal. The study plots a histogram of the speed value multiplied by 100. The histogram bars are colored green when their value is greater than the previous value, red when less, and gray when there is no change in speed.


To discuss this study or download a complete copy of the formula, please visit the EFS Library Discussion Board forum under the Bulletin Boards link at www.esignalcentral.com. The formula is also available at www.traders.com.
 

/***************************************
Provided By : eSignal (c) Copyright 2005
Description:  Improve Your Trading System With Speed - by Gomu Vetrivel
Version 1.0  9/12/2005
Notes:
November 2005 Issue of Stocks & Commodities Magazine
* Study requires version 7.9 or higher.
Formula Parameters:                 Defaults:
N/A
***************************************/
function preMain() {
    setStudyTitle("Speed ");
    setShowTitleParameters(false);
    setCursorLabelName("Speed", 0);
    setDefaultBarFgColor(Color.grey, 0);
    setDefaultBarThickness(3, 0);
    setPlotType(PLOTTYPE_HISTOGRAM, 0);
 
}
var bVersion = null;
var nSpeed = null;
var nSpeed1 = null;
//Speed = Distance traveled by price / Time taken
function main() {
    if (bVersion == null) bVersion = verify();
    if (bVersion == false) return;
    var nState = getBarState();
 
    if (nState == BARSTATE_NEWBAR) {
        if (nSpeed != null) nSpeed1 = nSpeed;
    }
    nSpeed = Math.abs(close(0) - close(-1)) *100;
 
    if (nSpeed > nSpeed1) setBarFgColor(Color.green);
    if (nSpeed < nSpeed1) setBarFgColor(Color.red);
 
    return nSpeed;
}
/***** Support Functions *****/
function verify() {
  var b = false;
  if (getBuildNumber() < 700) {
    drawTextAbsolute(5, 35, "This study requires version 7.9 or later.", Color.white,
      Color.blue, Text.RELATIVETOBOTTOM|Text.RELATIVETOLEFT|Text.BOLD|Text.LEFT,
      null, 13, "error");
    drawTextAbsolute(5, 20, "Click HERE to upgrade.@URL=https://www.esignal.com/download/default.asp",
      Color.white, Color.blue, Text.RELATIVETOBOTTOM|Text.RELATIVETOLEFT|Text.BOLD|Text.LEFT,
      null, 13, "upgrade");
    return b;
  } else {
    b = true;
  }
  return b;
}
--Jason Keck
eSignal, a division of Interactive Data Corp.
800 815-8256, www.esignalcentral.com


GO BACK


NEUROSHELL TRADER: SPEED TRADING SYSTEM

The speed trading systems presented by Gomu Vetrivel in his article in this issue can be implemented easily in NeuroShell Trader by combining a few of NeuroShell Trader's 800-plus indicators and NeuroShell Trader's Trading Strategy Wizard. To recreate the speed trading systems, select "New Trading Strategy ..." from the menu and enter the following entry and exit conditions in the appropriate locations of the Trading Strategy Wizard:
 

Hypothesis #1 Trading System:
  Generate a buy long MARKET order if ALL of the following are true:
 AvgCrossoverAbove ( Close, 1, 10 )
 A>B ( Abs( Momentum( Close, 1 ) ), Lag( Abs( Momentum( Close, 1 ), 1 )
  Generate a sell long MARKET order if ALL of the following are true:
 AvgCrossoverBelow ( Close, 1, 5 )
  Generate a sell short MARKET order if ALL of the following are true:
 AvgCrossoverBelow ( Close, 1, 10 )
 A>B ( Abs( Momentum( Close, 1 ) ), Lag( Abs( Momentum( Close, 1 ), 1 )
  Generate a cover short MARKET order if ALL of the following are true:
 AvgCrossoverAbove ( Close, 1, 5 )
Hypothesis #2 Trading System:
  Generate a buy long MARKET order if ALL of the following are true:
 AvgCrossoverAbove ( Close, 1, 10 )
 A<B ( Abs( Momentum( Close, 1 ) ), Lag( Abs( Momentum( Close, 1 ), 1 )
  Generate a sell long MARKET order if ALL of the following are true:
 AvgCrossoverBelow ( Close, 1, 5 )
  Generate a sell short MARKET order if ALL of the following are true:
 AvgCrossoverBelow ( Close, 1, 10 )
 A<B ( Abs( Momentum( Close, 1 ) ), Lag( Abs( Momentum( Close, 1 ), 1 )
  Generate a cover short MARKET order if ALL of the following are true:
 AvgCrossoverAbove ( Close, 1, 5 )


If you have NeuroShell Trader Professional, you can also choose whether the system parameters should be optimized. After backtesting the trading strategy, use the "Detailed Analysis ..." button to view the backtest and trade-by-trade statistics for the speed trading systems.

FIGURE 7: NEUROSHELL TRADER, SPEED TRADING SYSTEM. Here is a sample NeuroShell chart demonstrating the speed trading systems described by Gomu Vetrivel.


For more information on NeuroShell Trader, visit our website, www.NeuroShell.com.

--Marge Sherald, Ward Systems Group, Inc.
301 662-7950, sales@wardsystems.com
www.neuroshell.com


GO BACK


INVESTOR/RT: SPEED TRADING SYSTEM

Hypothesis 1 given in "Improve Your Trading System With Speed" by Gomu Vetrivel can be implemented in Investor/RT by adding the following condition to any entry signal:
 

AND ABS(CL - CL.1) > ABS(CL.1 - CL.2)

Similarly, hypothesis 2 can be implemented by adding the following condition to any entry signal:

AND ABS(CL - CL.1) < ABS(CL.1 - CL.2)

 The complete signals mentioned in the article can be coded as follows:

Hypothesis 1 Buy:
CL > MA AND CL.1 < MA.1 AND ABS(CL - CL.1) > ABS(CL.1 - CL.2)
(MA is setup as simple 10 period on close)

Hypothesis 1 Short:
CL < MA AND CL.1 > MA.1 AND ABS(CL - CL.1) > ABS(CL.1 - CL.2)
(MA is setup as simple 10 period on close)

Hypothesis 1 Exit Long (Sell):
CL < MA
(MA is setup as simple 5 period on close)

Hypothesis 1 Exit Short (Cover):
CL > MA
(MA is setup as simple 5 period on close)

Hypothesis 2 Buy:
CL > MA AND CL.1 < MA.1 AND ABS(CL - CL.1) < ABS(CL.1 - CL.2)
(MA is setup as simple 10 period on close)

Hypothesis 2 Short:
CL < MA AND CL.1 > MA.1 AND ABS(CL - CL.1) < ABS(CL.1 - CL.2)
(MA is setup as simple 10 period on close)

Hypothesis 2 Exit Long (Sell):
CL < MA
(MA is setup as simple 5 period on close)

Hypothesis 2 Exit Short (Cover):
CL > MA
(MA is setup as simple 5 period on close)


More information on Investor/RT Real Trading Systems and backtesting can be found at https://www.linnsoft.com/tour/tradingsystems.htm.

--Chad Payne, Linn Software
info@linnsoft.com, www.linnsoft.com
GO BACK


NEOTICKER: SPEED TRADING SYSTEM

The three trading systems presented in the article "Improve Your Trading System With Speed" by Gomu Vetrivel can be implemented as three formula trading systems in NeoTicker.

The first indicator is the base crossover system (Listing 1) we named "TASC Base System." The second indicator is Vetrivel's hypothesis 1 system (Listing 2), which we named "Tasc Hypothesis 1 System." The third indicator is Vetrivel's hypothesis 2 system (Listing 3) that we named "Tasc Hypothesis 2 System." All three systems have one integer parameter and plot system equity as the result.

Next, do a side-by-side comparison of the three systems using a daily Russell 2000 chart (Figure 8). First, load Russell 2000 index daily bars into a chart, then add the base system. At the system tab, set the price multiple to 100; set commission to none; check on historical test; and set the begin date to 01/01/2001 and the end date to 05/31/2005. Then hit "apply" to start the calculation. Change the same settings with the other two hypothesis systems and add them to the chart. When all the systems are plotted, it clearly shows hypothesis 1 is a winner.

FIGURE 8: NEOTICKER, SPEED TRADING SYSTEM. Here is a daily chart of the Russell 2000 index showing a side-by-side comparison of the three systems described in Gomu Vetrivel's article: the base system and the two hypothesized systems. When all three systems are plotted, it clearly shows hypothesis 1 a winner.
LISTING 1
$mytradesize := param1;
longatmarket(xabove(c, average(c, 10)), $mytradesize);
shortatmarket(xbelow(c, average(c, 10)), $mytradesize);
longexitatmarket(openpositionlong>0 and c<average(c,5),   $mytradesize);
shortexitatmarket(openpositionshort>0 and c>average(c,5), $mytradesize);
plot1 := currentequity;
LISTING 2
$mytradesize := param1;
x := absvalue(c-c(1));
longatmarket(x>x(1) and xabove(c, average(c, 10))>0, $mytradesize);
shortatmarket(x>x(1) and xbelow(c, average(c, 10))>0, $mytradesize);
longexitatmarket(openpositionlong>0 and c<average(c,5), $mytradesize);
shortexitatmarket(openpositionshort>0 and c>average(c,5), $mytradesize);
plot1 := currentequity;
LISTING 3
$mytradesize := param1;
x := absvalue(c-c(1));
longatmarket(x<x(1) and xabove(c, average(c,10))>0, $mytradesize);
shortatmarket(x<x(1) and xbelow(c, average(c,10))>0, $mytradeisze);
longexitatmarket(openpositionlong>0 and c<average(c,5), $mytradesize);
shortexitatmarket(openpositionshort>0 and c>average(c,5), $mytradesize);
plot1 := currentequity;


If you are interested in testing the three systems further, you can download a version of this trading system code along with a NeoTicker example group from the NeoTicker Yahoo! user group.

--Kenneth Yuen, TickQuest Inc.
www.tickquest.com


GO BACK



 

TRADING SOLUTIONS: SPEED TRADING SYSTEM

In "Improve Your Trading System With Speed" in this issue, Gomu Vetrivel describes trading systems that test the hypothesis that speed (that is, the amount by which the price changes) can be used to improve the timing of trades. These trading systems can be entered into TradingSolutions as follows:
 

Name: Speed Test ? Base System
Inputs: Close
Enter Long:
 1. CrossAbove ( Close, MA ( Close, 10 ))
Exit Long:
 1. System_IsLong()
 2. LT(Close, MA (Close, 5))
Enter Short:
 1. CrossBelow ( Close, MA ( Close, 10 ))
Exit Short:
 1. System_IsShort()
 2. GT(Close, MA (Close, 5))
Name: Speed Test - Hypothesis 1
Inputs: Close
Copy "Speed Test - Base System" and add the following rules:
Enter Short:
 2. Inc ( Abs ( Change ( Close, 1 )))
Enter Short:
 2. Inc ( Abs ( Change ( Close, 1 )))
Name: Speed Test - Hypothesis 2
Inputs: Close
Copy "Speed Test - Hypothesis 1" and change "Inc" to "Dec".


These systems are also available as a function file that can be downloaded from the TradingSolutions website (www.tradingsolutions.com) in the Solution Library section.

--Gary Geniesse
NeuroDimension, Inc.
800 634-3327, 352 377-5144
www.tradingsolutions.com


GO BACK


TRADE NAVIGATOR: SPEED TRADING SYSTEM

In the Platinum version of Trade Navigator, you can create a strategy, backtest it to see its past performance record, and display the trades on charts.

Many of the functions needed to recreate the strategies described in Gomu Vetrivel's article, "Improve Your Trading System With Speed," are already found in Trade Navigator, such as crosses above, MovingAvg, crosses below, and Abs. To recreate the strategies for the speed trading systems, follow these steps in Trade Navigator :
 

Base system strategy
Long Entry #001
(1) Go to the Edit menu and click on Strategies. This
    will bring up the Trader's Toolbox already set to
    the Strategies tab (Figure 9).
(2) Click on the New button. This will bring you to the
    New Strategy window.
(3) Click on the New Rule button.
(4) You will be asked if you would like to use the
    Condition Builder. In this case click No. This
    will take you to the New Rule window.
(5) Type the formula IF Crosses Above (Close , MovingAvg
    (Close , 10))
(6) Set the Order to place for Next Bar Action to Long
    Entry (BUY), and the Order Type to Market.
(7) Click the Verify button.
(8) Click the Save button and type Buy Order for the
    name of the Rule then click OK.
(9) Click the X in the upper right corner of the Rule
    editor window to return to the New Strategy Window.
Long Exit # 001
(1) Click on the New Rule button.
(2) You will be asked if you would like to use the
    Condition Builder. In this case click No. This
    will take you to the New Rule window.
(3) Type the formula IF Crosses Below (Close , MovingAvg
    (Close , 5)) into the Condition box.
(4) Set the Order to place for Next Bar Action to Long
    Exit (SELL), and the Order Type to Market.
(5) Click the Verify button.
(6) Click the Save button then click Ok.
(7) Click the X in the upper right corner of the Rule
    editor window to return to the New Strategy Window.
Short Entry #001
(1) Click on the New Rule button.
(2) You will be asked if you would like to use the
    Condition Builder. In this case click No. This
    will take you to the New Rule window.
(3) Type the formula IF Crosses Below (Close , MovingAvg
    (Close , 10)) into the Condition box.
(4) Set the Order to place for Next Bar Action to Short
    Entry (SELL), and the Order Type to Market.
(5) Click the Verify button.
(6) Click the Save button then click Ok.
(7) Click the X in the upper right corner of the Rule
    editor window to return to the New Strategy Window.
Short Exit #001
(1) Click on the New Rule button.
(2) You will be asked if you would like to use the
    Condition Builder. In this case click No. This will
    take you to the New Rule window.
(3) Type the formula IF Crosses Above (Close , MovingAvg
    (Close , 5)) into the Condition box.
(4) Set the Order to place for Next Bar Action to Short
    Exit (BUY), and the Order Type to Market.
(5) Click the Verify button.
(6) Click the Save button then click Ok.
(7) Click the X in the upper right corner of the Rule
    editor window to return to the New Strategy Window.
Click on the "Data" tab and select the symbol that you wish to run the strategy on. (This can be changed to a different symbol later.) In this case, you will want to select the symbol $Rut.

Under "Date Range to Test," set the "From" date to 1/1/2001 and the "To" date to 5/31/2005.

To save your new strategy, click the Save button and type the name you wish to give the strategy, then click OK.

Now that you have saved your new strategy, you can run the strategy by clicking the Run button (Figure 9). This will bring up the "Performance Reports" for this strategy.

FIGURE 9: TRADE NAVIGATOR, SPEED TRADING SYSTEM. Here is the trader's toolbox in Trade Navigator where you select a stragegy.


You can check to see whether there is an order to place for the next bar by clicking the Orders button. This will bring up the "Orders for Next Bar" report.

Another way to use your new strategy in Trade Navigator Platinum is to apply it to a chart of $Rut to visually see where the trades were placed over the history of the chart. To do this:

1) Click on the chart.
2) Type the letter "A."
3) Click on the "Strategies" tab and double-click the name of the strategy in the list.

You can also view the orders for the "next bar" report from a chart that the strategy is applied to by clicking the orders for the "next bar" button on the toolbar.

To run the strategy on a different symbol, simply go back to the data tab in the strategy and select a new symbol. In this case, select $SPX. To see it on a chart, simply apply it to a chart of $SPX.

Hypothesis 1 & hypothesis 2
To recreate the strategies for hypothesis 1 and hypothesis 2 from the article, simply follow the steps above and substitute the following formulas:
 

Hypothesis 1
Long Entry #001 - IF Crosses Above (Close , MovingAvg (Close , 10))
 And Abs (Close - Close.1) > Abs (Close.1 - Close.2)
Long Exit #001 - IF Crosses Below (Close , MovingAvg (Close , 5))
Short Entry #001 - IF Crosses Below (Close , MovingAvg (Close , 10))
 And Abs (Close - Close.1) > Abs (Close.1 - Close.2)
Short Exit #001 - IF Crosses Above (Close , MovingAvg (Close , 5))
Hypothesis 2
Long Entry #001 - IF Crosses Above (Close , MovingAvg (Close , 10))
 And Abs (Close - Close.1) < Abs (Close.1 - Close.2)
Long Exit #001 - IF Crosses Below (Close , MovingAvg (Close , 5))
Short Entry #001 - IF Crosses Below (Close , MovingAvg (Close , 10))
 And Abs (Close - Close.1) < Abs (Close.1 - Close.2)
Short Exit #001 - IF Crosses Above (Close , MovingAvg (Close , 5))


Alternatively, you can edit the entry rules in the first strategy to match the formulas above and click the Save As button and give it a new name.

In Trade Navigator, you can run all three strategies on both symbols at the same time by setting them up in a Strategy Basket.

For your convenience, we have created a special file that you can download that will add the speed strategies to Trade Navigator for you. Simply download the free special file "SandC002" using your Trade Navigator and follow the upgrade prompts.

--Michael Herman
Genesis Financial Technologies
https://www.GenesisFT.com
GO BACK
 


METASTOCK: SPEED TRADING SYSTEM

Gomu Vetrivel's article, "Improving Your Trading System with Speed," discusses the value of measuring speed in your trading systems. He uses a basic system as a control and two variations using speed in different ways. The MetaStock code and instructions for entering these systems are as follows:

1. Select Tools > the Enhanced System Tester.
2. Click New.
3. Enter a name, "Base System"
4. Select the Buy Order tab and enter the following formula:

Cross( C, Mov( C, 10, S ) )

5. Select the Sell Order tab and enter the following formula:

Cross( Mov( C, 5, S ), C )

6. Select the Sell Short Order tab and enter the following formula:

Cross( Mov( C, 10, S ), C )

7. Select the Buy to Cover Order tab and enter this formula:

Cross( C, Mov( C, 5, S ) )

8. Click OK to close the system editor.
9. Click New.
10. Enter a name, "Hypothesis 1"
11. Select the Buy Order tab and enter the following formula:

X:= Abs( Roc( C, 1, $ ) );
Cross( C, Mov( C, 10, S ) ) AND X > Ref( X, -1 )

12. Select the Sell Order tab and enter the following formula:

Cross( Mov( C, 5, S ), C )

13. Select the Sell Short Order tab and enter the following formula:

X:= Abs( Roc( C, 1, $ ) );
Cross( Mov( C, 10, S ), C ) AND X > Ref( X, -1 )

14.Select the Buy to Cover Order tab and enter this formula:

Cross( C, Mov( C, 5, S ) )

15. Click OK to close the system editor.
16. Click New.
17. Enter a name, "Hypothesis 2"
18. Select the Buy Order tab and enter the following formula:

X:= Abs( Roc( C, 1, $ ) );
Cross( C, Mov( C, 10, S ) ) AND X < Ref( X, -1 )

19. Select the Sell Order tab and enter the following formula:

Cross( Mov( C, 5, S ), C )

20. Select the Sell Short Order tab and enter the following formula:

X:= Abs( Roc( C, 1, $ ) );
Cross( Mov( C, 10, S ), C ) AND X < Ref( X, -1 )

21. Select the Buy to Cover Order tab and enter this formula:

Cross( C, Mov( C, 5, S ) )

22. Click OK to close the system editor.
 

--William Golson
MetaStock Support Representative
Equis International (A Reuters Company)
801 265-9998, www.metastock.com


GO BACK


TECHNIFILTER PLUS: SPEED TRADING SYSTEM

Here are the TechniFilter Plus formulas based on Gomu Vetrivel's article in this issue, "Improve Your Trading System With Speed."
 

Base System
NAME: Vetrivel Base
TEST TYPE: equal
DATE RANGE: All
POSITION LIMIT: none
ENTRY FEE: 33
EXIT FEE: 33
ISSUES:
INITIAL INVESTMENT: 5000
FORMULAS--------

[1] Date
[2] SpeedTest
 [1]: (C-Cy1)u0
 [2]:  [1]<Ty1
[3] EnterSignal
 (C-Ca10)u2-ty1
   [4] ExitSignal
  (C-Ca5)u2-ty1
RULES--------

  r1: Long
       buy long all on Close
       at signal: Long     [3]=1 & shares=0
  r2: ExitLong
       stop long all on Close
       at signal: ExitLong     [4]=-1
  r3: Short
       open short all on Close
       at signal: EnterShort     [3]=-1 & shares=0
  r4: ExitShort
       stop short all on Close
       at signal: ExitShort     [4]=1
Hypothesis 1
NAME: Vetrivel Hyp1
TEST TYPE: equal
DATE RANGE: all
POSITION LIMIT: none
ENTRY FEE: 33
EXIT FEE: 33
ISSUES:
INITIAL INVESTMENT: 5000
FORMULAS--------

[1] Date
[2] SpeedTest
 [1]: (C-Cy1)u0
 [2]:  [1]>Ty1
[3] EnterSignal
   (C-Ca10)u2-ty1
[4] ExitSignal
 (C-Ca5)u2-ty1
RULES--------

  r1: Long
       buy long all on Close
       at signal: Long     [3]=1 & ([2] = 1 & shares=0)
  r2: ExitLong
       stop long all on Close
       at signal: ExitLong     [4]=-1
  r3: Short
       open short all on Close
       at signal: EnterShort     [2]=1  & ([3]=-1 & shares=0)
  r4: ExitShort
       stop short all on Close
       at signal: ExitShort     [4]=1
Hypothesis 2
NAME: Vetrivel Hyp2
TEST TYPE: equal
DATE RANGE: all
POSITION LIMIT: none
ENTRY FEE: 33
EXIT FEE: 33
ISSUES:
INITIAL INVESTMENT: 5000
FORMULAS--------

[1] Date
[2] SpeedTest
 [1]: (C-Cy1)u0
 [2]:  [1]<Ty1
[3] EnterSignal
 (C-Ca10)u2-ty1
[4] ExitSignal
 (C-Ca5)u2-ty1
RULES--------

  r1: Long
       buy long all on Close
       at signal: Long     [3]=1 & ([2] = 1 & shares=0)
  r2: ExitLong
       stop long all on Close
       at signal: ExitLong     [4]=-1
  r3: Short
       open short all on Close
       at signal: EnterShort     [2]=1  & ([3]=-1 & shares=0)
  r4: ExitShort
       stop short all on Close
       at signal: ExitShort     [4]=1


 A sample chart is shown in Figure 10. Visit the TechniFilter Plus website to download this strategy test.

FIGURE 10: TECHNIFILTER PLUS, SPEED TRADING SYSTEM. Here is a sample chart of the speed trading system.
--Benzie Pikoos, Brightspark
+61 8 9375-1178, sales@technifilter.com
www.technifilter.com
GO BACK


BIOCOMP PROFIT 7: SPEED TRADING SYSTEM

In his article in this issue, Gomu Vetrivel demonstrates that by merely adding "speed" (that is, the absolute value of the change in price), you can improve on a simple moving average crossover system. We also found that to be true using BioComp Profit when forecasting ahead by two days.

BioComp Profit users can easily compute the speed indicator by clicking on the traded price, then applying a "change" (CHG) and then an "absolute value" (ABS). To recreate the moving average crossover indicator, click on the traded price again and apply SMA-10, then select both that and the traded price, and apply the Diff function. Next, build models using both of these input indicators, predicting the SPX close ahead by two bars.

While such a simple system is not a great equity builder, we see in the "Variables Report" for the system we built that about 80% of the information comes from the speed indicator, and the system made about 50% more equity with it compared to one without it.

--Carl Cook, BioComp Systems, Inc.
www.biocompsystems.com/profit
952 746-5761

GO BACK


FINANCIAL DATA CALCULATOR: Two Moving Function Hybrids

In my recent STOCKS & COMMODITIES article titled "The Hunt For Superior Signals: Two Moving Function Hybrids" (September 2005), I recommended that the moving slope rate of change (MSROC) be part of every trader and researcher's toolbox.

Graphs may look smart and anecdotes may make good copy, but the real proof is the trading performance. Since I didn't have enough room in my article to present further proof of MSROC's value, allow me to illustrate a previously documented trading system and its improvement by switching the signal mechanism from a standard momentum calculation to one using the moving slope rate of change.

One of the more popular trading systems appearing in newsletters is one in which a 12-month ROC of the NASDAQ Composite is plotted against the 12-month moving average of that ROC. The mechanics of the system are quite simple: a crossover of the 12-month ROC of the NASDAQ Composite close against its 12-month moving average will trigger either a buy (if crossing up) or an exit (if crossing down). Since 1987, this system, which was either long or out of the market, had 14 buy signals, 11 of which were winners. That profitability and the fact that the system rules are uncomplicated is the tease. However, the system would not be suitable for a professional who has to be mindful of daily drawdowns, as it is based solely on end-of-month data.

That is, the trader is to wake up on the last trading day of the month, make a decision, and then fall asleep until the next month-end, regardless of what happens in the interim. Trading the month-end system as proposed is not impossible, but it creates huge professional liability. For example, how does a professional trader in a litigious society explain that regardless of what is happening in the world, he can only make decisions and effect trading on the last day of the month? Those same constraints, minus the fear of litigation, affect individual traders as well.

Should one make the documented system realistic by using daily data, one would plot the 252-day ROC against the 252-day moving average of that ROC (since 252 trading days usually constitute a year). You are still comparing an annual rate of change to its annual moving average, but you now see the differences on a daily basis. When viewed in this realistic light, the number of trades increases to 45 and the winning ratio drops from 78% to 42%. As they say, sometimes realism hurts.

The reason for the poorer performance is that the indicator chosen (rate of change), despite being smoothed with a humongous 252-day moving average, is still erratic. But if you switch from using a 252-day ROC to a 252-day MSROC, you will acquire smoothness while eliminating two-thirds of the trades. That is, by using MSROC, you drop down to 15 trades (10 of which are winners) and get to operate the system on a daily basis, and improve your trading statistics practically across the board. The statistics are shown in Figure 11:

FIGURE 11: INDICATOR PERFORMANCE

Testing the month-end ROC system and our two tradable variations (daily ROC and daily MSROC) on the Dow Jones and S&P 500 market indexes showed similar improvements. However, US stock market indexes have high correlations, and the fact that a successful NASDAQ trading program also worked for the Dow and the S&P 500 does not prove the system is robust. To gain comfort with our approach, we therefore ran the identical systems on other datasets representing a broader sample of market activity. The profitability improvement on all tested datasets constituting a diverse range of markets is presented in Figure 12.

FIGURE 12: PROFITABILITY IMPROVEMENT

The worst performer here was the Nikkei, but the proposed strategy was a long-only program, and during the test period, the Nikkei experienced a prolonged downtrend. This example was not anecdotally selected, but a published system we have improved by a simple change of the yardstick. This author does not recommend the published system, only that a trader enamored with that system consider changing the momentum measuring device to the MSROC.

I don't have to tell this trading audience that market prices are fractal; if a market trading tool works on annual or quarterly data, it most likely works on daily or intraday data also. If you are using rate of change (ROC) or relative strength index (RSI) as a momentum tool, you ought to look at using MSROC to improve your results.

--William Rafter, Mathematical Investment Decisions, Inc. www.mathinvestdecisions.com
GO BACK

All rights reserved. © Copyright 2005, Technical Analysis, Inc.


Return to November 2005 Contents