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