[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[amibroker] Re: An AB Design question for Tomasz - When does Buy and BuyPrice become active?



PureBytes Links

Trading Reference Links

Hi Dennis,

Thanks again for the advice. I renamed the buy/sell/short/cover vars 
as you suggested. I was setting and then resetting these during the 
processing but now use other names until all the processing was 
complete and then set them along with price vars. When I did that it 
started working as expected. Also the back tester now works and 
agrees with the Explore export calculations I was doing in Excel. I 
guess the hot tip is if the back tester gives unexpected results, 
look for errors in the code. BT has been around so long that is a 
good test for accurate code. I have been using AB since 2003 and I 
still find things about AB I didn't quite understand. One nice thing 
is that I don't have to do this checking in a DLL. That will save 
some effort.

Barry

--- In amibroker@xxxxxxxxxxxxxxx, Dennis Brown <see3d@xxx> wrote:
>
> Barry,
> 
> Just remember that if the buy condition existed at one point, then  
> the next pass the conditions no longer exist, as far as AB is  
> concerned the buy condition NEVER existed.  If you want the buy  
> condition to be "remembered" across passes, you will have 
to "latch"  
> that fact into a static variable.  However, I think what you 
really  
> want to do is use the High or Low instead of the last to detect 
your  
> condition.  Once your H/L is achieved in the bar, it will never go  
> away.  That is what you are saying you really want.  Then set the  
> BuyPrice / SellPrice / ShortPrice / CoverPrice to that price that 
you  
> determine is your trigger point.   If you use the RT last data, 
you  
> might miss a RT data point during your bar (not every tick shows 
up  
> every pass), but the H & L will show it (even if delayed slightly).
> 
> Best regards,
> Dennis
> 
> On Jan 28, 2008, at 10:20 PM, Barry Scarborough wrote:
> 
> > Thanks Dennis.
> >
> > AB is probably working as it is supposed to. If it is there is
> > something wrong with my code, more than likely. Or it was not
> > designed to do what I am trying to do.
> >
> > The way I see it, the last (current) tick is the close at that
> > instant. The "close" value will change with each tick until the 
bar
> > period times out and the last tick will be the true close.
> >
> > During the bar, when the immediate "close" crosses the indicator 
line
> > and satisfies the buy/short conditions, I want to act 
immediately. I
> > don't want to wait until the bar is closed. I am designing this to
> > auto trade futures and I really don't want to wait until the bar 
is
> > closed before I take or exit a position. The close can end up
> > anywhere. I want to act, submit an order, when the conditions 
exist.
> > I will redesign the code if I have to get it to submit a buy when 
the
> > conditions exist. I just can't understand why AB does not 
recognize
> > the instantaneous signal as a buy. It does in that the arrow 
appears
> > and I can see it momentarily during trading hours. But why 
doesn't AB
> > recognize it is a buy and why isn't the BuyPrice updated and 
stored?
> >
> > When I run explore the value of the indicator is in BuyPrice and 
it
> > is correct. That is probably due to the way I decide what value to
> > use during explore. But the same logic is used live.
> >
> > What further difference is there between live data and back test
> > data? I must be missing something.
> >
> > Barry
> >
> >
> >
> > --- In amibroker@xxxxxxxxxxxxxxx, Dennis Brown <see3d@> wrote:
> >>
> >> Barry,
> >>
> >> AmiBroker is working as it is supposed to work.  When you are
> > working
> >> with real time intraday data, each AFL pass over the data is a
> > static
> >> snapshot that is processed.  The last bar will be incomplete 99%
> > of
> >> the time.  The close will not actually be the close of the bar,
> > but
> >> the last realtime quote.  The high and low of the bar may also
> > change
> >> to greater limits before the bar is truly completed.
> >>
> >> One simple thing you can do, is only work with the data only up 
to
> >> the last completed bar (BarCount-2) or C=Ref(C,-1), etc.
> >>
> >> However, even simpler (if you only use close data) is to use the
> > Open
> >> data instead.  It will be the next tick after the close of the
> > last
> >> full bar and should not change during the bar.
> >>
> >> A little more complicated is to keep track of how close the bar 
is
> > to
> >> running out of time, and accept a signal only when the bar is 90%
+
> >> complete.  That will give you a little jump on the situation with
> > a
> >> low probability of the signal turning out to be false.
> >>
> >> My own strategy would be to use the incomplete signals as
> > a "warning
> >> of imminent trade" signal (perhaps with a little ping sound) and
> > then
> >> give the big Trade Bong when the bar closes (i.e. the trade 
signal
> > is
> >> on the previous bar).
> >>
> >> When backtesting, you will only get the signals on the completed
> >> bars.  Realtime trading is very different from backtesting static
> > data.
> >>
> >> Sorry I don't have any AFL for you on this --I am still working 
on
> > my
> >> own system strategy.
> >>
> >> Best regards,
> >> Dennis
> >>
> >> On Jan 28, 2008, at 6:37 PM, Barry Scarborough wrote:
> >>
> >>> I am working on a system where I try to buy or sell when a 
couple
> > of
> >>> indicators become true within the bar. I using this intraday and
> > was
> >>> watching the charts. I have the conditions ANDed and it places
> > arrows
> >>> on the chart when the Buy is true. The problem I ran into today
> > was
> >>> that the conditions were true within a minute bar, the buy arrow
> >>> flashed on, then off a number of times within the bar. But
> > BuyPrice
> >>> which is set at the same time, never changed. What is going on?
> >>>
> >>> I want to generate a buy/sell immediately when the conditions 
are
> >>> true. I thought maybe the conditions had to be true at the end 
of
> > the
> >>> bar before the Buy and BuyPrice become active. That does not 
seem
> > to
> >>> be the case, at least not all the time. I noticed that if the
> >>> conditions occurred during the bar but were not true at the end 
of
> >>> the bar the Buy was not set. But if the conditions were true at
> > the
> >>> beginning of the next bar the Buy and BuyPrice were set
> > immediately,
> >>> before the end of the bar. What is going on? Is this a bug? How
> > can
> >>> Buy come on without BuyPrice being set. Why does it work at the
> >>> beginning of the bar but not intra bar? How is this supposed to
> >>> work?
> >>>
> >>> I added the code below with the exception of the system code.
> >>>
> >>> Another problem that we noticed was that using AddColumn to dump
> > the
> >>> trade prices to Excel does not always have the same value as 
what
> > is
> >>> plotted on the chart.
> >>>
> >>> Thanks for the help,
> >>> Barry
> >>>
> >>> Code fragment:
> >>>
> >>> // AND the indicator conditions to find the buy points
> >>> Buy   = BuySigA AND upIND;   	
> >>> // normal sell or if last bar and buy state
> >>> Sell  = (SellSigA AND dnIND) OR tod == timeclose; 	
> >>> // AND the indicator conditions to find the short points
> >>> Short = ShortSigA AND dnIND;
> >>> // normal cover or if last bar and short state
> >>> Cover = (CoverSigA AND upIND) OR tod == timeclose; 	
> >>>
> >>> // in the following code fInRAnge determines whether to use the
> >>> calculated price or the open price on a gap.
> >>> // roundd the price up or down then adds or subtracts a tick
> >>> depending on the signal, buy or short.
> >>> pBuyPrice   = tick  + fRound(fInRange(IIf(Buy, fInd2, 0), up),
> > up);
> >>> pShortPrice = -tick + fRound(fInRange(IIf(Short, fInd2, 0), dn),
> > dn);
> >>> pSellPrice  = -tick + fRound(fInRange(IIf(Sell, fInd2, 0), dn),
> > dn);
> >>> pCoverPrice = tick  + fRound(fInRange(IIf(Cover, fInd2, 0), up),
> > up);
> >>> 	
> >>>
> >>> // make sure there are no multiple buys OR sells while a like
> >>> position is Open
> >>> Buy    = ExRem(Buy, Sell );
> >>> Sell   = ExRem(Sell , Buy);
> >>> Cover  = ExRem(Cover, Short );
> >>> Short  = ExRem(Short , Cover);
> >>> BuyPrice   = IIf(Buy, pBuyPrice, 0);
> >>> SellPrice  = IIf(Sell, pSellPrice, 0);
> >>> CoverPrice = IIf(Cover, pCoverPrice, 0);
> >>> ShortPrice = IIf(Short, pShortPrice, 0);
> >>>
> >>> Filter = Buy OR Sell OR Short OR Cover; // set the conditions to
> >>> monitor in analysis - back test, scan and explore
> >>>
> >>> // plot buy and sell arrows on the chart
> >>> PlotShapes(Buy * shapeUpArrow, uparrow, 0, Low);
> >>> PlotShapes(Sell * shapeDownArrow, dnarrow,0,Low );
> >>> PlotShapes(Short * shapeCircle, dnarrow);
> >>> PlotShapes(Cover * shapeHollowCircle, uparrow);
> >>>
> >>> // plotting functions
> >>> Plot(C, Date() + " - System 1a " + NumToStr(search, 1.0) + " - 
C",
> >>> background, styleCandle); 	// plot candles on the chart
> >>> Plot(BuyPrice, "\nBuy Price", background ,  styleOwnScale |
> >>> styleNoLine | styleNoLabel );
> >>> Plot(SellPrice, "Sell Price", background ,  styleOwnScale |
> >>> styleNoLine | styleNoLabel );
> >>> Plot(ShortPrice, "Short Price", background ,  styleOwnScale |
> >>> styleNoLine | styleNoLabel );
> >>> Plot(CoverPrice, "Cover Price", background ,  styleOwnScale |
> >>> styleNoLine | styleNoLabel );
> >>> Plot(Buy, "\nBuy", background ,  styleOwnScale | styleNoLine |
> >>> styleNoLabel );
> >>> Plot(Sell, "Sell", background ,  styleOwnScale | styleNoLine |
> >>> styleNoLabel );
> >>> Plot(Short, "Short", background ,  styleOwnScale | styleNoLine |
> >>> styleNoLabel );
> >>> Plot(Cover, "Cover", background ,  styleOwnScale | styleNoLine |
> >>> styleNoLabel );
> >>>
> >>> // code for exploration and export to spreadsheet
> >>> AddColumn(BuyPrice, "Buy price", 1.3);
> >>> AddColumn(SellPrice, "Sell price", 1.3);
> >>> AddColumn(ShortPrice, "Short price", 1.3);
> >>> AddColumn(CoverPrice, "Cover price", 1.3);
> >>>
> >>>
> >>>
> >>>
> >>>
> >>> Please note that this group is for discussion between users 
only.
> >>>
> >>> To get support from AmiBroker please send an e-mail directly to
> >>> SUPPORT {at} amibroker.com
> >>>
> >>> For NEW RELEASE ANNOUNCEMENTS and other news always check 
DEVLOG:
> >>> http://www.amibroker.com/devlog/
> >>>
> >>> For other support material please check also:
> >>> http://www.amibroker.com/support.html
> >>>
> >>> Yahoo! Groups Links
> >>>
> >>>
> >>>
> >>
> >
> >
> >
> >
> > Please note that this group is for discussion between users only.
> >
> > To get support from AmiBroker please send an e-mail directly to
> > SUPPORT {at} amibroker.com
> >
> > For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
> > http://www.amibroker.com/devlog/
> >
> > For other support material please check also:
> > http://www.amibroker.com/support.html
> >
> > Yahoo! Groups Links
> >
> >
> >
>




Please note that this group is for discussion between users only.

To get support from AmiBroker please send an e-mail directly to 
SUPPORT {at} amibroker.com

For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
http://www.amibroker.com/devlog/

For other support material please check also:
http://www.amibroker.com/support.html
 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/amibroker/

<*> Your email settings:
    Individual Email | Traditional

<*> To change settings online go to:
    http://groups.yahoo.com/group/amibroker/join
    (Yahoo! ID required)

<*> To change settings via email:
    mailto:amibroker-digest@xxxxxxxxxxxxxxx 
    mailto:amibroker-fullfeatured@xxxxxxxxxxxxxxx

<*> To unsubscribe from this group, send an email to:
    amibroker-unsubscribe@xxxxxxxxxxxxxxx

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/