Just a general note, if one of the symbols does not have a bar on a certain date but the rest do it can cause problems I find it better to use datetime, or datenum if only end of day, for the bar identification instead of barindex
-- Cheers Graham AB-Write >< Professional AFL Writing Service Yes, I write AFL code to your requirements http://www.aflwriting.com On 11/01/07, trb0428 <[EMAIL PROTECTED]> wrote:
I have almost got his working except for the following: the indicator that I am plotting disappears and re-appears on alternating clicks of my mouse ???? I have tried hardcoding numbers in place of Barcount and I have tried adding the line : SetBarsRequired(10000,10000); but with no difference. I am first creating and storing a ranked and sorted list of 200 stocks using the following (AFL_File#1), which I am confident is working properly and not part of the problem. This stores my ranked and sorted list in a binary file. I then use (AFL_File#2) in an indicator window and it succesfully retrieves the data I want to plot from the binary file but the plotted indicator diasppears and comes back with each mouse click. Any ideas on how I can prevent this? Thanks, Tom //AFL_File#1 osInitialize(); List = GetCategorySymbols(categoryWatchlist, 10); table=osTabCreate(); osTabAddColumn( "Ticker", 2, table, 25 ); for( j = 0; j <= BarCount-1; j++ ) { osTabAddColumn( "Score"+j, 1, table ); osTabAddColumn( "rank"+j, 1, table ); } for(i=0; ( ticker = StrExtract( List, i ) ) != ""; i++) { SetForeign(ticker); osTabSetString( ticker, i, 0, table ); for( j = 0; j <= BarCount-1; j++) { osTabSetNumber( score[j] = LastValue(Ref(((ROC(C,5) + ROC(C,15) + ROC (C,25) + ROC(C,35)) / 4),-BarCount+1+j)) , i, 2 * j + 1, table ); } } RestorePriceArrays(); for( j = 0; j <= BarCount-1; j++) { osTabSort( table, 2 * j + 1, False ); //score for(n = 0; n<= i -1; n++) { osTabSetNumber(n+1,n,2 * j + 2,table); //rank } } osTabSort( table, 0 , True ); // reorder by ticker# osTabSave("Rank_and_sort.bin",table); osTabDelete( table ); //AFL_File#2 osInitialize(); table2 = osTabCreate(); osTabLoad("Rank_and_sort.bin", table2 ); for( j = 0; j <= BarCount-1; j++) { ID1[j] = osTabGet(0, 2 * j + 2, table2); } osTabDelete( table2 ); Plot(ID1, "!ID1 rank", colorRed ); --- In amibroker@yahoogroups.com, "trb0428" <[EMAIL PROTECTED]> wrote: > > Graham, > > Thanks. I find the sorting and ranking within the Osaka routines to > be very fast. I am going to try saving a binary version of the table > created using Osaka and then from within my indicator code recall and > load the table into memory and index into it for just the rank of the > ticker I have displayed in my chart therfore only needing to create > one array instead of 200 which I think (hope?) I can do. I think I > should then be able to plot this without incurring a performance > penalty.....thanks for your help. > > regards, > Tom > > --- In amibroker@yahoogroups.com, Graham <kavemanperth@> wrote: > > > > If you need the value for every bar then you will need to run the > ranking > > for every bar, including creating the data files for every bar. ie > within a > > loop > > There are some sort and rank AFL in a library that allow similar > ranking > > using staticvarget, but again these will need changing to within a > loop to > > get the ranked values for every bar. > > Just remember that sorting symbols against each other will slow the > > execution down by a very large amount, the more symbols and more > bars > > included will determine the boredom time you will encounter > > > > -- > > Cheers > > Graham > > AB-Write >< Professional AFL Writing Service > > Yes, I write AFL code to your requirements > > http://www.aflwriting.com > > > > > > On 11/01/07, trb0428 <tombrowne34@> wrote: > > > > > > Hi Graham, > > > > > > I am using the Osaka plugin to rank and sort a list of stocks. > > > From this, I am trying to create an indicator which will display > the > > > rank of the stock for each bar. I have 200 symbols that I am > sorting > > > and rankng. > > > > > > Below is the code I am using to read from the Osaka table into a > > > single array ( only works for one ticker). I was hoping to be > able to > > > create (dynamically) the 200 arrays I need to hold the rank > numbers > > > for each day for the 200 tickers using something within the loop > like: > > > > > > myarray = "ID"+n; > > > myarray = ID; > > > > > > but I know this doesn't work. > > > > > > Can I accomplish this with VarSet/VarGet as you suggest? > > > > > > > > > for (n = 0; n<= tickers-1; n++) //n is the rows representing > tickers > > > { > > > > > > for( j = period-1; j <= BarCount-1; j++) // j*2+2 holds the > rank > > > { > > > ID[j] = osTabGet( n, 2 * j + 2, mytable ); > > > > > > } > > > myarray = "ID"+n; // <-- this does not work > > > myarray = ID; // <-- this does not work > > > } > > > > > > Thanks, > > > Tom > > > > > > > > > --- In amibroker@yahoogroups.com, Graham <kavemanperth@> wrote: > > > > > > > > Tom > > > > Exactly what are you trying to achieve? What are the arrays ? > > > > btw Varset is an array, staticvarset is a single value > > > > > > > > > > > > VarSet("Close",C); > > > > Plot(VarGet("Close"),"Close",colorBlue,styleLine); > > > > > > > > > > > > -- > > > > Cheers > > > > Graham > > > > AB-Write >< Professional AFL Writing Service > > > > Yes, I write AFL code to your requirements > > > > http://www.aflwriting.com > > > > > > > > On 11/01/07, trb0428 <tombrowne34@> wrote: > > > > > > > > > > Ara, > > > > > > > > > > My goal is to plot the data. I do not see how I can use this > > > > > structure to plot? Is there a way to store this element by > element > > > > > data into an artificial ticker symbol. I have thought of > > > > > impplementations using ATC but cannot arrive at a solution > this > > > way??? > > > > > Is there any other way to store this data? > > > > > > > > > > Thanks for your suggestions. > > > > > > > > > > regards, > > > > > Tom > > > > > > > > > > > > > > > --- In amibroker@yahoogroups.com, "Ara Kaloustian" <ara1@> > wrote: > > > > > > > > > > > > Use VarSet() and VarGet() functions. These are non array > > > elements, > > > > > but you > > > > > > can create them dynamically so you can set and read them in > a > > > loop > > > > > as array > > > > > > elements. > > > > > > > > > > > > for (i=1; i<10; i++) > > > > > > { > > > > > > //create element name > > > > > > Array_element = "Arr_item" + i; > > > > > > VarSet(Array_element,desired_value); > > > > > > } > > > > > > > > > > > > x = VarGet("Arr_item1"); > > > > > > > > > > > > ----- Original Message ----- > > > > > > From: "trb0428" <tombrowne34@> > > > > > > To: <amibroker@yahoogroups.com> > > > > > > Sent: Tuesday, January 09, 2007 1:39 PM > > > > > > Subject: [amibroker] Are dynamic arrays possible in AB? > > > > > > > > > > > > > > > > > > > Hi, > > > > > > > > > > > > > > I have a need to create arrays dynamically. Is this > possible? > > > I > > > > > have > > > > > > > tried several ways including the following but without > > > success: > > > > > > > > > > > > > > > > > > > > > for (n = 0; n<= tickers-1; n++) > > > > > > > { > > > > > > > > > > > > > > for( j = period-1; j <= BarCount-1; j++) > > > > > > > { > > > > > > > > > > > > > > ID[j] = osTabGet( n, 2 * j + 2, mytable ); > > > > > > > > > > > > > > } > > > > > > > myarray = "ID"+n; > > > > > > > myarray = ID; > > > > > > > } > > > > > > > > > > > > > > Tom > > > > > > > > > > > > > > > > > > > > > > > > > > > > Please note that this group is for discussion between > users > > > only. > > > > > > > > > > > > > > To get support from AmiBroker please send an e-mail > directly > > > to > > > > > > > SUPPORT {at} amibroker.com > > > > > > > > > > > > > > For NEW RELEASE ANNOUNCEMENTS and other news always check > > > DEVLOG: > > > > > > > http://www.amibroker.com/devlog/ > > > > > > > > > > > > > > For other support material please check also: > > > > > > > http://www.amibroker.com/support.html > > > > > > > > > > > > > > Yahoo! Groups Links > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Please note that this group is for discussion between users > only. > > > > > > > > > > To get support from AmiBroker please send an e-mail directly > to > > > > > SUPPORT {at} amibroker.com > > > > > > > > > > For NEW RELEASE ANNOUNCEMENTS and other news always check > DEVLOG: > > > > > http://www.amibroker.com/devlog/ > > > > > > > > > > For other support material please check also: > > > > > http://www.amibroker.com/support.html > > > > > > > > > > Yahoo! Groups Links > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Please note that this group is for discussion between users only. > > > > > > To get support from AmiBroker please send an e-mail directly to > > > SUPPORT {at} amibroker.com > > > > > > For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG: > > > http://www.amibroker.com/devlog/ > > > > > > For other support material please check also: > > > http://www.amibroker.com/support.html > > > > > > Yahoo! Groups Links > > > > > > > > > > > > > > > Please note that this group is for discussion between users only. To get support from AmiBroker please send an e-mail directly to SUPPORT {at} amibroker.com For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG: http://www.amibroker.com/devlog/ For other support material please check also: http://www.amibroker.com/support.html Yahoo! Groups Links