// ATR/Turtle Script by Andrew Senft
//

Thank you very much for your notes.  I took out the ExRem statements out and 
now get 100% annual returns on the S&P500.   A lot more than before.   Not sure 
if that is right.  Also, I'm not sure how to get the initial occurance of the 
buy trigger for the ValueWhen statement.   

---------------------------------------------------------------------
// Backtester Options
SetOption("AllowSameBarExit", False);
SetOption("MaxOpenPositions",1);
PositionSize = -100;


// Optimization numbers 
ATRPeriod = Optimize("ATRPeriod", 15, 10, 100, 5);                              
// 15, .30, 1.08, .15, 25
BuyThreshold = Optimize("BuyThreshold", .3, .1, .50, .05);              // 15, 
.30, 1.06, .25, 25


BuySlope = Optimize("BuySlope", 1.08, 1.05, 1.10, .01);
SellThreshold = Optimize("SellThreshold", .15, .1, .50, .05);
ProfitPercent = Optimize("ProfitPercent", 25, 25, 35, 5);


// Buy/Sell signals and prices
MyATR = ATR(ATRPeriod);
PrevClose = Ref( Close,-1);
Buy = Ref(MyATR,-1) < BuyThreshold AND
        PrevClose > Ref(Close,-1 * ATRPeriod / 2) AND
        Ref(Close,-1 * ATRPeriod / 2) > Ref(Close,-1 * ATRPeriod) AND
        PrevClose / Ref(Close,-1 * ATRPeriod) > BuySlope AND
        Ref(MA(Volume,20),-1) > 3000 AND                // 300,000 volume or 
more
        Ref(Close,-1) >= 2;
BuyPrice = Open;
BeginATR = Ref(ValueWhen(Buy, MyATR,1), -1);
Sell = Ref(MyATR,-1) > BeginATR + SellThreshold;
SellPrice = Open;
PositionScore = 100 - Ref(MyATR,-1);
ApplyStop( stopTypeProfit, stopModePercent, ProfitPercent ,True, 0 );

--- In [email protected], "Mike" <sfclimb...@...> wrote:
>
> Hi,
> 
> Without evaluating the actual logic of what you're trying to do, a couple of 
> quick observations:
> 
> 1. I suspect that you're missing "AND" after 3000, not semi colon.
> 
> 2. You are redundantly recalculating several arrays, where single 
> calculations stored in variables would result in faster charting.
> 
> e.g.
> MyATR = ATR( ATRPeriod );
> PrevClose = Ref( Close, -1 );
> ...
> 
> 3. Your usage of ValueWhen is probably not doing what you're hoping for. 
> ValueWhen will pick up the most recent occurrence. Since your Buy can result 
> in many redundant signals, your usage of ValueWhen will often pick up the 
> redundant Buy, not the first one.
> 
> 4. FilterBeginATR appears not to be used. Get rid of it.
> 
> 5. Don't call ExRem on Buy and Sell, let the backtester do that for you. If 
> you need unique values to plot shapes, store the results in a variable and 
> PlotShapes using the variable instead.
> 
> Mike
> 
> --- In [email protected], "three_percent" <senft@> wrote:
> >
> > 
> > Missing a semicolon after 3000
> > 
> > 
> > --- In [email protected], "three_percent" <senft@> wrote:
> > >
> > > Here is my attempt at a turtle script based on the ATR command.   I've 
> > > been backtesting it against the S&P500 since 1990.   If you guys have any 
> > > comments or improvements, let me know...
> > > 
> > > 
> > > 
> > > 
> > > ---------------------------------------------------------------------
> > > 
> > > // ATR/Turtle Script by Andrew Senft
> > > //
> > > 
> > > 
> > > 
> > > // Backtester Options
> > > SetOption("AllowSameBarExit", False);
> > > SetOption("MaxOpenPositions",1);
> > > PositionSize = -100;
> > > 
> > > 
> > > // Optimization numbers 
> > > ATRPeriod = Optimize("ATRPeriod", 15, 10, 50, 5);
> > > BuyThreshold = Optimize("BuyThreshold", .3, .1, .50, .05);
> > > BuySlope = Optimize("BuySlope", 1.08, 1.05, 1.10, .01);
> > > SellThreshold = Optimize("SellThreshold", .15, .1, .50, .05);
> > > ProfitPercent = Optimize("ProfitPercent", 25, 25, 35, 5);
> > > 
> > > 
> > > // Buy/Sell signals and prices
> > > Buy = Ref(ATR(ATRPeriod),-1) < BuyThreshold AND
> > >   Ref(Close,-1) > Ref(Close,-1 * ATRPeriod / 2) AND
> > >   Ref(Close,-1 * ATRPeriod / 2) > Ref(Close,-1 * ATRPeriod) AND           
> > >         // NEW NEW NEW
> > >   Ref(Close,-1) / Ref(Close,-1 * ATRPeriod) > BuySlope AND
> > >   Ref(MA(Volume,20),-1) > 3000    // 300,000 volume or more
> > >   Ref(Close,-1) >= 2;             // stocks over $2
> > > BuyPrice = Open;
> > > BeginATR = Ref(ValueWhen(Buy, ATR(ATRPeriod),1), -1);
> > > FilterBeginATR = ValueWhen(Buy, ATR(ATRPeriod),1);
> > > Sell = Ref(ATR(ATRPeriod),-1) > BeginATR + SellThreshold;
> > > SellPrice = Open;
> > > Buy = ExRem(Buy,Sell);                                            
> > > Sell = ExRem(Sell,Buy);   
> > > 
> > > PositionScore = 100 - Ref(ATR(ATRPeriod),-1);
> > > 
> > > 
> > > ApplyStop( stopTypeProfit, stopModePercent, ProfitPercent ,True, 0 );
> > >
> >
>


Reply via email to