It' a trend channel finder that computes a tight channel by way of  ATR.   The 
lower the ATR, the tighter the channel.   It checks for a trend that keeps on 
going up.   Notice the half the ATR period checks.   Also, it gets out if the 
ATR gets too big or it makes 25% for the trade.   I'm just trying to find ways 
to improve the performance percentage wise.   Any help in that area will be 
greatly appreciated...



--- In [email protected], "Mike" <sfclimb...@...> wrote:
>
> You're still redundantly calculating arrays (e.g. Ref(Close,-1 * ATRPeriod / 
> 2), Ref(Close,-1 * ATRPeriod).
> 
> For the rest, it would help if you gave a non coded (e.g. english) 
> description of your rules.
> 
> As for performance, it's good practice run the backtest in full details mode 
> (see AA settings for reporting) and go through every bar with a magnifying 
> glass to be sure that you agree with every detail!
> 
> Mike
> 
> --- In [email protected], "three_percent" <senft@> wrote:
> >
> > // 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" <sfclimbers@> 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