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

RE: [amibroker] AFL formula for CCI



PureBytes Links

Trading Reference Links




<SPAN 
class=324330312-12102003>thanks tomasz, <FONT face="Courier New" 
color=#0000ff size=2>but it's still not working 
when I pass an array for the CCIx period, which is the end result I'm 
looking for. I still get the same error "Error 3. Condition in IF, WHILE, FOR 
statements has to be Numeric or Boolean type."
<SPAN 
class=324330312-12102003> 
<SPAN 
class=324330312-12102003>any further ideas?
<SPAN 
class=324330312-12102003> 
<SPAN 
class=324330312-12102003>here my actual code:
<SPAN 
class=324330312-12102003> 
<SPAN 
class=324330312-12102003>==============
<SPAN 
class=324330312-12102003>function MeanDev(array, mean, range) { result 
= 0; for(i = range; i < BarCount; i++) {  result[i] = 
0; // the mean is not 'moving' over the range (outside the 
loop)  tm = mean[i];   for(j = 0; j < range; j++) 
{   result[i] = result[i] + abs(array[i - j] - 
tm);  }  result[i] = result[i] / range; 
 } return result;}function CCIx(period) 
{ SMATP = MA(Avg, period); MD = MeanDev(Avg, SMATP, 
period); result = (Avg - SMATP) / (0.015 * MD); return 
result;}
<SPAN 
class=324330312-12102003><SPAN 
class=324330312-12102003>==============
<SPAN 
class=324330312-12102003><SPAN 
class=324330312-12102003> 
<SPAN 
class=324330312-12102003><SPAN 
class=324330312-12102003>dave
<SPAN 
class=324330312-12102003><SPAN 
class=324330312-12102003> 
<BLOCKQUOTE 
>
  The mean deviation in CCI requires that SMATP does NOT move 
  over the period.
  In your 
  MD = Sum(Abs(SMATP - avg), 
  period);
   
  SMATP is 
  moving.
   
  You can not code itwith SUM 
  or MA. You must use looping for that.
   
   
  
  function<FONT 
  face="Courier New"> MeanDev( array, mean, range ){  result = 
  0<FONT 
  face="Courier New">;   
  for<FONT 
  face="Courier New">( i = range ; i < BarCount; i++ )   
  {      result[ i ] = <FONT 
  color=#ff00ff>0;  <FONT 
  color=#008000>    <FONT face="Courier New" 
  color=#008000>// the mean is not 'moving' over the range (outside the 
  loop)      tm = 
  mean[ i ]; <FONT 
  face="Courier New">     
   <FONT 
  face="Courier New">for( j = <FONT 
  color=#ff00ff>0; j < range; j++ 
  )      {       
   result[ i ] = result[ i ] + abs<FONT 
  face="Courier New">( array[ i - j ] - tm );     
   }       <FONT 
  face="Courier New"> result[ i ] = result[ i 
  ]/range;   }    
  return result;}
  n = <FONT face="Courier New" 
  color=#ff00ff>20;
  SMATP = <FONT 
  color=#0000ff>MA(Avg,n);<FONT 
  color=#008000>//1,2
  MD = MeanDev( Avg, SMATP, n );
  CCIx = (Avg - SMATP) / (<FONT 
  face="Courier New">0.015 * MD);<FONT 
  color=#008000>//5,6,7
  Plot<FONT 
  face="Courier New">(CCIx,<FONT 
  color=#ff00ff>"CCIx",colorGreen,styleLine);<FONT 
  color=#0000ff>
  Plot(<FONT 
  color=#0000ff>CCI(n),<FONT 
  color=#ff00ff>"CCI",colorRed,styleLine);
   
  Best regards,Tomasz Janeczkoamibroker.com
  <BLOCKQUOTE 
  >
    ----- Original Message ----- 
    <DIV 
    >From: 
    Dave Merrill 
    
    To: <A title=amibroker@xxxxxxxxxxxxxxx 
    href="">amibroker@xxxxxxxxxxxxxxx 
    Sent: Sunday, October 12, 2003 7:24 
    AM
    Subject: RE: [amibroker] AFL formula 
    for CCI
    
    <SPAN 
    class=806081305-12102003>thanks for jumping in graham.
    <SPAN 
    class=806081305-12102003> 
    <SPAN 
    class=806081305-12102003>first, I think AB's Avg is (H+L+C)/3, so we don't 
    need to calculated it again.
    <SPAN 
    class=806081305-12102003> 
    <SPAN 
    class=806081305-12102003>second, I think the problem we're both having is 
    the mean deviation code. my loop version sums, over 20 days, the 
    absolute values of the difference between TODAY'S SMATP and the typical 
    price of that day.
    <SPAN 
    class=806081305-12102003> 
    <SPAN 
    class=806081305-12102003>this non-loop version is close, not the results it 
    gives, but conceptually:
    <SPAN 
    class=806081305-12102003> 
    <SPAN 
    class=806081305-12102003>  MD = Sum(Abs(SMATP - avg), 
    period);
    <SPAN 
    class=806081305-12102003> 
    <SPAN 
    class=806081305-12102003>what's wrong I think is that for each day being 
    summed, it uses the SMATP value for that day, same as it uses the avg value 
    for that day. but as I said above, it needs the avg for each day, but the 
    SMATP value used should always be from the current day, the one being 
    calculated, not the value on each of the previous (Period) 
    days.
    <SPAN 
    class=806081305-12102003> 
    <SPAN 
    class=806081305-12102003>any more ideas? not just you graham, 
    but anyone?
    <SPAN 
    class=806081305-12102003> 
    <SPAN 
    class=806081305-12102003>dave
    <BLOCKQUOTE 
    >This 
      isn't an exact match, I tried to check against the description in 
      ABhelp files but couldn't quite follow it.I am missing something, 
      just not certain what.TP = (H+L+C)/3;SMATP = MA(TP,20);MD 
      = MA(abs(TP - SMATP),20);CCIx = (TP - SMATP) / (0.015 * 
      MD);Plot(CCIx,"CCIx",colorGreen,styleLine);Plot(CCI(20),"CCI",colorRed,styleLine);Cheers,Graham<A 
      href="">http://groups.msn.com/ASXShareTrading<A 
      href="">http://groups.msn.com/FMSAustralia 
      -----Original Message-----From: Dave Merrill 
      [mailto:dmerrill@xxxxxxx] Sent: Sunday, 12 October 2003 12:22 
      PMTo: amibroker@xxxxxxxxxxxxxxxSubject: [amibroker] AFL formula 
      for CCIre the earlier discussion of using arrays as paremters 
      to built-inindicators, I need a version of the CCI that can take an 
      array for itsperiod.here's a description of how the 20-period 
      CCI is calculated, fromStockCharts.com:  1) Calculate today's 
      Typical Price (TP) = (H+L+C)/3 where H = high; L =low, and C = 
      close.  2) Calculate today's 20-day Simple Moving Average of the 
      Typical Price(SMATP).  3) Calculate today's Mean Deviation. 
      First, calculate the absolute valueof the difference between today's 
      SMATP and the typical price for each ofthe past 20 days. Add all of 
      these absolute values together and divide by 20to find the Mean 
      Deviation.  4) The final step is to apply the Typical Price (TP), 
      the Simple MovingAverage of the Typical Price (SMATP), the Mean 
      Deviation and a Constant(.015) to the following 
      formula:      CCI = (Typical Price - SMATP) / 
      (.015 x Mean Deviation)according to my tests, this matches the 
      built-in CCI exactly:  MD = 0;      // 
      MD is Mean Deviation  for(i = 0; i < period; i++) 
      {    MD = MD + Abs(SMATP - Ref(avg, -i));  
      }  MD = MD / period;can anyone see how to do the same 
      thing with AFL array processing instead ofthe 
      loop?thanks,daveSend BUG REPORTS to 
      bugs@xxxxxxxxxxxxxSend SUGGESTIONS to 
      suggest@xxxxxxxxxxxxx-----------------------------------------Post 
      AmiQuote-related messages ONLY to: amiquote@xxxxxxxxxxxxxxx (Web page: 
      <A 
      href="">http://groups.yahoo.com/group/amiquote/messages/)--------------------------------------------Check 
      group FAQ at:<A 
      href="">http://groups.yahoo.com/group/amibroker/files/groupfaq.html 
      Your use of Yahoo! Groups is subject to <A 
      href="">http://docs.yahoo.com/info/terms/ 
      Send BUG REPORTS to bugs@xxxxxxxxxxxxxSend 
      SUGGESTIONS to 
      suggest@xxxxxxxxxxxxx-----------------------------------------Post 
      AmiQuote-related messages ONLY to: amiquote@xxxxxxxxxxxxxxx (Web page: 
      <A 
      href="">http://groups.yahoo.com/group/amiquote/messages/)--------------------------------------------Check 
      group FAQ at: <A 
      href="">http://groups.yahoo.com/group/amibroker/files/groupfaq.html 
      Your use of Yahoo! Groups is subject to the <A 
      href="">Yahoo! Terms of Service. 
      Send BUG REPORTS to bugs@xxxxxxxxxxxxxSend 
    SUGGESTIONS to 
    suggest@xxxxxxxxxxxxx-----------------------------------------Post 
    AmiQuote-related messages ONLY to: amiquote@xxxxxxxxxxxxxxx (Web page: 
    <A 
    href="">http://groups.yahoo.com/group/amiquote/messages/)--------------------------------------------Check 
    group FAQ at: <A 
    href="">http://groups.yahoo.com/group/amibroker/files/groupfaq.html 
    Your use of Yahoo! Groups is subject to the <A 
    href="">Yahoo! Terms of Service. 
    Send 
  BUG REPORTS to bugs@xxxxxxxxxxxxxSend SUGGESTIONS to 
  suggest@xxxxxxxxxxxxx-----------------------------------------Post 
  AmiQuote-related messages ONLY to: amiquote@xxxxxxxxxxxxxxx (Web page: <A 
  href="">http://groups.yahoo.com/group/amiquote/messages/)--------------------------------------------Check 
  group FAQ at: <A 
  href="">http://groups.yahoo.com/group/amibroker/files/groupfaq.html 
  Your use of Yahoo! Groups is subject to the <A 
  href="">Yahoo! Terms of Service. 







Yahoo! Groups Sponsor












Send BUG REPORTS to bugs@xxxxxxxxxxxxx
Send SUGGESTIONS to suggest@xxxxxxxxxxxxx
-----------------------------------------
Post AmiQuote-related messages ONLY to: amiquote@xxxxxxxxxxxxxxx 
(Web page: http://groups.yahoo.com/group/amiquote/messages/)
--------------------------------------------
Check group FAQ at: http://groups.yahoo.com/group/amibroker/files/groupfaq.html



Your use of Yahoo! Groups is subject to the Yahoo! Terms of Service.