Hi Mike - Followup note = StrFind does extract all tickers in Industry = 0 and StrExtract + StrToNum extracts all tickers in Industry 0 and 2. Something still isn't quite right with the read of the "ids", that was created. Thanks
--- In [email protected], "gmorlosky" <gmorlo...@...> wrote: > > Hi - almost working, if I force the "return" to be a number (4) and I added > IndustryID... to the filter, it works. I started fiddling with StrToNum, > thinking I had to convert, but no luck. Below is the complete code. > 1) My csv file is a text file that the numbers 1 through 10 are each in a new > row with no commas. > 2) Oddly, printf will display either all the even or all the odd numbers > depending where it is in the code > 3) Scan and Explore output data but are not restricted by IndustryID ( that's > why I started to try and use StrToNum) > > Thanks greatly > > _SECTION_BEGIN("ReadingCSV Function"); > Title = "ReadingCSV Function"; > id = 0; > Found = ""; > item = 0; > function IncludeIndustry( id ) > { > local ids; > local fh; > > ids = ","; > fh = fopen( "C:\\AmiBroker CSV\\ABTest.csv", "r" ); > > if ( fh ) > { > while ( !feof( fh ) ) > { > // printf( fgets( fh ) ); // printf displays only odd numbers ??? > ids += fgets( fh ); > ids += ","; > printf( fgets( fh ) ); // printf displays only even numbers ??? > } > fclose( fh ); > } > return StrFind( "," + id + "," , ids ); // original code > /* Found = StrFind( "," + id + "," , ids ); // trying StrToNum ??? > Item = StrToNum( "Found" ); // Syntax error ??? > Item = StrToNum( "4" ); // this works fine > Item = 4; // forcing return to be 4 > return Item; > */ > } > > Filter = IndustryID() == IncludeIndustry( IndustryID() ); > > Buy = Close > 0; > Sell = Close = 0; > AddColumn ( Buy,"Buy" ); > AddColumn ( Sell,"Sell" ); > AddColumn ( Close,"Close" ); > AddTextColumn( FullName(),"FullName" ); > AddColumn( id, "Id" ); > //AddColumn( Found, "Found" ); > AddColumn( Item, "item" ); > _SECTION_END(); > > > > > > > > > > --- In [email protected], "Mike" <sfclimbers@> wrote: > > > > Forgot to add the fclose. As always, double check everything given in a > > forum ;) > > > > Mike > > > > --- In [email protected], "Mike" <sfclimbers@> wrote: > > > > > > Ideally, you would use static variables to read the file only once and > > > hang on to the list. That can be your next iteration in the evolution of > > > your code. > > > > > > For now, assuming that the file contains one or more lines of one or more > > > comma separated values (without any blank spaces between values and > > > without blank lines), the path you are following would probably look > > > something like this (untested, going from memory based on an earlier > > > posting by someone else that I can't find right now): > > > > > > function IncludeIndustry(id) { > > > local ids; > > > local fh; > > > > > > ids = ","; > > > fh = fopen("C:\\AmiBroker CSV\\ABTest.csv","r"); > > > > > > if (fh) { > > > while(!feof(fh)) { > > > ids += fgets(fh); > > > ids += ","; > > > } > > > } > > > > > > return StrFind("," + id + ",", ids); > > > } > > > > > > Filter = IncludeIndustry(IndustryID()); > > > > > > Mike > > > > > > --- In [email protected], "gmorlosky" <gmorlosky@> wrote: > > > > > > > > Ok - here is what I have but can't quite get it to work. > > > > I have the code to fget and the code that I want to replace. > > > > How do I put a loop inside the "New Method" to fget to read the csv > > > > file in place of each "OR" I have in the "Old Method"? > > > > > > > > ****New Method**** > > > > _SECTION_BEGIN("ReadingCSV"); > > > > Title = "Reading CSV"; > > > > fh = fopen("C:\\AmiBroker CSV\\ABTest.csv","r"); > > > > if (fh) > > > > { > > > > while(!feof(fh)) > > > > { > > > > Numbers = fgets( fh ); // What I need to do is use this list to slim > > > > down the IndustryID to be used > > > > //IndustryID() == Numbers; // This might work, but how to implement ? > > > > } > > > > } > > > > else > > > > { > > > > printf("ERROR: file can not be found (does not exist)"); > > > > } > > > > fclose(fh); > > > > _SECTION_END(); > > > > > > > > > > > > **** Old method **** > > > > if ( RIDon == 1 ) // RIDon is restrict to these Industrys > > > > Filter = Filter AND ( > > > > IndustryID() == 2 > > > > OR IndustryID() == 3 > > > > OR IndustryID() == 4 > > > > OR IndustryID() == 5 > > > > OR IndustryID() == 7 > > > > OR IndustryID() == 15 > > > > ); > > > > > > > > > > Does anyone have simple snippet of code that takes a csv file > > > > > > (could be > > > > > > comma delimited or carrage returned) that then can be the input for > > > > > > going > > > > > > through a list. > > > > > > > > > > > > Example: text.csv contains a list of numbers that would be used to > > > > > > "restrict" or "slim down" the IndustryID that is being used for a > > > > > > "display" > > > > > > or "explore". > > > > > > > > > > > > Thanks > > > > > > > > > > > > > > > >
