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

[amibroker] Re: probable bug in afl execution



PureBytes Links

Trading Reference Links

Alex - thanks much for your follow-up post.

>Indeed, after the initialization, the type is number; however, when >the first indexed access is made, the type is switched to array 

I am so not used to this sort of thing!  
(It's probably documented somewhere - can anyone note where?)

>now it works! no inconsistency is detected. 

I'm glad you are able to move on, but if you don't understand the reason(s) for the initial behavior and subsequent change, beware! <g>


--- In amibroker@xxxxxxxxxxxxxxx, "redberryys" <redberryys@xxx> wrote:
>
> Hi progster,
> That is a very good idea - typeof is good to know for debugging.
> Indeed, after the  initialization, the type is number; however, when the first indexed access is made, the type is switched to array - if I add the same printf after the loop, I see both as arrays. This also explains why the values printed by printf are different from bar to bar.
> 
> I've added some code to automatically check for consistency , and - the most intriguing thing - and awkward for me - happened: now it works! no inconsistency is detected. I did see temporary inconsistencies when the check was not activated, and after the backtester run. I still think there might be a refresh missing somewhere; also, I did see some weird behavior of the backtester: if I use my temporary arrays for the entries/exits and only later copy them to the Buy/Sell/Short/Cover used by the backtester, the backtester seems to get confused - it changes them. 
> All in all, I still think this would be worth some further investigation, but I'll drop it for now.
> 
> Once again, thank you so much for taking the time to look into this question. Once made to work, I found that for loop to be useful in reducing whipsaws, and in improving system performance when fixed commissions are applied [by the broker! :)) ]
> 
> For reference, here's the code I used for validation:
> 
> //Plot(inBuySwitch, "IBS", styleLine | styleOwnScale);
> inBuySwitch = (vinBuy + Ref(VinBuy,-1) == 1);
> inconsistentB = inBuySwitch && !(Buy || Sell);
> c_incB = Cum(inconsistentB);
> inShortSwitch = (vinShort+ Ref(vinShort,-1) == 1);
> inconsistentS = inShortSwitch && !(Short || Cover);
> c_incS = Cum(inconsistentS);
> printf("inBuySwitch= %g c_incB= %g c_incS= %g\n\n", inBuySwitch, c_incB, c_incS);
> 
> Regards,
> Alex
> 
> 
> --- In amibroker@xxxxxxxxxxxxxxx, "progster01" <progster@> wrote:
> >
> > 
> > Hi again.
> > 
> > I think you may be trying to treat as arrays some items whose typeof() is number.  
> > 
> > Below is a section of the code with a few extra printf() statements, showing that, for example, nbuy_ is a number, not an array.
> > 
> > Despite this, later notation such as:
> > 
> > nbuy_[i] = 1;
> > 
> > is silently accepted.
> > 
> > I think that to get the results you want may require very careful attention to types, and possibly a different idiom than you are using.
> > 
> > There may be little help in that generalization, but I've not personally written/tested AFL ala your example, so I don't have a ready-made "solution" available to offer.  (Others might.)
> > 
> > -----------
> > 
> > //filter the raw signals 
> > nBuy_ = nSell_ = nShort_ = nCover_ = 0; // make sure all arrays are set empty
> > 
> > printf( "\ntypeof(nBuy_): " + typeof(nBuy_) ) ;
> > printf( "\ntypeof(Buy_): " + typeof(Buy_) ) ;
> > 
> > 
> > printf( "\nAfter initialization: \n" ) ;
> > printf( "nBuy_= %g nSell_= %g\n", nBuy_, nSell_ );
> > printf( "nShort_ = %g nCover_= %g\n", nShort_, nCover_ );
> > 
> > 
> > inBuy = inShort = 0;
> > vinBuy = vinShort = 0;
> > eprice = 0; //
> > veprice = 0; //
> > branch = 0;
> > 
> > printf( "\ntypeof(inBuy): " + typeof(inBuy) ) ;
> > printf( "\ntypeof(branch): " + typeof(branch) ) ;
> > 
> > 
> > 
> > --- In amibroker@xxxxxxxxxxxxxxx, "redberryys" <redberryys@> wrote:
> > >
> > > Hi progster,
> > > Thank you for your response. I've tried it and it still does the same thing. I shou[[etc - removed ]
>




------------------------------------

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

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