View Single Post
  #4 (permalink)  
Old 02-29-2008, 09:41 PM
fxbs fxbs is offline
Senior Member
 
Join Date: Jan 2007
Location: not so remote
Posts: 1,735
fxbs is on a distinguished road
another way - but that's - dirty trick:
simple macd;

only "-SignalSMA" added - that's it

//---- signal line counted in the 2-nd buffer
for(i=0; i<limit-SignalSMA; i++)

before:
PHP Code:
int start()
  {
   
int limit;
   
int counted_bars=IndicatorCounted();
//---- last counted bar will be recounted
   
if(counted_bars>0counted_bars--;
   
limit=Bars-counted_bars;
   
limit MathMin(limitMaxBarsToCount);

//---- macd counted in the 1-st buffer
   
for(int i=0i<limiti++)
      
MacdBuffer[i]=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-
iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);
//---- signal line counted in the 2-nd buffer
   
for(i=0i<limiti++)
      
SignalBuffer[i]=iMAOnArray(MacdBuffer,0,SignalSMA,0,MODE_SMA,i);
//---- done
   
return(0);
  }
//+------------------------------------------------------------------+ 
after

PHP Code:
//+------------------------------------------------------------------+
int start()
  {
   
int limit;
   
int counted_bars=IndicatorCounted();
//---- last counted bar will be recounted
   
if(counted_bars>0counted_bars--;
   
limit=Bars-counted_bars;
   
limit MathMin(limitMaxBarsToCount);

//---- macd counted in the 1-st buffer
   
for(int i=0i<limiti++)
      
MacdBuffer[i]=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-
iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);
//---- signal line counted in the 2-nd buffer
   
for(i=0i<limit-SignalSMAi++)
      
SignalBuffer[i]=iMAOnArray(MacdBuffer,0,SignalSMA,0,MODE_SMA,i);
//---- done
   
return(0);
  }
//+------------------------------------------------------------------+ 
macd limit test3 3lim.gif

not cleanest solution, but ....
(as been mentioned- dirty trick; and TRO can use it for his book...) : - )))))))))
____________

P.S.

whoops - people say this slaking approach no good: limit-SignalSMA can be negative - not refreshing, etc, etc...

whoopsy daisy ... what to do?
____________

gets trickier and trickier...

MaxBarsToCount instead of limit - should take care of it?

for(i=0; i<MaxBarsToCount -SignalSMA; i++)
instead of
for(i=0; i<limit-SignalSMA; i++)

-sure, but we sacrificing our beloved limit....

well, gets even more trickier:

PHP Code:
   limit=Bars-counted_bars;
   
limit MathMin(limitMaxBarsToCount);
//---- macd counted in the 1-st buffer
   
for(int i=0i<limit+SignalSMAi++)
      
MacdBuffer[i]=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-
iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);
//---- signal line counted in the 2-nd buffer
//   for(i=0; i<limit-SignalSMA; i++)
     
for(i=0i<limiti++)
      
SignalBuffer[i]=iMAOnArray(MacdBuffer,Bars,SignalSMA,0,MODE_SMA,i);
//---- done 

so: for(int i=0; i<limit+SignalSMA; i++)
they wouldn't call it "dirty trick" for nothing...
to do it right - everybody can; - try to do it ... different.... : ))))

new update: now - even more less dirtier (setting limit4 each buffer):
PHP Code:
   limit=Bars-counted_bars;
   
limit MathMin(limitMaxBarsToCount);

//---- macd counted in the 1-st buffer
   
for(int i=0i<limiti++)
      
MacdBuffer[i]=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-
        
iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);
//---- signal line counted in the 2-nd buffer
   
limit MathMin(limitMaxBarsToCount-SignalSMA); 
   for(
i=0i<limiti++)
  
      
SignalBuffer[i]=iMAOnArray(MacdBuffer,Bars,SignalSMA,0,MODE_SMA,i);
//---- done
   
return(0); 
1. limit = MathMin(limit, MaxBarsToCount);
...
2. limit = MathMin(limit, MaxBarsToCount-SignalSMA);

!nobody messes with our Limit!! : ((((

Last edited by fxbs; 03-01-2008 at 08:14 PM.
Reply With Quote