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 > > > > > > > > >