No chance for what?
The primary issues with your original code 
  were:
1. Redundant calls to the same function. You have called each of 
  Fast_EMA and Slow_EMA twice. It would have been better instead to call each 
  once and hold the result
e.g.
fast = Fast_EMA(period1);
slow 
  = Slow_EMA(period2);
Buy = Cum(1)>=25 AND Cross(fast, slow) AND 
  period1 < period2;
Sell= Cross(slow, fast);
2. You have two 
  functions with identical logic. The only difference is the global variable in 
  which the result is stored. There is a cost for AmiBroker to have to parse 
  each function. It would have been better to instead have a single function 
  that returned the result generically, rather than writing directly to a global 
  variable.
e.g.
function My_EMA(period) {
local 
  result;
...
return result;
}
3. It is wasteful to have to 
  check an "if" condition at every iteration of the loop. Set the 0th element of 
  the array first, then loop from 1 to BarCount - 1 without the unnecessary 
  if.
e.g.
result[0] = ...;
for (bar = 1; bar < BarCount; bar++) 
  {
...
}
And, of course, any time you can combine multiple 
  calculations within a single loop (as opposed to looping through all bars for 
  each calculation), that will be the fastest.
Aron's solution 
  addressed all those issues. I don't see how adding to composite would help 
  you.
Mike
--- In amibroker@xxxxxxxxxps.com, 
  "Markus Witzler" <funnybiz@xx.> wrote:
>
> So, there 
  seems to be no chance...
> 
> Thanks though, Aron!
> 
  
> Markus
> 
> ----- Original Message ----- 
> From: 
  Aron 
> To: amibroker@xxxxxxxxxps.com 
  
> Sent: Monday, February 01, 2010 2:46 PM
> Subject: Re: 
  [amibroker] "Pimping" my code
> 
> 
> 
> You would 
  still have to use Foreign() .
> 
> As far as I know for best 
  execution times you need to use:
> 
> No Incudes
> No user 
  functions/procedures
> No loops
> No Foreign()
> 
  
> 
> 
> On 2/1/2010 2:33 PM, Markus Witzler wrote: 
> 
  
> Hello Aron,
> 
> right, I was thinking too complicated. 
  ;-)
> 
> Still, would storing the results of the loop into an 
  addtocomposite ticker make sense that my code could access every time it 
  checked for a MY crossover instead of running the loop?
> 
> 
  Thanks for your clue!
> 
> Markus
> ----- Original Message 
  ----- 
> From: Aron 
> To: amibroker@xxxxxxxxxps.com 
  
> Sent: Monday, February 01, 2010 1:52 PM
> Subject: Re: 
  [amibroker] "Pimping" my code
> 
> 
> 
> period1 = 
  Optimize("period1", 25, 10, 50, 5); 
> period2= 
  Optimize("period2", 840, 800, 900, 10); 
> 
> fast [0] = 
  C[0]; 
> slow [0] = C[0]; 
> for( bar = 1; bar < BarCount; 
  bar++ ) 
> { 
> fast[ bar ] 
  =fast[bar-1]+(Close[bar]-fast[bar-1])*2/(period1+1); 
  
> slow[ bar ] 
  =slow[bar-1]+(Close[bar]-slow[bar-1])*2/(period2+1); 
  
> } 
> 
> Plot(fast, "" ,colorGreen); 
> 
  Plot(slow, "", colorRed); 
> Buy = Cross(fast, slow); 
> Sell = 
  Cross(slow,fast); 
> 
> 
> 
> On 2/1/2010 1:26 
  PM, Markus Witzler wrote: 
> 
> Hello,
> 
> I have 
  loops built into my code and thus suppose that it´s running too slow.
> 
  
> I use a EMA crossover system (long side only at this point):
> 
  
> Buy= Cum(1)>=25 AND Cross(Fast_EMA(period1), 
  Slow_EMA(period2))AND period1 < period2; 
> 
> Sell= 
  Cross(Slow_EMA(period2), Fast_EMA(period1));
> 
> I 
  coded Fast_EMA and Slow_EMA instead of using AB´s built-in EMA function to be 
  able to use my own seed values.
> 
> Anyways, the code for both 
  follows further below.
> 
> Would the rode run faster, if I stored 
  the values for fast_MA and slow_EMA in a separate composite and then used 
  these in the buy and sell rules?
> 
> Or is there another way to 
  make my code faster? Are there some clues how to "pimp" my code when I "have" 
  to use loops (for instance when coding proprietary stops instead of applystop 
  etc.)???
> 
> Some other general guidelines what to look out for 
  when trying to keep the code as fast as possible (or better: the execution 
  thereof)??
> 
> Thanks 
> 
> Markus
> 
> 
  function Fast_EMA( period1 ) 
> 
> { local bar; 
> 
> 
  for( bar = 0; bar < BarCount; bar++ ) 
> 
> { if (bar < 
  1)
> 
> EMA_fast[ bar ] = Close[ 0 ];
> 
> 
  else
> 
> EMA_fast[ bar ] 
  =EMA_fast[bar-1]+(Close[bar]-EMA_fast[bar-1])*2/(period1+1); 
  
> 
> } 
> 
> return EMA_fast; 
> 
> } 
  
> 
> period1 = Optimize("period1", 25, 10, 50, 5);
> 
  
> Exp_MA_fast = Fast_EMA ( Period1 );
> 
> 
> 
  
> function Slow_EMA( period2 ) 
> 
> { local bar;
> 
  
> for( bar = 0; bar < BarCount; bar++ ) 
> 
> { if (bar 
  < 1)
> 
> EMA_slow[ bar ] = Close[ 0 ];
> 
> 
  else
> 
> EMA_slow[ bar ] 
  =EMA_slow[bar-1]+(Close[bar]-EMA_slow[bar-1])*2/(period2+1); 
  
> 
> } 
> 
> return EMA_slow; 
> 
> } 
  
> 
> period2 = Optimize("period2", 840, 800, 900, 
  10);
> 
> Exp_MA_slow = Fast_EMA ( Period2 );
> 
> 
  
> 
> 
> 
> __________ Information from ESET Smart 
  Security, version of virus signature database 4668 (20091207) 
  __________
> 
> The message was checked by ESET Smart 
  Security.
> 
> http://www.eset.com
> 
> 
  
> 
> 
> 
> __________ Information from ESET Smart 
  Security, version of virus signature database 4668 (20091207) 
  __________
> 
> The message was checked by ESET Smart 
  Security.
> 
> http://www.eset.com
> 
> 
  
> 
> __________ Information from ESET Smart Security, version of 
  virus signature database 4668 (20091207) __________
> 
> The 
  message was checked by ESET Smart Security.
> 
> http://www.eset.com
> 
> 
  
> 
> 
> 
> 
> __________ Information from ESET 
  Smart Security, version of virus signature database 4668 (20091207) 
  __________
> 
> The message was checked by ESET Smart 
  Security.
> 
> http://www.eset.com
> 
> 
  
> 
> 
> __________ Information from ESET Smart Security, 
  version of virus signature database 4668 (20091207) __________
> 
  
> The message was checked by ESET Smart Security.
> 
> http://www.eset.com
>