Tomasz,

Let me say this another way:

I haven't ranked the stocks at all in both codes (yet).

But still, using SetPositionSize results in entry signals in Z to A order, 
while the CBT code results in signals in A to Z order (as expected when using 
GetFirstSignal, GetNextSignal).

Why do I get the signals in Z to A order with SetPositionSize?

Thanks.

--- In amibroker@yahoogroups.com, Tomasz Janeczko <gro...@...> wrote:
>
>   Hello,
> 
> You have mistake in your code/thinking. Ranking/sorting occurs in FIRST phase 
> of backtest.
> 
> Assigning different scores after ranking/sorting is done (in second phase / 
> cbt) does not change the ordering,
> that's why in case b) you have alphabetical ordering.
> 
> If you want to change the order of trades in CBT you need to do it yourself 
> (EnterTrade/ExitTrade/ScaleTrade)
> 
> Best regards,
> Tomasz Janeczko
> amibroker.com
> 
> On 2010-07-20 23:10, rise_t575 wrote:
> >
> > Another question regarding taking signals / the signal score:
> >
> > As an exercise, I've coded two 100% identical position sizing algorithms, 
> > a) in normal AFL (SetPositionSize) and b) with mid-level CBT.
> > After fixing all the obvious bugs in my CBT code, I've noticed that the 
> > results still differ.
> >
> > A couple of frustrating hours of later, going through the trades manually, 
> > I've noticed that (a = SetPositionSize) and (b = CBT code) are sometimes 
> > trading different signals.
> >
> > In the AA's Results list for the same bar, I'm getting the following Entry 
> > Signals for (a) and (b):
> >
> > (a) Entry signals(score):SANM=Buy(1), CIEN=Buy(1), AMCC=Buy(1)
> > (b) Entry signals(score):AMCC=Buy(1), CIEN=Buy(1), SANM=Buy(1)
> >
> > While the signals are the same, the order is reversed. Which comes into 
> > play when the signal score is the same while there are insufficient funds.
> >
> > If there's only cash available for one more trade,
> >
> > (a) will enter a position in SANM,
> > (b) will enter a position in AMCC,
> >
> > and this is where the difference in the end results for the backtests comes 
> > from.
> >
> > Is working SetPositionSize backwards through the signals?
> >
> > Thanks in advance for clarification.
> >
> >
> > --- In amibroker@yahoogroups.com, Tomasz Janeczko<groups@>  wrote:
> >>    Hello,
> >>
> >> You can either
> >> a) turn ON "Allow position shrinking" - that will allow to open highest 
> >> ranked position albeit with adjusted size to fit available funds
> >> b) use custom backtest to detect such circumstance and assign -1 to price.
> >>
> >> Best regards,
> >> Tomasz Janeczko
> >> amibroker.com
> >>
> >> On 2010-07-20 18:24, Tavan Taban wrote:
> >>>
> >>> Hello,
> >>>
> >>> Thank you Tomasz, for your clear and wise comments.
> >>>
> >>> By the way, I remember more about the problem I experienced earlier. A 
> >>> fictive description of the problem is as follows.
> >>>
> >>> Initial equity: 10000 (default)
> >>> Position Size: 5%
> >>> Highest ranked stock's price: 600
> >>> Assume 40 more signals.
> >>>
> >>> Result:
> >>> Backtester rejects the highest ranked signal indicating insufficient 
> >>> funds and takes no trades.
> >>> The problem continues as this signal continues in raw mode backtest.
> >>>
> >>> At that time, I passed off the subject by simply increasing the initial 
> >>> equity.
> >>> Walking towards perfection, perhaps you may consider handling different 
> >>> "insufficient funds" differently.
> >>>
> >>> Best regards,
> >>> IK
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>> 2010/7/20 Tomasz Janeczko<groups@<mailto:groups@>>
> >>>
> >>>      Hello,
> >>>
> >>>
> >>>
> >>>      "While I have no idea what exactly does happen when I set sig.Price 
> >>> to -1 and why this works "
> >>>
> >>>      It works because I coded it so. The internal code uses -1 as special 
> >>> marker to skip a signal.
> >>>
> >>>
> >>>      Best regards,
> >>>      Tomasz Janeczko
> >>>      amibroker.com<http://amibroker.com>
> >>>
> >>>      On 2010-07-20 17:36, rise_t575 wrote:
> >>>      >
> >>>      >
> >>>      >
> >>>      >
> >>>      >  Tomasz,
> >>>      >
> >>>      >  While I have no idea what exactly does happen when I set 
> >>> sig.Price to -1 and why this works, I can happily report that it *does* 
> >>> work - so thanks for
> >>>      the help!
> >>>      >
> >>>      >  --- In 
> >>> amibroker@yahoogroups.com<mailto:amibroker%40yahoogroups.com>, Tomasz 
> >>> Janeczko<groups@>  wrote:
> >>>      >>  Hello,
> >>>      >>
> >>>      >>  It is simple. By default AmiBroker opens positions in RANKED 
> >>> order (more preferred trades first).
> >>>      >>  If at some point of going through the ranking it finds the trade 
> >>> that it can not open (for example
> >>>      >>  due to insufficient funds) it will NOT open LOWER ranked trades 
> >>> because it is undesirable to have
> >>>      >>  better candidates replaced by worse candidates when you run out 
> >>> of funds.
> >>>      >>  When requested position size is non-zero and position size 
> >>> shrinking is ON AmiBroker will attempt
> >>>      >>  to adjust pos size to lower value within user-defined 
> >>> constraints ("MinShares", Round lot size).
> >>>      >>  It will go down as far as constraints allow, but if it reaches 
> >>> the barrier or zero it will reject the trade
> >>>      >>  and all lower-ranked signals.
> >>>      >>  Setting signal's pos size to zero in the beginning effectively 
> >>> means the same condition.
> >>>      >>
> >>>      >>  You should NOT set position size to zero if you want to reject 
> >>> single trade BUT continue to handle lower-ranked signals.
> >>>      >>
> >>>      >>  If you want to SKIP one signal, without affecting others, you 
> >>> should set Price property of that signal to -1 (minus one).
> >>>      >>
> >>>      >>  Best regards,
> >>>      >>  Tomasz Janeczko
> >>>      >>  amibroker.com<http://amibroker.com>
> >>>      >>
> >>>      >>  On 2010-07-20 12:42, rise_t575 wrote:
> >>>      >>>  Thanks a lot - I will try your solution.
> >>>      >>>  Do you have an idea *why* this is happening?
> >>>      >>>
> >>>      >>>  --- In 
> >>> amibroker@yahoogroups.com<mailto:amibroker%40yahoogroups.com>, Tavan 
> >>> Taban<tavantaban@>  wrote:
> >>>      >>>>  I remember experiencing the same problem earlier. As far as I 
> >>> remember, it
> >>>      >>>>  is something like, if it cancels one, cancels also the rest 
> >>> which are not
> >>>      >>>>  coded to be rejected. I can dig more if it helps.
> >>>      >>>>
> >>>      >>>>  Anyway, one solution alternative may be the following.
> >>>      >>>>
> >>>      >>>>  for( sig = bo.GetFirstSignal( bar ); sig; sig = 
> >>> bo.GetNextSignal( bar ) )
> >>>      >>>>  {
> >>>      >>>>  if (IDontLikeThisSignal) sig.Type = 7;
> >>>      >>>>  } // end if exit
> >>>      >>>>
> >>>      >>>>
> >>>      >>>>  2010/7/17 rise_t575<rise_t@>
> >>>      >>>>
> >>>      >>>>>  Hello,
> >>>      >>>>>
> >>>      >>>>>  I've noticed using mid-level CBT that when I set the position 
> >>> size to zero
> >>>      >>>>>  for the signal in question (the reason for setting it to zero 
> >>> is slightly
> >>>      >>>>>  complicated&  not that important here - some data needed for 
> >>> a subsequent
> >>>      >>>>>  calculation is {empty}), the trade is marked as "rejected" in 
> >>> AA's results
> >>>      >>>>>  list (which is perfectly ok).
> >>>      >>>>>  What is not "perfectly ok" is the fact that the backtester 
> >>> rejects the
> >>>      >>>>>  following signals at the same bar as well (there's enough 
> >>> cash available and
> >>>      >>>>>  position size is>  0).
> >>>      >>>>>
> >>>      >>>>>  How can I prevent this?
> >>>      >>>>>
> >>>      >>>>>
> >>>      >>>>>
> >>>      >>>
> >>>      >>>
> >>>      >>>  ------------------------------------
> >>>      >>>
> >>>      >>>  **** IMPORTANT PLEASE READ ****
> >>>      >>>  This group is for the discussion between users only.
> >>>      >>>  This is *NOT* technical support channel.
> >>>      >>>
> >>>      >>>  TO GET TECHNICAL SUPPORT send an e-mail directly to
> >>>      >>>  SUPPORT {at} amibroker.com<http://amibroker.com>
> >>>      >>>
> >>>      >>>  TO SUBMIT SUGGESTIONS please use FEEDBACK CENTER at
> >>>      >>>  http://www.amibroker.com/feedback/
> >>>      >>>  (submissions sent via other channels won't be considered)
> >>>      >>>
> >>>      >>>  For NEW RELEASE ANNOUNCEMENTS and other news always check 
> >>> DEVLOG:
> >>>      >>>  http://www.amibroker.com/devlog/
> >>>      >>>
> >>>      >>>  Yahoo! Groups Links
> >>>      >>>
> >>>      >>>
> >>>      >>>
> >>>      >>>
> >>>      >
> >>>      >
> >>>      >
> >>>      >  ------------------------------------
> >>>      >
> >>>      >  **** IMPORTANT PLEASE READ ****
> >>>      >  This group is for the discussion between users only.
> >>>      >  This is *NOT* technical support channel.
> >>>      >
> >>>      >  TO GET TECHNICAL SUPPORT send an e-mail directly to
> >>>      >  SUPPORT {at} amibroker.com<http://amibroker.com>
> >>>      >
> >>>      >  TO SUBMIT SUGGESTIONS please use FEEDBACK CENTER at
> >>>      >  http://www.amibroker.com/feedback/
> >>>      >  (submissions sent via other channels won't be considered)
> >>>      >
> >>>      >  For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
> >>>      >  http://www.amibroker.com/devlog/
> >>>      >
> >>>      >  Yahoo! Groups Links
> >>>      >
> >>>      >
> >>>      >
> >>>      >
> >>>
> >>>
> >>>
> >>>
> >>>
> >
> >
> >
> > ------------------------------------
> >
> > **** IMPORTANT PLEASE READ ****
> > This group is for the discussion between users only.
> > This is *NOT* technical support channel.
> >
> > TO GET TECHNICAL SUPPORT send an e-mail directly to
> > SUPPORT {at} amibroker.com
> >
> > TO SUBMIT SUGGESTIONS please use FEEDBACK CENTER at
> > http://www.amibroker.com/feedback/
> > (submissions sent via other channels won't be considered)
> >
> > For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
> > http://www.amibroker.com/devlog/
> >
> > Yahoo! Groups Links
> >
> >
> >
> >
>


Reply via email to