MMHeader

click here to go to MoneyMentor.com

TradeStation Made Easy!

TSME Don't let the size of this book fool you. It's 746 pages of "How To" and numerous examples, walking you through from opening the box to programming profitable systems with EasyLanguage. It's about time someone made this powerful and extensive software easy to understand!

Sunny has been teaching her "Solving the Puzzle" seminars for 20 years. Now it is all contained in one book--a book that actually makes TradeStation and EasyLanguage easy to use. Something that none of TradeStation's documentation does.


Readers of this newest Sunny Harris book, come here for downloads mentioned in the book.

Errata Sheet (Corrections to the Manuscript)

Templates Mentioned in Chapter 6:

Click here to download ELAs for Examples in TSME

Indicator Template:
{INDICATOR NAME AND PURPOSE: xxx}
INPUTS: xx;
VARIABLES: xx;
Condition1 = xx;
IF Condition1 THEN BEGIN
Value1 = xx;
xx;
END;
Plot1(Value1,”Value1”);

STRATEGY Template:
{STRATEGY NAME AND PURPOSE: xxx}
INPUTS: xx;
VARIABLES: xx;
Condition1 = xx;
Condition2 = xx;
IF Condition1 THEN BEGIN
BUY xx THIS BAR;
IF Condition2 THEN BEGIN
SELL xx THIS BAR;
END;

Function Template:
{FUNCTION NAME AND PURPOSE: xxx}
INPUTS: xx;
VARIABLES: xx;
Condition1 = xx;
Value1 = xx;
IF Condition1 THEN BEGIN
xx;
xx;
END;
xxx=Value1;

Figure 6.10: RSI Using SetColor showing colors for Overbought and Oversold

Plot1(RSI(Close, 9), "RSI") ;
If Plot1 > 65 Then
SetPlotColor(1, Blue);
If Plot1 < 35 Then
SetPlotColor(1, Green);

Code for the Indicators and Strategy Mentioned throughout the book:

Signal to Close the Open Trade

IF LastBarOnChart THEN BEGIN
IF MarketPositon = 1 THEN ExitLong;
IF MarketPosition = -1 THEN ExitShort;
END;

Indicator for 200-day Moving Average

PLOT1(Average(C,200),"200MAV");

I200MAV

Figure E.1—Indicator: 200Day Moving Average

PaintBar for 200-day Moving Average

Value91=Average(C,200);
Condition1=H>Value91;
Condition2=L<Value91;
IF Condition1 OR Condition2 THEN BEGIN
PlotPaintBar(L,H,"PB200");
If Condition1 THEN SetPlotColor(1,DarkGreen)
ELSE IF Condition2 THEN SetPlotColor(1,Red);
END;

PB200MAV

Figure D.1—PaintBar for 200-Day Moving Average

ShowMe for 200-day Moving Average

Value91=Average(C,200);
Condition1=H>Value91;
Condition2=L<Value91;
IF Condition1 OR Condition2 THEN BEGIN
Plot1(C,"PB200");
If Condition1 THEN SetPlotColor(1,DarkGreen)
ELSE IF Condition2 THEN SetPlotColor(1,Red);
END;

SM200MAV

Figure D.3—ShowMe for 200 Day Moving Average

Filter for 200-day Moving Average

INPUTS: UpColor(Green), DnColor(Red), L1(200);
VARS: jtext("");
Value1 = sjh_DynamicAvg$$_f(Close,L1,.25,2,31);
IF C > Value1 THEN BEGIN
jtext = "Long";
Plot1( jtext, "MA" , white) ; SetPlotBGColor(1,UpColor);
END;
IF C < Value1 THEN BEGIN
jtext = "Short";
Plot1( jtext, "MA" ,white) ; SetPlotBGColor(1,DnColor);
END;

Radar200MAV

Figure D.4—Filter for 200 Day MAV

You may have difficulty getting this one to work at first. The trick to making RadarScreen work is to go into the Format screen and change the value in "Load additional data for accumulative calculation" to a number that is greateer than the length of the maximum calculation of the indicator. So, for the 200 day moving average, this value needs to be set to 201.

Our Strategy

INPUTS: DATE1(960101),DATE2(1101231),Length1(3),Length2(13),Leng(9),RSIleng(9),
ADXswt(0), RSIswt(0),jRSIOB(75), jRSIOS(25), xHR(180), yHR(60),Dollars(100),LossL(100),LossS(100);
IF LENGTH1<LENGTH2 THEN BEGIN
IF Date >= Date1 AND DATE<=DATE2 THEN BEGIN
Value1=xHR;
Value2=yHR;
Condition1=ADX(Leng)>ADX(Leng)[1];
Condition2=RSI(C,RSIleng)<jRSIOB;
Condition3=RSI(C,RSIleng)>jRSIOS;
IF ADXswt=1 THEN Condition1=true;
IF RSIswt=1 THEN Condition2=true;
IF RSIswt=1 THEN Condition3=true;
IF CurrentBar > 1
AND XAverage(Close,Length1) > XAverage(Close,Length2)
AND Condition1 AND Condition2
THEN BUY This Bar on Close;
IF CurrentBar > 1
AND XAverage(Close,Length1) < XAverage(Close,Length2)
AND Condition1 AND Condition3
THEN SELL SHORT This Bar on Close;
IF date>DATE2 THEN BEGIN
IF MarketPosition=+1 THEN SELL This Bar on Close;
IF MarketPosition=-1 THEN BUYTOCOVER This Bar on Close;
END;
IF BarsSinceEntry=xHR AND PositionProfit<Dollars THEN Sell This Bar;
IF BarsSinceEntry=yHR AND PositionProfit<Dollars THEN BuyToCover This Bar ;
IF PositionProfit < -LossL THEN SELL This Bar;
IF PositionProfit < -LossS THEN BUYTOCOVER This Bar;
IF Date>=LastCalcDate THEN BEGIN
SELL This Bar; BUYTOCOVER This Bar;
END;
END;
END;

Figure D.5 & D.6—Our Strategy

If you have other questions, or if I have left anything mentioned in the book out of this page, please call me at (760) 908-3070.

Download ELAs from here:

Right-click the link, and Save Target As... THEN, be sure to change the extension from .html to .eld


Errata Sheet

If you find other errors, please forward them to me so I can place them here.

page 3                Joe Krutsinger no longer has the 800 number. His direct number is  913-334-2202. See page 711 for correct information.

page 217             Under Example, about half way down the page: “Assigns to Value1 the number -1” should read “Assigns to Value1 the number 1”

page 226             last paragraph: “…shown in Figures 10.11 and 10.12” should read “…shown in Figures 10.12 and 10.13.”

page 280             ADx should read ADX

Appendix              Reserved Words
Category

  1. Future
  2. Future Option
  3. Stock
  4. Stock Option
  5. Index
  6. Currency Option
  7. Mutual Fund
  8. Money Market Fund
  9. Index Option
  10. Cash
  11. Bond
  12. Spread
  13. Forex
  14. CPC Symbol
  15. Composite

page 479 MaxConsecLosers and MaxConsecWinners should read:

MaxConsecLosers
Returns the largest number of consecutive closed losing trades.
EXAMPLES
MaxConsecLosers returns 5 if the largest number of consecutive closed losing trades is 5.
MaxConsecLosers returns 2 if the largest number of consecutive closed losing trades is 2.

MaxConsecWinners
Returns the largest number of consecutive closed winning trades.
EXAMPLES
MaxConsecWinners returns 5 if the largest number of consecutive closed winning trades is 5.
MaxConsecWinners returns 2 if the largest number of consecutive closed winning trades is 2.

(This error was caught by Ken McCoy. Thanks.)

 

BestOfSkill