Title: Re[2]: [amibroker] Re: Speeding up code ???
Tomasz, for EOD applications you are right but for real-time application many of us would prefer to use a single integrated GUI. This GUI typically provides all trading functions in a convenient single display. This includes charts, screening, button panels, matrix presentations, placing orders, gfx, etc.
If you ran a poll you would probably find that 90% of RT users loop through Tickers in indicators to obtain real-time sorting, screening, etc. They do not use the AA that must be launched separately.
Adding some afl function to run, and collect data from, AA operations would be great. The continuous DT reference array mentioned in another post is also often needed when running from an indicator... Setting the current ticker to such an arrays, from afl, would be another requirement....
Best regards,
herman
Wednesday, July 1, 2009, 3:10:46 PM, you wrote:
> Hello,
> What is posted in the files section is incomplete - it uses several
> #includes and none of the files are there.
> Also the code looks overly complicated and it abuses many things.
> It should be written again from scratch.
> Any kind of symbol by symbol matrix should be generated as EXPLORATION
> not indicator.
> This is so because exploration is done one demand (not with every
> refresh) and it has
> ability to iterate through symbols while displaying progress bar
> and processing windows messages between symbols making
> way more responsive.
> Also the code uses JScript to change the symbol for chart being
> actually executed - a big no-no.
> Entire code should be totally re-written using Exploration mode.
> Third thing is that the code uses Status("Action") to execute
> parts of the code only when used in indicator, therefore
you won't have this part profiled using Tools->>Code Check And Profile
> because code check is not run with Action == 1.
> Generally speaking I see people largely abusing indicators
> for things that should be done in AA window (mainly exploration).
> An example correlation heat map formula looks as follows.
> Note that it is just 6 lines.
> /*This is the formula to create a correlation matrix in AB.
> It is set up to run the correlation of the symbols in Watchlist 2
> with the "define" filter catagory in the auto-analyser. In this
> default case
> this code will correlate the symbols in watchlist 2 with the symbols
> in watchlist 2.
- Tools ->> Send to Analysis
> - press FILTER button and select Watchlist 2 in INCLUDE tab
> - press EXPLORE button in AA window.*/
> symlist = CategoryGetSymbols( categoryWatchlist, 2 );
> Filter = Status("lastbarinrange");
> for( i = 0; ( sym = StrExtract( symlist, i ) ) != ""; i++ )
> {
> Corr = Correlation( C, Foreign( sym, "C" ), 252 );
> Clr = 32 + SelectedValue( Corr ) * 32;
> AddColumn( Corr, sym, 1.2, ColorHSB( 128+Clr, 255, 255 ) ,
> ColorHSB(Clr, 255, 255 ) );
> }
> Best regards,
> Tomasz Janeczko
> amibroker.com
> gmorlosky wrote:
>> Thanks TJ - I have uploaded the file to the Files section as HeatMap.afl
>> HeatMap v1.1a
>> I actually use 3 of these heatmap indicators at once in a single window with different scoreing selected. So anything to speed things up would help.
>> --- In amibroker@xxxxxxxxxxxxxxx, Tomasz Janeczko <groups@xxx> wrote:
>>
>>> Hello,
>>> Sorry, but I can't see any formula attached to your e-mail. Please send
>>> the formula you are using,
>>> then we could discuss the details.
>>> Best regards,
>>> Tomasz Janeczko
>>> amibroker.com
>>> gmorlosky wrote:
>>>
>>>> Thanks - So I am really doing 123 * 123 in the orginal example... How do I speed that up ?
>>>> Yes - the example was a partial list as I left off some of the "lesser" functions, but I have included all below (119 symbols).
>>>> Function name Call Count Total Time[ms] Time per Call [ms]
>>>> StrExtract 120 0.530 0.004
>>>> CategoryGetSymbols 1 0.125 0.125
>>>> GetCategorySymbols 1 0.107 0.107
>>>> Param 6 0.038 0.006
>>>> paramcategory 1 0.034 0.034
>>>> ParamList 4 0.031 0.008
>>>> ParamToggle 4 0.031 0.008
>>>> NumToStr 1 0.030 0.030
>>>> StaticVarGet 3 0.019 0.006
>>>> array operator - 1 0.015 0.015
>>>> paramlistnum 1 0.014 0.014
>>>> ParamTrigger 2 0.010 0.005
>>>> _SECTION_BEGIN 1 0.008 0.008
>>>> Status 1 0.005 0.005
>>>> IIf 2 0.003 0.002
>>>> StrLen 1 0.002 0.002
>>>> _SECTION_END 1 0.002 0.002
>>>> EnableScript 1 0.002 0.002
>>>> StrFind 1 0.002 0.002
>>>> EnableTextOutput 1 0.001 0.001
>>>> GetChartID 1 0.000 0.000
>>>> --- In amibroker@xxxxxxxxxxxxxxx, Tomasz Janeczko <groups@> wrote:
>>>>
>>>>
>>>>> The list looks incomplete. Your formula probably uses
>>>>> 123 * 123 (=15129) calls to Foreign function to generate heat map /
>>>>> correlation for 123 symbols. That's
>>>>> where it apparently spends most time.
>>>>> gmorlosky wrote:
>>>>>
>>>>>
>>>>>> Explain something to me. This particular indicator code (HeatMap of 123 symbols)runs like a dog (5 seconds or more to complete. I have no plugins or scripting. The details of each function are below. Is it the StrExtract and/or the *Symbols, that needs to be sped up ? and how ?
>>>>>> Function name Call Count Total Time [ms] Time per Call [ms]
>>>>>> StrExtract 123 0.563 0.005
>>>>>> CategoryGetSymbols 1 0.403 0.403
>>>>>> GetCategorySymbols 1 0.285 0.285
>>>>>> Param 6 0.038 0.006
>>>>>> ParamList 4 0.035 0.009
>>>>>> Paramcategory 1 0.033 0.033
>>>>>> ParamToggle 4 0.032 0.008
>>>>>> NumToStr 1 0.030 0.030
>>>>>> AddColumn 1 0.023 0.023
>>>>>> ------------------------------------
>>>>>> **** IMPORTANT PLEASE READ ****
>>>>>> This group is for the discussion between users only.
>>>>>> This is *NOT* technical support channel.
>>>>>> TO GET TECHNICAL SUPPORT send an e-mail directly to
>>>>>> SUPPORT {at} amibroker.com
>>>>>> TO SUBMIT SUGGESTIONS please use FEEDBACK CENTER at
>>>>>> http://www.amibroker.com/feedback/
>>>>>> (submissions sent via other channels won't be considered)
>>>>>> For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
>>>>>> http://www.amibroker.com/devlog/
>>>>>> Yahoo! Groups Links
>>>>>>
>>>>>>
>>>> ------------------------------------
>>>> **** IMPORTANT PLEASE READ ****
>>>> This group is for the discussion between users only.
>>>> This is *NOT* technical support channel.
>>>> TO GET TECHNICAL SUPPORT send an e-mail directly to
>>>> SUPPORT {at} amibroker.com
>>>> TO SUBMIT SUGGESTIONS please use FEEDBACK CENTER at
>>>> http://www.amibroker.com/feedback/
>>>> (submissions sent via other channels won't be considered)
>>>> For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
>>>> http://www.amibroker.com/devlog/
>>>> Yahoo! Groups Links
>>>>
>> ------------------------------------
>> **** IMPORTANT PLEASE READ ****
>> This group is for the discussion between users only.
>> This is *NOT* technical support channel.
>> TO GET TECHNICAL SUPPORT send an e-mail directly to
>> SUPPORT {at} amibroker.com
>> TO SUBMIT SUGGESTIONS please use FEEDBACK CENTER at
>> http://www.amibroker.com/feedback/
>> (submissions sent via other channels won't be considered)
>> For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
>> http://www.amibroker.com/devlog/
>> Yahoo! Groups Links
>>
> ------------------------------------
> **** IMPORTANT PLEASE READ ****
> This group is for the discussion between users only.
> This is *NOT* technical support channel.
> TO GET TECHNICAL SUPPORT send an e-mail directly to
> SUPPORT {at} amibroker.com
> TO SUBMIT SUGGESTIONS please use FEEDBACK CENTER at
> http://www.amibroker.com/feedback/
> (submissions sent via other channels won't be considered)
> For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
> http://www.amibroker.com/devlog/
> 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/
__._,_.___
**** IMPORTANT PLEASE READ ****
This group is for the discussion between users only.
This is *NOT* technical support channel.
TO GET TECHNICAL SUPPORT send an e-mail directly to
SUPPORT {at} amibroker.com
TO SUBMIT SUGGESTIONS please use FEEDBACK CENTER at
http://www.amibroker.com/feedback/
(submissions sent via other channels won't be considered)
For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
http://www.amibroker.com/devlog/
__,_._,___
|