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.
November 2005
TRADERS' TIPSYou 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 HYBRIDSor 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
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.
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.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;
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
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
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
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
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 SoftwareGO BACK
info@linnsoft.com, www.linnsoft.com
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
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
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 :
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.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.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 HermanGO BACK
Genesis Financial Technologies
https://www.GenesisFT.com
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
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, BrightsparkGO BACK
+61 8 9375-1178, sales@technifilter.com
www.technifilter.com
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.952 746-5761
www.biocompsystems.com/profit
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