Allmänt meddelande

Collapse
No announcement yet.

Cci

Collapse
X
 
  • Filter
  • Klockan
  • Show
Clear All
new posts

  • Cci

    Jag försöker beräkna CCI (Commodity Channel Index), då jag inte hittade denna indikator i NAT.

    CCI kan lätt ligga mellan -150,+150, men när jag räknar ut det så är det runt 0.01, och jag undrar vad som kan tänkas vara fel. Är det någon som kan hitta felet i min kod nedan (alternativt göra uträkningen i egen kod)?

    Här finns definitionen av CCI:
    http://www.stockcharts.com/school/do...nnel_index_cci

    Kod:
    i5(
    
    {Beräkna typical price}
    mTypicalPrice1=ADD(ADD(H,L),C) {High + low+Close}
    mTypicalPrice2=DIV(mTypicalPrice1,3) {Div by three}
    
    
    {Beräkna CCI}
    {CCI = (TP - SMA20 of TP) / (0.015 x Mean deviation)}
    
    mCalculation1=MOV(mTypicalPrice2,20,S) {SMA20 of the TP}
    mCalculation2=SUB(mTypicalPrice2,mCalculation1) {Calculate difference between TP and SMA20}
    mCalculation3=ABS(mCalculation2) {Calculate absolute value}
    mCalculation4=SUM(mCalculation3,20) {add the 20 latest absolute values}
    mCalculation5=DIV(mCalculation4,20) {Divide by 20 to get average}
    mCalculation6=DIV(mCalculation2,mCalculation5) {divide the TP-difference with the mean deviation}
    mCalculation7=DIV(mCalculation6,0.015) {Divide by a constant factor of 0.015}
    
    draw(mTypicalPrice2,1,kab)
    draw(mCalculation7,2,raa)
    draw(GE(mCalculation7,0.05),3,gadF)  {<--- Borde kunna vara > 150 utan vidare, fel?}
    draw(0,5,kpa)
    )

  • #2
    CCI visar värden som kan vara över +100 eller mindre än -100. Om skalningen då är automatisk justeras kurvan mellan högst och lägsta, om jag förstår det rätt, vilket medför att man inte riktigt kan avgöra kurvans värde. Därför har jag använt D (-100 - +100) som gör att kurvan hamnar utanför ibland.

    Högsta värdet jag fick i kalkylforskaren var HM-B på 215.


    CCI Beskrivning:
    CCI = (Typical Price - 20-period SMA of TP) / (.015 x Mean Deviation)

    Typical Price (TP) = (High + Low + Close)/3

    Constant = .015

    There are four steps to calculating the Mean Deviation.
    First, subtract the most recent 20-period average of the typical price from each period's typical price.
    - md1=sub(tp,(mov(tp,20))
    Second, take the absolute values of these numbers.
    - md2=abs(md1)
    Third, sum the absolute values.
    - md3=sum(md2,20)
    Fourth, divide by the total number of periods (20).
    - md4=div(md3,20)

    MeanDev:=div(sum(abs(sub(tp,mov(tp,20))),20),20)


    Lambert set the constant at .015 to ensure that approximately 70 to 80 percent of CCI values would fall between -100 and +100.
    This percentage also depends on the look-back period.
    A shorter CCI (10 periods) will be more volatile with a smaller percentage of values between +100 and -100.
    Conversely, a longer CCI (40 periods) will have a higher percentage of values between +100 and -100.


    Kod:
    { CCI Commodity Channel Index }
    
    {CCI = (TP - SMA20 of TP) / (0.015 x Mean deviation)}
    BrytNivå:=0.05
    p1:=20
    Constant:=0.015
    
    TypicalPrice:=div(add(add(H,L),C),3)
    TpMa:=mov(TypicalPrice,p1,S)
    
    i5(
    MeanDev=div(sum(abs(sub(TypicalPrice,TpMa)),p1),p1)
    CCI=div(sub(TypicalPrice,TpMa),mult(Constant,MeanDev))
    
    villkor1=ge(CCI,BrytNivå)
    
    draw(TypicalPrice,1,kqB)
    draw(CCI,2,rdA)
    draw(0,5,kdA)
    draw(mult(villkor1,20),3,dgsAF)
    
    and(1,0)
    )
    Må gott
    **Vincent

    Comment


    • #3
      Snyggt, det var precis det jag var ute efter.
      Det som ofta buggar för mig är den grafiska biten. Ibland försvinner flaggor om det tex bara är nollor, eller bara ettor, ibland försvinner graferna när man scrollar etc. Mycket svårt att debugga då.

      Tror du gör rätt som låser den till +/-100, så har man iaf någon liten aning om vad värdet är

      Comment

      Working...
      X