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

[amibroker] Re: JScripts - some debugging help needed



PureBytes Links

Trading Reference Links

Dimitris,

Yes, you are right about AddToComposite to calculate running number 
of stocks based on bars. The AB.Stocks().Count is not representative 
of that. It's just total number of stocks in the DB, independent of 
validity of their individual bars. So the code itself is correct, but 
not meant for what you're thinking it was for...

The only way I've ever had to use it is generally to loop over Stock 
objects to delete 'em or programmatically move 'em to certain 
watchlists, groups, etc. 

Anytime you want to use the count over bars, etc., then what you say 
is the right way to do it...

Jitu

--- In amibroker@xxxxxxxxxxxxxxx, "DIMITRIS TSOKAKIS" <TSOKAKIS@xxxx> 
wrote:
> There is one safe way to count stocks.
> Scan all quotations with
> AddToComposite(1,"~count","V");
> Buy=0;
> Plot(Foreign("~count","V"),"",4,8);
> Your mycount plot from
>  EnableScript("JScript");
>  oAB = CreateStaticObject("Broker.Application");
>  // NOTE FOLLOWING TWO LINES
>  oStocks = oAB.Stocks();
>  dummyResults = oStocks.DummyFunction();
>  myVersion = oAB.Version();
>  myCount = 0;
>  <%
>  ab = new ActiveXObject( "Broker.Application" );
> AFL("myCount") = ab.Stocks().Count;
>  %>
> Plot(mycount,"",1,1);
> is a flat line equal to the max number of stocks.
> The problem begins when you want to use this mycount for various 
> averages, it will be wrong for these bars with less stocks [for any 
> reason].
> Of course, in an absolutely aligned database it will be by 
> coincidence correct and you will not have the opportunity to see 
the 
> trap.
> Unfortunately I have no idea of jscript and can not see what is 
wrong 
> in your code.
> Note also that the same mistake will come whan you use
> list = CategoryGetSymbols( categoryWatchlist, 63 ); 
> pop=0;
> for( i = 0; ( sym = StrExtract( list, i ) ) != ""; i++ ) 
>    {
> pop=POP+1;
> }
> Plot(pop,"",5,2);
> to plot the population pop of a WL63. The result will be a flat 
line, 
> which is not correct when you have missing data, shorter or longer 
> histories.
> Dimitris Tsokakis
> 
> --- In amibroker@xxxxxxxxxxxxxxx, "jtelang" <jtelang@xxxx> wrote:
> > Dimitris,
> > 
> > Yes, I see the count as the one returned by Stocks().Count method 
> in 
> > the AB ActiveX object. I verified it by running similar code 
> outside 
> > AA, from command line. The actual count I get in my case is 
34,622 
> > (with QP3). At the same time, if I run an explore against "All 
> > Stocks/Last 1 bar", I get 26,819 entries in the result. That 
means 
> > that around 8K symbols without any data (either on that last bar 
or 
> > completely empty, I don't know) exist in the DB.
> > 
> > What count do you get when you run it?
> > 
> > Jitu
> > 
> > --- In amibroker@xxxxxxxxxxxxxxx, "DIMITRIS TSOKAKIS" 
> <TSOKAKIS@xxxx> 
> > wrote:
> > > Jitu,
> > > What is your mycount ?
> > > Because it does not count the database stocks.
> > > [Try to Plot(mycount,"",1,1); to see what I mean.]
> > > Dimitris Tsokakis
> > > > > -----Original Message-----
> > > > > From: jtelang [mailto:jtelang@x...]
> > > > > Sent: Wednesday December 31, 2003 12:14 AM
> > > > > To: amibroker@xxxxxxxxxxxxxxx
> > > > > Subject: [amibroker] Re: JScripts - some debugging help 
needed
> > > > > 
> > > > > 
> > > > > William/Dingo,
> > > > > 
> > > > > Following line is a suspect -
> > > > > 
> > > > > >   oStocks = oAB.Stocks();
> > > > > 
> > > > > In AFL world, what are you expecting oStocks to be -- an 
AFL 
> > > array, 
> > > > a 
> > > > > constant, a string or a JScript array of objects? I could 
be 
> > > wrong, 
> > > > > but I don't think you can treat such return values in pure 
> AFL 
> > > > world 
> > > > > as if you were dealing with a JScript world. I'd think a 
more 
> > > > > appropriate way to do it would be as follows, which does 
seem 
> > to 
> > > > > work -
> > > > > 
> > > > > // ------------
> > > > > EnableScript("JScript");
> > > > > oAB = CreateStaticObject("Broker.Application");
> > > > > 
> > > > > // NOTE FOLLOWING TWO LINES
> > > > > oStocks = oAB.Stocks();
> > > > > dummyResults = oStocks.DummyFunction();
> > > > > 
> > > > > myVersion = oAB.Version();
> > > > > myCount = 0;
> > > > > <%
> > > > > ab = new ActiveXObject( "Broker.Application" );
> > > > > AFL("myCount") = ab.Stocks().Count;
> > > > > %>
> > > > > Filter=1;
> > > > > AddColumn(myCount, "Count");
> > > > > AddTextColumn(myVersion,"Version");
> > > > > // --------------
> > > > > 
> > > > > Also, note the two lines where marked. It seems on return 
> > values 
> > > > like 
> > > > > oStocks, AB doesn't complain if it can't find the called 
> > method. 
> > > > > Actually I think that's going too far. AB doesn't probably 
> even 
> > > > know 
> > > > > what type it is unless it can convert the original return 
> value 
> > > > > (oStocks) into an array, a constant or a string. But that's 
> > just 
> > > a 
> > > > > guess. 
> > > > > 
> > > > > Hope this helps.
> > > > > 
> > > > > Jitu


Send BUG REPORTS to bugs@xxxxxxxxxxxxx
Send SUGGESTIONS to suggest@xxxxxxxxxxxxx
-----------------------------------------
Post AmiQuote-related messages ONLY to: amiquote@xxxxxxxxxxxxxxx 
(Web page: http://groups.yahoo.com/group/amiquote/messages/)
--------------------------------------------
Check group FAQ at: http://groups.yahoo.com/group/amibroker/files/groupfaq.html 

------------------------ Yahoo! Groups Sponsor ---------------------~-->
Buy Ink Cartridges or Refill Kits for your HP, Epson, Canon or Lexmark
Printer at MyInks.com. Free s/h on orders $50 or more to the US & Canada.
http://www.c1tracking.com/l.asp?cid=5511
http://us.click.yahoo.com/mOAaAA/3exGAA/qnsNAA/GHeqlB/TM
---------------------------------------------------------------------~->

Yahoo! Groups Links

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

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/