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

RE: [amibroker] AmiBroker 4.60.0 released - please check account information page for possible upgrade options.



PureBytes Links

Trading Reference Links




Herman,
 
It is because your formula calls LinearReg inside 
loop so many times that requirements are added up so
it effectively turns off QuickAFL at 
all.
Use instead this code:
 
array = 0<FONT 
face="Courier New">; T1 = <FONT 
color=#0000ff>LinearReg(<FONT 
color=#0000ff>LinearReg(<FONT 
color=#000000>C,<FONT 
color=#ff00ff>20),<FONT 
color=#ff00ff>20); 
for<FONT 
color=#000000>(bar=0; 
bar<BarCount<FONT 
face="Courier New">; bar++) { LRR[bar] = T1[bar]; 
array[ bar ] = bar; } bi=<FONT 
color=#0000ff>BarIndex<FONT 
color=#000000>(); Plot<FONT 
color=#000000>( array, "bar"<FONT 
color=#000000>, colorRed<FONT 
face="Courier New"> ); <FONT 
color=#0000ff>Plot( <FONT 
color=#0000ff>BarIndex(), <FONT 
color=#ff00ff>"QuickAFL start bar = "+bi[<FONT 
color=#ff00ff>0]+" End bar 
= "+bi[<FONT 
color=#000000>BarCount-<FONT 
color=#ff00ff>1] + " 
NumBars =" + <FONT 
color=#000000>BarCount, <FONT 
color=#000000>colorBlue ); 

 
Loop-invariant part moved outside the loop (basic 
programming principle)
Best regards,Tomasz Janeczkoamibroker.com
<BLOCKQUOTE 
>
  ----- Original Message ----- 
  <DIV 
  >From: 
  Herman van den 
  Bergen 
  To: <A title=amibroker@xxxxxxxxxxxxxxx 
  href="">amibroker@xxxxxxxxxxxxxxx 
  Sent: Sunday, July 25, 2004 5:48 PM
  Subject: RE: [amibroker] Looping within 
  QuickAFL bounds
  
  TJ, 
  i did NOT use Apply. I emailed test result emailed to you privately for your 
  persusal.
  <FONT face=Arial color=#0000ff 
  size=2> 
  best 
  regards,
  <FONT face=Arial color=#0000ff 
  size=2>herman.
  
    <FONT face=Tahoma 
    size=2>-----Original Message-----From: Tomasz Janeczko 
    [mailto:amibroker@xxxxxx]Sent: Sunday, July 25, 2004 10:11 
    AMTo: <A 
    href="">amibroker@xxxxxxxxxxxxxxxSubject: 
    Re: [amibroker] Looping within QuickAFL boundsImportance: 
    High
    Herman,
     
    The last sentence from my previous 
    e-mail should give you an answer:
    "Please note that the very <FONT 
    color=#800000>first exectution after clicking "APPLY" in Indicator 
    Builder uses always *ALL* bars 
    because
    
    it needs to analyse your code and its 
    requirements. Only subsequent executions use QuickAFL (less 
    bars)."
    
     
    Best regards,Tomasz 
    Janeczkoamibroker.com
    <BLOCKQUOTE 
    >
      ----- Original Message ----- 
      <DIV 
      >From: 
      Herman van den 
      Bergen 
      To: <A 
      title=amibroker@xxxxxxxxxxxxxxx 
      href="">amibroker@xxxxxxxxxxxxxxx 
      
      Sent: Sunday, July 25, 2004 1:38 
      PM
      Subject: RE: [amibroker] Looping 
      within QuickAFL bounds
      
      
        <FONT face=Arial color=#0000ff 
        size=2>Tomasz, I understand what you are saying.... But if I test the 
        code below using DebugView and i get 0.43 Second 
        execution regardless of wether I have QuickAFL set 
        On or OFF. So it appears that in this case QuickAFL does not 
        restrict my loops to its bounds...( i used AB 4.6, EOD data, max zoom 
        (10bars displayed)). Now if I set the loop to start at Barcount-40 to 
        cover only the data I think i should i get a dramatic improvement in 
        execution - which is what i want. <SPAN 
        class=406480511-25072004><FONT face=Arial color=#0000ff 
        size=2>What am i doing 
        wrong?
      
        <SPAN 
        class=406480511-25072004><FONT face=Arial color=#0000ff 
        size=2>h<SPAN 
        class=406480511-25072004>erman<SPAN 
        class=406480511-25072004><FONT 
        color=#0000ff>_TRACE(<FONT 
        color=#ff00ff>"#Start");array = 
        0<FONT 
        size=2>;<FONT 
        face="Lucida Console" color=#800000>for<FONT 
        size=2>(bar=<FONT 
        face="Lucida Console" color=#ff00ff>0<FONT 
        face="Lucida Console">; bar<BarCount; bar++) { 
        T1=LinearReg(<FONT 
        color=#0000ff>LinearReg(C,<FONT 
        color=#ff00ff>20),20); <FONT 
        size=2>// just to slow things down a 
        bitLRR[bar] = T1[bar];<FONT 
        face="Lucida Console">array[ bar ] = bar; }<FONT 
        face="Lucida Console" color=#0000ff>Plot<FONT 
        face="Lucida Console">( array, <FONT face="Lucida Console" 
        color=#ff00ff>"bar"<FONT 
        face="Lucida Console">, colorRed );<FONT 
        face="Lucida Console" color=#0000ff>Plot<FONT 
        face="Lucida Console">( <FONT face="Lucida Console" 
        color=#0000ff>BarIndex(), 
        <FONT face="Lucida Console" 
        color=#ff00ff>"barindex"<FONT 
        face="Lucida Console">, colorBlue );<FONT 
        color=#0000ff>_TRACE(<FONT 
        color=#ff00ff>"#End");
      
        <FONT 
        face=Tahoma><FONT face=Arial 
        color=#0000ff> 
        <FONT 
        face=Tahoma><SPAN 
        class=406480511-25072004> 
        <FONT 
        face=Tahoma><SPAN 
        class=406480511-25072004> -----Original 
        Message-----From: Tomasz Janeczko 
        [mailto:amibroker@xxxxxx]Sent: Sunday, July 25, 2004 3:40 
        AMTo: amibroker@xxxxxxxxxxxxxxxSubject: Re: 
        [amibroker] Looping within QuickAFL boundsImportance: 
        High
        Herman,
         
        You do not do worry about it or handle it 
        by yourself.
        AmiBroker does it for you.
         
        for(bar=0; bar<barcount; bar++) { .... 
        }
         
        does not waste any cycles,
         
        Try it:
        
         
        array = 0;
        for(bar=0; bar<barcount; bar++) 
        
        { 
          array[ bar ] = 
        bar; 
        }
        Plot( array, "bar", colorRed 
);
        Plot( BarIndex(), "barindex", colorBlue 
        );
         
        This  because array item 0 already 
        is the first bar used by quick AFL (not the first bar in your data 
        set)
        and (barcount-1) is a last 
        array item of quickafl (not the last bar in your data 
        set).
        I have mentioned it that barcount is a 
        number of bars (items) in the array which may be 
        smaller.
         
        
        <TABLE  cellSpacing=0 
        cellPadding=0 width=529 border=0 x:str>
          
          
            <TD class=xl24 
             
            width=97 height=17>Bar 
Index
            <TD class=xl24 
             
            align=right width=32 x:num><FONT face="Arial CE" 
size=2>0
            <TD class=xl24 
             
            align=right width=28 x:num><FONT face="Arial CE" 
size=2>1
            <TD class=xl24 
             
            align=right width=31 x:num><FONT face="Arial CE" 
size=2>2
            <TD class=xl24 
             
            align=right width=28 x:num><FONT face="Arial CE" 
size=2>3
            <TD class=xl24 
             
            align=right width=30 x:num><FONT face="Arial CE" 
size=2>4
            <TD class=xl24 
             
            align=right width=32 x:num><FONT face="Arial CE" 
size=2>5
            <TD class=xl24 
             
            align=right width=29 x:num><FONT face="Arial CE" 
size=2>6
            <TD class=xl24 
             
            align=right width=37 x:num><FONT face="Arial CE" 
size=2>7
            <TD class=xl26 
             
            align=right width=36 x:num><FONT face="Arial CE" 
size=2>8
            <TD class=xl24 
             
            align=right width=35 x:num><FONT face="Arial CE" 
size=2>9
            <TD class=xl24 
             
            align=right width=40 x:num><FONT face="Arial CE" 
            size=2>10
            <TD class=xl24 
             
            align=right width=32 x:num><FONT face="Arial CE" 
            size=2>11
            <TD class=xl24 
             
            align=right width=42 x:num><FONT face="Arial CE" 
            size=2>12
          
            <TD class=xl25 
             
            height=17>Array element
            <TD 
            ><FONT 
              face="Arial CE" size=2>
            <TD 
            ><FONT 
              face="Arial CE" size=2>
            <TD 
            ><FONT 
              face="Arial CE" size=2>
            <TD 
            ><FONT 
              face="Arial CE" size=2>
            <TD class=xl25 
             
            align=right x:num>0
            <TD class=xl25 
             
            align=right x:num>1
            <TD class=xl25 
             
            align=right x:num>2
            <TD class=xl25 
             
            align=right x:num>3
            <TD class=xl26 
             
            align=right x:num>4
            <TD class=xl25 
             
            align=right x:num>5
            <TD 
            >
            <TD 
            >
            <TD 
            >
         
        As you can see in the picture above when 
        QuickAFL is on, BarCount variable will give you 6 in that 
        case
        (the number of items in the array). So if 
        you will iterate from 0 to 5 you will access only visible
        items automatically.
         <FONT face=Arial 
        size=2>
        So writing 
        for(bar=0; bar<barcount; bar++)  you are already accessing 
        only what is necessary, not more.
         
        Please note that the very first exectution 
        after clicking "APPLY" in Indicator Builder uses always *ALL* bars 
        because
        it needs to analyse your code and its 
        requirements. Only subsequent executions use QuickAFL (less 
        bars).
        
        Best regards,Tomasz 
        Janeczkoamibroker.com
        <BLOCKQUOTE 
        >
          ----- Original Message ----- 
          <DIV 
          >From: 
          Herman van den 
          Bergen 
          To: <A 
          title=amibroker@xxxxxxxxxxxxxxx 
          href="">AmiBroker YahooGroups 
          
          Sent: Sunday, July 25, 2004 2:38 
          AM
          Subject: [amibroker] Looping 
          within QuickAFL bounds
          
          <SPAN 
          class=437013000-25072004>Hello,
          <SPAN 
          class=437013000-25072004> 
          would 
          anybody have figured out how to restrict a loop to the same range as 
          QuickAFL. Normally is use loops like:
          
            <SPAN 
            class=437013000-25072004>for(bar=0; bar<barcount; bar++) { 
            .... }
          <SPAN 
          class=437013000-25072004> 
          However 
          this is wasting a lot of cycles, especially when working with about 
          100,000 minute bars of which only the displayed segment (about 1% 
          of the data) is important. <SPAN 
          class=437013000-25072004>For use with QuickAFL ON, can anybody 
          provide the code to define:
          
            <SPAN 
            class=437013000-25072004>FirstBarUsedByQuickAFL =  
            ?
            <SPAN 
            class=437013000-25072004>LastBarUsedByQuickAFL =  
            ?
          <SPAN 
          class=437013000-25072004>so that I can make the loop like 
          so:
          
            <SPAN 
            class=437013000-25072004>for( bar = FirstBarUsedByQuickAFL; bar 
            <= LastBarUsedByQuickAFL; Bar++ ) { .... 
            }
          Many 
          thanks,
          <SPAN 
          class=437013000-25072004>herman.Check 
          AmiBroker web page at:<A 
          href="">http://www.amibroker.com/Check 
          group FAQ at: <A 
          href="">http://groups.yahoo.com/group/amibroker/files/groupfaq.html 
          Check AmiBroker web page at:<A 
          href="">http://www.amibroker.com/Check 
          group FAQ at: <A 
          href="">http://groups.yahoo.com/group/amibroker/files/groupfaq.html 
          Check AmiBroker web page 
      at:<A 
      href="">http://www.amibroker.com/Check 
      group FAQ at: <A 
      href="">http://groups.yahoo.com/group/amibroker/files/groupfaq.html 
      Check AmiBroker web page at:<A 
      href="">http://www.amibroker.com/Check 
      group FAQ at: <A 
      href="">http://groups.yahoo.com/group/amibroker/files/groupfaq.html 
      Check AmiBroker web page 
  at:<A 
  href="">http://www.amibroker.com/Check 
  group FAQ at: <A 
  href="">http://groups.yahoo.com/group/amibroker/files/groupfaq.html 
  


Check AmiBroker web page at:
http://www.amibroker.com/

Check group FAQ at: http://groups.yahoo.com/group/amibroker/files/groupfaq.html








Yahoo! Groups Sponsor


  ADVERTISEMENT 












Yahoo! Groups Links
To visit your group on the web, go to:http://groups.yahoo.com/group/amibroker/ 
To unsubscribe from this group, send an email to:amibroker-unsubscribe@xxxxxxxxxxxxxxx 
Your use of Yahoo! Groups is subject to the Yahoo! Terms of Service.