Allmänt meddelande

Collapse
No announcement yet.

ADX-värde

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

  • ADX-värde

    ADX-värde brukar hålla sig 0-40, men i Autostock har jag noterat mycket högre värden än så.

    Har hittat ett par exempel där andra program visar runt 20 och Autostock visar runt 80...

    Någon som vet var problemet ligger?



    Har använt nedan:
    adxvärde:=mov(dx(14),14,e)

  • #2
    Olika sätt att beräkna på säkert, det gäller många indikatorer. Har du formel så kan vi alltid scripta den.

    Comment


    • #3
      Det vore fantastiskt! Jag har inte klarat av att göra loopar...


      Här är ADX-funktionen och under det den anropade DirMovement.


      **********************
      inputs:
      Len( numericsimple ) ;

      variables:
      var0( 0 ),
      var1( 0 ),
      var2( 0 ),
      var3( 0 ),
      var4( 0 ),
      var5( 0 ) ;

      Value1 = DirMovement( H, L, C, Len, var0, var1, var2, var3, var4,
      var5 ) ;

      ADX = var3 ;
      ********************
      inputs:
      PriceValueH( numericseries ),
      PriceValueL( numericseries ),
      PriceValueC( numericseries ),
      Len( numericsimple ),
      oDMIPlus( numericref ),
      oDMIMinus( numericref ),
      oDMI( numericref ),
      oADX( numericref ),
      oADXR( numericref ),
      oVolty( numericref ) ;

      variables:
      var0( 0 ),
      var1( 0 ),
      var2( 0 ),
      var3( 0 ),
      var4( 0 ),
      var5( 0 ),
      var6( 0 ),
      var7( 0 ),
      var8( 0 ),
      var9( 1 / Len ),
      var10( 0 ) ;

      if CurrentBar = 1 then
      begin
      for Value1 = 0 to Len - 1
      begin
      var0 = 0 ;
      var1 = 0 ;
      var2 = PriceValueH[Value1] - PriceValueH[ Value1 + 1 ] ;
      var3 = PriceValueL[ Value1 + 1 ] - PriceValueL[Value1] ;
      condition1 = var2 > var3 and var2 > 0 ;
      if condition1 then
      var0 = var2
      else
      begin
      condition1 = var3 > var2 and var3 > 0 ;
      if condition1 then
      var1 = var3 ;
      end;
      var4 = var4 + var0 ;
      var5 = var5 + var1 ;
      var6 = var6 + TrueRangeCustom( PriceValueH, PriceValueL, PriceValueC )[Value1] ;
      end ;
      var7 = var4 / Len ;
      var8 = var5 / Len ;
      oVolty = var6 / Len ;
      end
      else
      begin
      var0 = 0 ;
      var1 = 0 ;
      var2 = PriceValueH - PriceValueH[1] ;
      var3 = PriceValueL[1] - PriceValueL ;
      condition1 = var2 > var3 and var2 > 0 ;
      if condition1 then
      var0 = var2
      else
      begin
      condition1 = var3 > var2 and var3 > 0 ;
      if condition1 then
      var1 = var3 ;
      end;
      var7 = var7[1] + var9 * ( var0 - var7[1] ) ;
      var8 = var8[1] + var9 * ( var1 - var8[1] ) ;
      oVolty = oVolty[1] + var9 * ( TrueRangeCustom( PriceValueH, PriceValueL, PriceValueC )
      - oVolty[1] ) ;
      end ;

      if oVolty > 0 then
      begin
      oDMIPlus = 100 * var7 / oVolty ;
      oDMIMinus = 100 * var8 / oVolty ;
      end
      else
      begin
      oDMIPlus = 0 ;
      oDMIMinus = 0 ;
      end ;

      var10 = oDMIPlus + oDMIMinus ;
      if var10 > 0 then
      oDMI = 100 * AbsValue( oDMIPlus - oDMIMinus ) / var10
      else
      oDMI = 0 ;

      condition1 = CurrentBar <= Len and CurrentBar > 0 ;
      if condition1 then
      begin
      oADX = Cum( oDMI ) / CurrentBar ;





      oADXR = ( oADX + oADX[ CurrentBar - 1 ] ) * .5 ;

      end
      else
      begin
      oADX = oADX[1] + var9 * ( oDMI - oADX[1] ) ;
      oADXR = ( oADX + oADX[ Len - 1 ] ) * .5 ;
      end ;

      DirMovement = 1 ;
      ************************

      Comment


      • #4
        Här är ett script som verkar producera en ADX av samma typ som används i många andra analysprogram:

        $par1:=14
        diffh=sub(h,aref(h,1))
        diffl=sub(aref(l,1),l)

        dmplus=if(and(gt(diffh,diffl),gt(diffh,0)),diffh,0)
        dmminus=if(and(gt(diffl,diffh),gt(diffl,0)),diffl,0)

        diplus=mult(100,ema(div(dmplus,atr($par1)),$par1))
        diminus=mult(100,ema(div(dmminus,atr($par1)),$par1))

        adx=ema(mult(100,div(abs(sub(diplus,diminus)),abs(add(diplus,diminus)))),$par1)
        draw(adx,2,dwaaw)
        draw(diplus,3,dgaa2)
        draw(diminus,4,rpa2)

        add(adx,0)


        Bifogar bild på graf. Man kan ju tex lägga den som en snabbknapp i Pro om man vill också. Har lagt till utritning av DI+ och DI- kurvor också för de som använder dessa.

        Attached Files
        Last edited by Rikard Autostock; 2016-06-03, 14:38.

        Comment

        Working...
        X