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

Re: [amibroker] Re: String Manipulations



PureBytes Links

Trading Reference Links

Ken, Tuzo, Mike,

I love a good interactive game of one-upmanship in programming  
simplicity and efficiency.  It lets all learn different ways of  
looking at a simple problem that everyone benefits from.  While a few  
cycles or statements here and there make no practical difference to  
the application, they do make a lasting difference in how we  
conceptualize the solutions for the future.  In that spirit I will  
offer one more way inspired by Tuzo's last post:

comma = "";
for( i=1; i < totalSymbolCount; i++ )
    {
        list = StaticVarGetText( "H" + NumToStr(i, 1.0, 0));
        SymList +=  comma + StrExtract( list , 0);
        ShrList +=  comma + StrExtract( list, 1);
        DatList +=  comma +  StrExtract( list, 2);
        comma = ",";
    }


On Sep 20, 2008, at 9:49 AM, Ken Close wrote:

> Thanks, Tuzo.  While I don't need cycles in my application, your  
> idea is
> good for saving some time when it really counts.
>
> Ken
>
> -----Original Message-----
> From: amibroker@xxxxxxxxxxxxxxx [mailto:amibroker@xxxxxxxxxxxxxxx]  
> On Behalf
> Of tuzo_wilson
> Sent: Saturday, September 20, 2008 12:44 AM
> To: amibroker@xxxxxxxxxxxxxxx
> Subject: [amibroker] Re: String Manipulations
>
>
> 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
>
>
>
>
> ------------------------------------
>
> 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/