Paul:  Yes to all three.  One twist is that in reality, I don't actually test 
for new signals until the next morning when I get to the office.

Also, the first two scenarios have always worked (that don't involve stops) 
because I set all trades in settings to CLOSE +1 delay.  So, a raw signal may 
come on Thursday, for example, but the actual trade would happen friday at the 
close.

Everything is based on End-Of-Data data only.  Of course, for mutual funds, 
there is no intraday trading and there are no Open-High-Low data points to read.

Thanks for your brainstorming!

Steve.

--- In [email protected], Paul Denning <notanaiqgen...@...> wrote:
>
> Steve,
> 
> I guess I am/was confused on when you want to execute with the mutual funds. 
> So you're saying that no matter the signal, you want to execute on the NEXT 
> bar's close. For example, in all three of the below cases would be true?
> 
> 1) A buy signal comes Monday night after Monday's close. You buy Tuesday's 
> close.
> 2) A sell (non-stoploss) signal comes Wednesday night after Wednesday's 
> close. You sell your position on Thursday's close.
> 3) You are Long again somehow. Today is Friday. During the day on Friday, the 
> low of the day touched or exceeded your virtual stoploss price. You sell your 
> position on Monday's close.
> 
> Are all of those 3 scenarios correct in terms of what you want to do? If so, 
> I can adjust my code so it will do what you want.
> 
> Paul
> 
> 
> 
> 
> ________________________________
> From: graphman27 <st...@...>
> To: [email protected]
> Sent: Fri, July 2, 2010 12:27:51 PM
> Subject: [amibroker] Re: How to make stops trigger as CLOSE +1
> 
>    
> Thanks - I'll take a look at that, but I need ALL buys and sells to be 
> CLOSE+1 Day.  These are mutual funds, so in order to get a stop loss signal, 
> the market would already be closed and I wouldn't sell until the next day's 
> close.
> 
> --- In [email protected], "notanaiqgenius" <notanaiqgenius@> wrote:
> >
> > Hi Steve,
> > 
> > I am fairly new here but I have been reading this thread between you and
> > Mike. I wrote some fairly simple code that might help you with your
> > original problem. I have used the ApplyStop function in my projects and
> > I think this code will do what you want to do. Your original questions
> > were:
> > 
> > "What do I need to do to make sure:
> > 
> > 1. All buys and sells are done as CLOSE+1 (I only use EOD data for
> > mutual
> > funds).
> > 2. Make sure stops are triggered based on the purchase price, not the
> > price on
> > the -1 signal date."
> > 
> > I tested my code below on AAPL. It generates just 1 signal (arbitrarily)
> > on the night of 5/4/2010 to buy, which then executes the next day's
> > Close on 5/5/2010.
> > 
> > My code only sells via the ApplyStop function. The key setting you need
> > is SetOption( "ActivateStopsImmediately", True). This will make it so
> > that you exit at the Close of the day the stoploss was actually hit,
> > rather than the next day. This combined with the "2" setting for the
> > ExitAtStop parameter in the ApplyStop function will make it so that we
> > get stopped out on 5/6/2010, the day after we entered. (For testing I
> > forced it to get stopped out immediately with a tight 0.5% stoploss.)
> > 
> > Try applying this to just one symbol and backtesting. Then right click
> > on the one trade and choose "show arrows for actual trades". On the
> > chart you will then see the entry and exit as you desired I believe.
> > 
> > So to summarize, with the settings below, the trade enters the Close of
> > the day after the signal, and the stoploss is triggered right away, but
> > the trade price of the stop exit is still the Close of that bar (rather
> > than the stoploss price.) Hope this helps.
> > 
> > -Paul
> > 
> > //these settings here override anything you might set in the Settings
> > button area
> > BuyPrice = Close;
> > SellPrice = Close;
> > ShortPrice = Close;
> > CoverPrice = Close;
> > 
> > //all entries are made the NEXT day's close;
> > //all exits are made TODAY'S Close; (I don't think this is applicable to
> > the stoplosses though)
> > //again these settings override "Settings Button" settings of automatic
> > analysis window
> > SetTradeDelays(1,0,1,0);
> > 
> > //if set to true, it means that stops are activated right after
> > execution of entry signals
> > //once again, this overrides the equilvalent setting in the automatic
> > analysis Settings Button dialog
> > SetOption( "ActivateStopsImmediately", True);
> > 
> > //dummy test buy signal generated on night of 5/4/2010; executed on
> > close of 5/5/2010
> > Buy = Month()==5 AND Day()==4 AND Year()==2010;
> > 
> > //never sell normally (only sell with stoploss below).
> > Sell = 0;
> > 
> > //from userguide: "2: check High-Low prices but exit NEXT BAR on regular
> > trade price."
> > //however, if you have ActivateStopsImmediately set to true, it will
> > actually exit THIS BAR
> > //(the bar stoploss was penetrated)
> > ExitAtStop = 2;
> > 
> > SLpercent = 0.5;    //0.5% stoploss
> > ApplyStop(stopTypeLoss, stopModePercent, SLpercent, ExitAtStop, False,
> > 0);
> > 
> > 
> > 
> > --- In [email protected], "graphman27" <steve@> wrote:
> > >
> > > I use Add artificial bar so that I can see Tuesday's signals. 
> > Besides, I don't actually run the backtester for signals at night...I do
> > it the next day.  It seems to work fine, I'm just frustrated that the
> > stops don't calculate properly within the backtester.  I'll try some of
> > these solutions and/or hire someone to program that STOP section for me.
> > Otherwise, I'll spend too much time on it myself.
> > >
> > > Thanks!
> > >
> > > Steve.
> > >
> > > --- In [email protected], "Mike" sfclimbers@ wrote:
> > > >
> > > > I believe that it will solve your signal price problem. I don't
> > actually use ApplyStop, so my comments are based on what I've read
> > rather than what I've used.
> > > >
> > > > If you rely on the backtester to generate trades, the code provided
> > may not work, since you will need to already have a bar for Tuesday in
> > order to see the trade based on Monday's signal. Perhaps a snapshot
> > prior to Tuesday's close.
> > > >
> > > > An exploration would work, since you would have the Monday data and
> > could search on BuyTrigger instead of Buy, as indicated in my last
> > reply. You could probably write a master exploration that #include each
> > of the multiple rule sets.
> > > >
> > > > Worse case scenario; remove the ApplyStop functionality from your
> > existing script and keep running it in the backtester for signal
> > generation. Just be sure to use the revised one for actual backtesting 
> > when doing system analysis.
> > > >
> > > > Mike
> > > >
> > > > --- In [email protected], "graphman27" <steve@> wrote:
> > > > >
> > > > > You are the man again Mike.  I will make these changes and give it
> > a test.
> > > > >
> > > > > When you say trade intraday, I just wanted to remind you that I
> > only trade mutual funds.
> > > > >
> > > > > Will this acutally fix the problem of the stop levels using the
> > signal date price and not the purchase date pirce, which is CLOSE+1?
> > > > >
> > > > > Lastly, I think we've gone through this before, but I use the
> > backtester to get live signals.  I only trade around 12 symbols and they
> > are typically within the portfolio backtester.  An example would be a
> > portfolio with 6 different signals for 6 different symbols.  It seems to
> > be the easiest and fastest way to get the signals each day.  Otherwise,
> > I would have to run 12-15 different individual symbols, instead of 3
> > portfolios.
> > > > >
> > > > > --- In [email protected], "Mike" <sfclimbers@> wrote:
> > > > > >
> > > > > > Steve,
> > > > > > In response to both this post and your prior one:
> > > > > > 1.  Ref(Array, -1)  means "what was the value of Array on the
> > bar
> > > > > > previous to this one?".2.  BuyPrice = Close means "set the
> > purchase
> > > > > > price to this bar's close".
> > > > > > On Monday you are getting a signal. On Tuesday you want to trade
> > that
> > > > > > signal using Tuesday's Close. That is easily modeled using the
> > two
> > > > > > points above:
> > > > > > BuyTrigger = ...;Buy = Ref(BuyTrigger, -1);  // 1. If Monday had
> > a
> > > > > > signal, then buy it today (Tuesday).BuyPrice = Close; // Use
> > today's
> > > > > > (Tuesday) Close as the purchase price.
> > > > > > This sets you up perfectly for Scenario 2 of ApplyStop which
> > says that
> > > > > > you trade on today's Close (Tuesday) and want to exit intraday
> > from that
> > > > > > point on (i.e. you have a stop loss order with your broker that
> > will
> > > > > > stop you out anytime the price falls below your stated max
> > loss). The
> > > > > > ApplyStop is independent of your Sell logic. Your Sell will
> > still exit
> > > > > > at the Close, but your stop may exit intraday.
> > > > > > Completing your code sample gives the following:
> > > > > > /*
> > > > > > Scenario 2:
> > > > > > You trade on today's close and want to exit intraday on stop
> > price
> > > > > >
> > > > > > Correct settings:
> > > > > > A. ActivateStopsImmediately turned OFF
> > > > > > B. ExitAtStop = 1
> > > > > > C. Trade delays set to zero
> > > > > > D. Trade price set to close
> > > > > > */
> > > > > >
> > > > > > SetOption("ActivateStopsImmediately", false);  // A.
> > > > > > ActivateStopsImmediately turned OFF
> > > > > > SetTradeDelays(0, 0, 0, 0);  // C. Trade delays set to zero
> > > > > >
> > > > > > BuyTrigger =  Cross(StochFinal, Trigger) AND (EMA(Close,
> > EMAShort) >
> > > > > > EMA(Close, EMALong));
> > > > > > Buy = Ref(BuyTrigger, -1);
> > > > > > BuyPrice = Close;  // D. Trade price set to close
> > > > > >
> > > > > > SellTrigger =  Cross(Trigger, StochFinal) AND (EMA(Close,
> > EMAShort) <
> > > > > > EMA(Close, EMALong));
> > > > > > Sell = Ref(SellTrigger, -1);
> > > > > > SellPrice = Close;  // D. Trade price set to close
> > > > > >
> > > > > > ApplyStop(   stopTypeLoss,
> > > > > >           stopModePercent,
> > > > > >           Optimize("max. loss stop level", 2, 2, 10, 2),
> > > > > >           1,  // B. ExitAtStop = 1
> > > > > >           False);
> > > > > >
> > > > > >
> > > > > > I can't fully test your code since your assignments for
> > StochFinal and
> > > > > > Trigger were not provided. But, I believe that the above will
> > solve your
> > > > > > problem.
> > > > > > If you want to run an Exploration each night to see what you
> > should be
> > > > > > trading the next day, just use AddColumn to output the values of
> > > > > > BuyTrigger and SellTrigger instead of Buy and Sell respectively.
> > > > > > Mike
> > > > > >
> > > > > > --- In [email protected], "graphman27" <steve@> wrote:
> > > > > > >
> > > > > > > I want to simplify my life, believe me.  I'm having a bit of
> > > > > > difficulty following what you're saying to do.  Here is some
> > sample
> > > > > > code, just in case I'm not being clear:
> > > > > > >
> > > > > > > Buy = Cross(StochFinal,Trigger) AND (EMA( Close,EMAShort ) >
> > EMA(
> > > > > > Close,EMALong ));
> > > > > > >
> > > > > > > Sell = Cross(Trigger,StochFinal) AND (EMA( Close,EMAShort ) <
> > EMA(
> > > > > > Close,EMALong ));
> > > > > > >
> > > > > > > Plot( EMA ( Close,2 ),"Short EMA", colorGreen, styleThick );
> > > > > > > Plot( EMA ( Close,10 ),"Long EMA", colorRed, styleThick );
> > > > > > > Plot( StochFinal ,"Period", colorGreen, styleThick );
> > > > > > >
> > > > > > > /* max loss stop optimization */
> > > > > > >
> > > > > > > ApplyStop(stopTypeLoss,
> > > > > > >          stopModePercent,
> > > > > > >          Optimize( "max. loss stop level", 2, 2, 10, 2 ),
> > > > > > >    2,
> > > > > > >          False );
> > > > > > >
> > > > > > > What do I need to do to make sure:
> > > > > > >
> > > > > > > 1.  All buys and sells are done as CLOSE+1 (I only use EOD
> > data for
> > > > > > mutual funds).
> > > > > > > 2.  Make sure stops are triggered based on the purchase price,
> > not the
> > > > > > price on the -1 signal date.
> > > > > > >
> > > > > > > Right now, under settings, I have Buys and Sells set to CLOSE
> > +1.
> > > > > > >
> > > > > > > Thanks!
> > > > > > >
> > > > > > > --- In [email protected], "Mike" sfclimbers@ wrote:
> > > > > > > >
> > > > > > > > Hi,
> > > > > > > >
> > > > > > > > Since you are trading the Close, you could simplify your
> > life by
> > > > > > following one of the well defined scenarios from the ApplyStop
> > > > > > documentation:
> > > > > > > >
> > > > > > > > http://www.amibroker.com/guide/afl/afl_view.php?id=20
> > > > > > > >
> > > > > > > > In your case, follow scenario 2 and take your trades based
> > on
> > > > > > yesterday's signal.
> > > > > > > >
> > > > > > > > e.g.
> > > > > > > >
> > > > > > > > SetTradeDelays(0, 0, 0, 0);
> > > > > > > >
> > > > > > > > Trigger = ...;
> > > > > > > > Buy = Ref(Trigger, -1);
> > > > > > > > BuyPrice = Close;
> > > > > > > >
> > > > > > > > Your signal still shows up Monday night. But, you don't act
> > on it
> > > > > > until Tuesday Close. That's what you're doing in real life
> > anyway, so
> > > > > > just make your code show the same.
> > > > > > > >
> > > > > > > > Mike
> > > > > > > >
> > > > > > > > --- In [email protected], "graphman27" <steve@>
> > wrote:
> > > > > > > > >
> > > > > > > > > Question:  When stops are coded afl instead of setup under
> > > > > > settings, do they disregard the system settings for Buy Price
> > and Buy
> > > > > > Delay?   Currently, I have the latter set to Buy Price = Close+1
> > Day Buy
> > > > > > Delay.  For a new strategy I am working on, I notice that during
> > live
> > > > > > testing something doesn't jive.  Here is an example...
> > > > > > > > >
> > > > > > > > > Note:  I always use EOD data and CLOSE +1, to get
> > "tradable"
> > > > > > signals for mutual funds and indices:
> > > > > > > > >
> > > > > > > > > Monday Night:  Formula gave buy signal for Emerging
> > Markets after
> > > > > > the close.  With CLOSE+1 Day delay, that would mean buy at
> > Tuesday's
> > > > > > Close.
> > > > > > > > >
> > > > > > > > > Tuesday Night:  Max Loss Stop is triggered because of a
> > -3.5% drop
> > > > > > in the Emerging Markets on Tuesday.
> > > > > > > > >
> > > > > > > > > Wednesday at the close, mutual fund is sold.
> > > > > > > > >
> > > > > > > > > Question:  How could a Max Loss Stop be triggered if that
> > fund
> > > > > > wasn't purchased until AFTER Tuesday's big drop?  Since it was
> > purchased
> > > > > > AFTER the drop, there was no loss of -3.5% going into Wednesday.
> > > > > > > > >
> > > > > > > > > Here is an example of a typical mutual fund compatible
> > coded stop:
> > > > > > > > >
> > > > > > > > > ApplyStop(stopTypeLoss,
> > > > > > > > >          stopModePercent,
> > > > > > > > >          Optimize( "max. loss stop level", 2, 2, 10, 2 ),
> > > > > > > > >          False );
> > > > > > > > >
> > > > > > > > > Do I have to code something else to make sure the STOP is
> > > > > > triggered based on the CLOSE+1 purchase price and NOT the BUY
> > SIGNAL
> > > > > > Price?  Or, do I need to code the Buys and Sells inside the
> > formula as
> > > > > > CLOSE+1 instead of relying on system settings?  OR, none of the
> > above?
> > > > > > > > >
> > > > > > > > > Thanks in advance for your help, as usual!
> > > > > > > > >
> > > > > > > > > Steve.
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>


Reply via email to