Thanks very much Tomasz (and Anthony), I ran Tomasz code and it worked perfectly - I didn't realise that my code was so intensive.
Anyway, once again thanks for this great forum - saved me a lot of headache! cheers Ramon --- In [email protected], Tomasz Janeczko <gro...@...> wrote: > > Hello, > > I was trying to say that running it the way you do is inefficent. It is > more efficient to generate the output using Apply to: > "All symbols". > > Anyway your formula does NOT crash on my machine. I used Quotes PLus as > data source, > Windows 7 x64 and AmiBroker 4.29.6 (32-bit version). > I run it and it took 3 seconds for 20 symbols. > Generated output had 4246 rows and 22 columns. > Memory consumption on my machine after running this exploration is just > 10MB for data > and 30MB for all other data, so in total AmiBroker only used 40MB to run > this code. > > Something is wrong with your computer (hardware). > > Anyway the code below is written better (without code repetition, > unecessary multiple calls and all > other bloat). Try this and you should not have any problems. > > |*Filter* = 1; > > tickers = > "INTU,VMED,JBHT,ADSK,LRCX,SIAL,BMC,MAT,MYL,QGEN,VOD,PCLN,CERN,NWSA,FSLR,ILMN,ORLY,WCRX,ADP"; > > > > > *for*( i = 0; ( ticker = StrExtract( tickers, i ) ) != ""; i++ ) > { > SetForeign( Ticker ); > AddColumn( RSI( 2 ), Ticker, 1.2 ); > }| > > Best regards, > Tomasz Janeczko > amibroker.com > > On 2010-02-21 14:22, ramoncummins wrote: > > Hi Thomasz, thanks for the speedy reply, v much appreciated. > > > > Please note that I am running the exploration code with ONLY SPY selected > > as the current symbol in AA - it does not use a filter at all, so your > > calculation is not correct. It is 1 Symbol (SPY) * Num Bars * 22 Columns. > > > > I am using EOD data, so the number_of_bars is approx 3000. I specifically > > want a matrix with dates down the side, and tickers across the top, with > > RSI2 EOD values in the cells - this would be a matrix 3000*20 = 60,000 > > cells - easily handled in excel. > > > > I am fully aware of the standard way of running the code, that you mention > > below - however this does not create a matrix - it creates a list, which > > then has to be manually formatted for my purposes into a matrix. I plan on > > rolling this out on the full nasdaq 100, which would mean a list of 3000 * > > 100 Tickers = 300,000 rows and excel (2003) cannot handle that. It can > > however, handle a matrix of 3000 rows * 100 Columns quite easily, hence the > > requirement for the matrix. > > > > I am still stumped as to my original example, why running it on EOD data > > over 3000 bars * 20 Tickers would crash it. > > > > Normally, Amibroker would chew something like this up . . . > > > > Thanks again for your assistance > > > > Ramon > > > > > > --- In [email protected], Tomasz Janeczko<groups@> wrote: > > > >> Hello, > >> > >> Hmm... you are not giving enough details therefore way too much is left > >> for guessing > >> Your formula should not crash, unless you are using some huge number of > >> bars (1+ million?) but it is written inefficent and redundant. If you > >> run your formula for 20 symbols and all bars (as you seem to be doing) > >> you will create 20 rows * Number_of_bars * 22 columns (20 columns for > >> symbols +name + date/time) With say one million bars (number_of_bars) > >> you will end up having 440 000 000 cells. This may be reason of running > >> out of memory, not to mention that Excel won't take such table. > >> > >> It is *WAY* more efficient to do it right way, i.e. using the simple code: > >> > >> AddColumn( RSI( 2 ), "RSI", 1.2 ); > >> Filter = 1; > >> > >> and setting Apply to "ALL SYMBOLS". > >> > >> This will make AMiBroker iterate through all symbols and will be MUCH > >> faster and LESS resource consuming than using your code. And you will > >> end up with table having 20 rows * number_of_bars * 3 columns > >> (name+date/time+rsi value), > >> so with same one million bars under test you will have only 60 000 000 > >> cells (6 times less than your code). > >> > >> > >> You mention the dates but you don't mention the INTERVAL? So data are > >> from 1998 til now BUT... > >> at what interval? EOD ? Intraday (1-hour?, 1 - minute ???). > >> > >> You need to keep in mind that if you are using 1-minute data, assuming 8 > >> trading hours per day gives 120000 bars per year and 12 years gives 1.44 > >> million bars. Each bar is 40 bytes. So each symbol intraday 1-minute > >> data for 12 years back is about 60MB of data (for quotations alone). 20 > >> symbols put into cache would be 1.2 gigabyte for data alone. This added > >> to nearly one billion cells generated by your formula (assuming that > >> your data set is as large as I have been guessing here) > >> > >> Anyway use > >> Tools->Performance Monitor > >> to see free memory changes. > >> > >> Best regards, > >> Tomasz Janeczko > >> amibroker.com > >> > >> On 2010-02-21 12:40, ramoncummins wrote: > >> > >>> Hi everyone, > >>> > >>> I am trying to extract RSI(2) data for a group of stocks since 1998, > >>> using an exploration. The aim is to end up with dates down the side, and > >>> all the tickers across the top, with respective RSI(2) values in the > >>> rows. (This is to be dumped into excel later). > >>> > >>> The code below works fine (and indeed very quickly) when you limit the > >>> number of stocks to the first ten or so, but when I run the exploration > >>> over 20 stocks, it freezes and amibroker crashes. > >>> > >>> In order to replicate, just take the code below and run the exploration > >>> on SPY ONLY between 1998 and Today. It should work fine. Then uncomment > >>> the second "batch" of tickers and run it - does this crash your machine? > >>> Any ideas as to why? > >>> > >>> I have searched the posts for answers but nothing has helped so far. I > >>> presume its a memory problem of some sort. > >>> > >>> Note that I have the following settings in preferences, Data tab: > >>> > >>> In-memory cache: 20 (I have tried 11 as well, per a post from Tomasz) > >>> Max Megabytes: 800 > >>> > >>> Any help greatly appreciated. > >>> > >>> Ramon > >>> > >>> //-------------------------------------------- > >>> > >>> Filter = 1; > >>> > >>> function indicator( Ticker ) > >>> { > >>> SetForeign( Ticker ); > >>> myRsi = RSI( 2 ); > >>> RestorePriceArrays(); > >>> return myRSI; > >>> > >>> } > >>> > >>> AddColumn( indicator( "INTU" ), "INTU", 1.2, 1 ); > >>> AddColumn( indicator( "VMED" ), "VMED", 1.2, 1 ); > >>> AddColumn( indicator( "JBHT" ), "JBHT", 1.2, 1 ); > >>> AddColumn( indicator( "ADSK" ), "ADSK", 1.2, 1 ); > >>> AddColumn( indicator( "LRCX" ), "LRCX", 1.2, 1 ); > >>> AddColumn( indicator( "SIAL" ), "SIAL", 1.2, 1 ); > >>> AddColumn( indicator( "BMC" ), "BMC", 1.2, 1 ); > >>> AddColumn( indicator( "MAT" ), "MAT", 1.2, 1 ); > >>> AddColumn( indicator( "MYL" ), "MYL", 1.2, 1 ); > >>> AddColumn( indicator( "QGEN" ), "QGEN", 1.2, 1 ); > >>> > >>> // Uncomment below - does it crash your machine? > >>> /* > >>> AddColumn( indicator("VOD"), "VOD", 1.2, 1); > >>> AddColumn( indicator("PCLN"), "PCLN", 1.2, 1); > >>> AddColumn( indicator("CERN"), "CERN", 1.2, 1); > >>> AddColumn( indicator("NWSA"), "NWSA", 1.2, 1); > >>> AddColumn( indicator("FSLR"), "FSLR", 1.2, 1); > >>> AddColumn( indicator("ILMN"), "ILMN", 1.2, 1); > >>> AddColumn( indicator("ORLY"), "ORLY", 1.2, 1); > >>> AddColumn( indicator("WCRX"), "WCRX", 1.2, 1); > >>> AddColumn( indicator("ADP"), "ADP", 1.2, 1); > >>> */ > >>> > >>> > >>> > >>> ------------------------------------ > >>> > >>> **** 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 > >>> > >>> > >>> > >>> > >>> > >>> > >> > > > > > > > > ------------------------------------ > > > > **** 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 > > > > > > > > > > >
