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

[amibroker] Re: String Manipulations



PureBytes Links

Trading Reference Links

You could also take the comma calculations outside of the loop which
could save some cycles.  i.e. just append an extra comma to the end of
the list and strip it off after the loop is done:

COMMA = ",";
for( i=1; i < totalSymbolCount; i++ )
{
    list = StaticVarGetText( "H" + NumToStr(i, 1.0, 0));

    SymList += StrExtract( list, 0 ) + COMMA;
    ShrList += StrExtract( list, 1 ) + COMMA;
    DatList += StrExtract( list, 2 ) + COMMA;
}

//
// remove trailing commas
//
SymList = StrLeft( SymList, StrLen( SymList ) - 1 );
ShrList = StrLeft( ShrList, StrLen( ShrList ) - 1 );
DatList = StrLeft( DatList, StrLen( DatList ) - 1 );


Tuzo


--- In amibroker@xxxxxxxxxxxxxxx, Dennis Brown <see3d@xxx> wrote:
>
> Thanks Mike for pointing out that += works with strings also.
> Oh, yea, the comma at the beginning.
> I would get around that by doing the following:
> 
> for( i=1; i < totalSymbolCount; i++ )
>     {
>         list = StaticVarGetText( "H" + NumToStr(i, 1.0, 0));
>         if(i==1){comma = "";} else{comma = ",";}
>         SymList +=  comma + StrExtract( list , 0);
>         ShrList +=  comma + StrExtract( list, 1);
>         DatList +=  comma +  StrExtract( list, 2);
>     }
> 
> Ken,  you now have the best ideas of three people.
> 
> BR,
> Dennis
> 
> 
> On Sep 19, 2008, at 7:05 PM, Ken Close wrote:
> 
> > Dennis:  Yep.  Worked.  Added an if to get around "," at beginning of
> > assembled lists, and it works fine.
> >
> > Many thanks,
> > Ken
> >
> > -----Original Message-----
> > From: amibroker@xxxxxxxxxxxxxxx [mailto:amibroker@xxxxxxxxxxxxxxx]  
> > On Behalf
> > Of Dennis Brown
> > Sent: Friday, September 19, 2008 5:29 PM
> > To: amibroker@xxxxxxxxxxxxxxx
> > Subject: Re: [amibroker] String Manipulations
> >
> > Hi Ken,
> >
> > The problem is that you defined H1 as a regular variable and the  
> > code is
> > looking for a static variable named H1.  Therefore, the static  
> > variables are
> > empty.  For your test here, just use VarGetText(...
> > Or make your variables into static variables:
> > StaticVarSetText("H1", "SPY,500,06/04/2008"); etc.
> >
> > BR,
> > Dennis
> >
> > On Sep 19, 2008, at 4:51 PM, Ken Close wrote:
> >
> >> Dennis:
> >>
> >> I feel I have a lot to learn from dynamic variables here (asked once
> >> before), but right now I can not make this concept work.
> >> Code below is my modifcation of your concept and it does not crash
> >> but only prints the commas between the strings.
> >> List becomes H1 on the first pass through the loop, then, SymList is
> >> SymList (empty on first pass) + the first (0) item in H1, or the
> >> first symbol. At a minimum, the Symlist will eventually be
> >> ",SPY,etc) as there is no logic to skip the first comma---unless I
> >> am reading it wrong.  Same issue on each of the other ShrList and
> >> DatList.
> >> So, not sure what I am missing, nor have I been successful in adding
> >> anything to correct the problem.
> >> Any suggestions?
> >> Many thanks for responding.
> >> Ken
> >> ==============================
> >> My code using your concept"
> >> H1 = "SPY,500,06/04/2008";
> >> H2 = "DIA,100,09/02/2008";
> >> H3 = "QQQQ,300,08/04/2008";
> >> H4 = "BEARX,1204,05/21/2007";
> >> TotalSymbolCount = 4;
> >> SymList = "";
> >> ShrList = "";
> >> DatList = "";
> >> for( i=1; i < totalSymbolCount; i++ )
> >>    {
> >>        list = StaticVarGetText( "H" + NumToStr(i, 1.0, 0));
> >>        SymList = SymList + "," + StrExtract( list , 0);
> >>        ShrList = ShrList + "," + StrExtract( list, 1);
> >>        DatList = DatList + "," + StrExtract( list, 2);
> >>    }
> >> Title = Symlist + "\n" +
> >>            ShrList + "\n" +
> >>            DatList;
> >>
> >>
> >> ===============================
> >>
> >> From: amibroker@xxxxxxxxxxxxxxx [mailto:amibroker@xxxxxxxxxxxxxxx]
> >> On Behalf Of Dennis Brown
> >> Sent: Friday, September 19, 2008 1:47 PM
> >> To: amibroker@xxxxxxxxxxxxxxx
> >> Subject: Re: [amibroker] String Manipulations
> >>
> >> Ken,
> >>
> >> This is quite easy by using the StrExtract( list, item) function.  I
> >> am doing some similar things in the AFL I am writing for the AFL
> >> Glossary project.
> >>
> >> Typing this off the top of my head to give you the basic idea:
> >>
> >> For( i=1;  i < totalSymbolCount;  i++ )
> >> {
> >> list = VarGetText( "H" + NumToStr(i, 1.0, 0);
> >> SymList = SymList + "," + StrExtract( list , 0);
> >> ShrList = ShrList + "," + StrExtract( list, 1);
> >> DatList = DatList + "," + StrExtract( list, 2);
> >> }
> >>
> >> BR,
> >> Dennis
> >>
> >> On Sep 19, 2008, at 12:53 PM, Ken Close wrote:
> >>
> >>> I have tried various constructions to achieve the following, but
> >>> the code gets complex and has no good way of detecting end of  
> >>> string.
> >>>
> >>> I would like to take a series of strings, H1, H2, H3, and create
> >>> lists of the elements, as such
> >>>
> >>> H1    =    "SPY,500,06/04/2008";
> >>> H2    =    "DIA,100,09/02/2008";
> >>> H3    =    "QQQQ,300,08/04/2008";
> >>>
> >>> and turn them into these three lists
> >>>
> >>> SymList    =    "SPY,DIA,"QQQQ";
> >>> ShrList    =    "500,100,300";
> >>> DatList    =    "06/04/2008,09/02/2008,08/04/2008";
> >>>
> >>> Hx strings would be hard coded into the overall afl although one
> >>> could set up a variety of paramtxt statements to enter them.
> >>>
> >>> Seems like it would be somewhat easy (and maybe it is), but I get
> >>> bogged down in switch/case statements, or complex if/else  
> >>> statements.
> >>>
> >>> Anyone see a more simple way to arrange the strings.
> >>>
> >>> My ultimate goal is to have a list of "holdings" and some simple
> >>> statistics displayed.
> >>> AA window with a Watchlist seems obvious--yes?--but I need to have
> >>> multiple positions of the same symbol, and I do not think you can
> >>> put multiples of the same symbol in a watchlist--same symbol with
> >>> different shares purchased on different dates-- (is there a way?).
> >>>
> >>> I next tried dynamic variables, in order to manipulate symbols and
> >>> their associated price statistics, but that bombed.
> >>>
> >>> So now I am attempting to display my list of holdings in a Gfx
> >>> title statement.
> >>> I successfully have it displayed, but using long strings, like
> >>> above for the SymList, ShrList, and DatList.  This gets
> >>> unmanageable when the number of symbols gets large and you try, by
> >>> eye, to coordinate the dates and shares.
> >>>
> >>> Thus, I was hoping to list a three element string reprenting each
> >>> holding and then rearrage them into long string lists.
> >>>
> >>> any ideas?
> >>>
> >>> thanks.
> >>>
> >>>
> >
> > ------------------------------------
> >
> > 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

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