⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ta_sarext.c

📁 股票主要技术指标源码
💻 C
📖 第 1 页 / 共 4 页
字号:
/* Generated */                         int    endIdx,/* Generated */                         const float  inHigh[],/* Generated */                         const float  inLow[],/* Generated */                         double        optInStartValue, /* From TA_REAL_MIN to TA_REAL_MAX *//* Generated */                         double        optInOffsetOnReverse, /* From 0 to TA_REAL_MAX *//* Generated */                         double        optInAccelerationInitLong, /* From 0 to TA_REAL_MAX *//* Generated */                         double        optInAccelerationLong, /* From 0 to TA_REAL_MAX *//* Generated */                         double        optInAccelerationMaxLong, /* From 0 to TA_REAL_MAX *//* Generated */                         double        optInAccelerationInitShort, /* From 0 to TA_REAL_MAX *//* Generated */                         double        optInAccelerationShort, /* From 0 to TA_REAL_MAX *//* Generated */                         double        optInAccelerationMaxShort, /* From 0 to TA_REAL_MAX *//* Generated */                         int          *outBegIdx,/* Generated */                         int          *outNBElement,/* Generated */                         double        outReal[] )/* Generated */ #endif/* Generated */ {/* Generated */    ENUM_DECLARATION(RetCode) retCode;/* Generated */    int isLong; /* Generated */    int todayIdx, outIdx;/* Generated */    VALUE_HANDLE_INT(tempInt);/* Generated */    double newHigh, newLow, prevHigh, prevLow;/* Generated */    double afLong, afShort, ep, sar;/* Generated */    ARRAY_LOCAL(ep_temp,1);/* Generated */  #ifndef TA_FUNC_NO_RANGE_CHECK/* Generated */     if( startIdx < 0 )/* Generated */        return ENUM_VALUE(RetCode,TA_OUT_OF_RANGE_START_INDEX,OutOfRangeStartIndex);/* Generated */     if( (endIdx < 0) || (endIdx < startIdx))/* Generated */        return ENUM_VALUE(RetCode,TA_OUT_OF_RANGE_END_INDEX,OutOfRangeEndIndex);/* Generated */     #if !defined(_JAVA)/* Generated */     if(!inHigh||!inLow)/* Generated */        return ENUM_VALUE(RetCode,TA_BAD_PARAM,BadParam);/* Generated */     #endif /* Generated */     if( optInStartValue == TA_REAL_DEFAULT )/* Generated */        optInStartValue = 0.000000e+0;/* Generated */     else if( (optInStartValue < -3.000000e+37) ||  (optInStartValue > 3.000000e+37) )/* Generated */        return ENUM_VALUE(RetCode,TA_BAD_PARAM,BadParam);/* Generated */     if( optInOffsetOnReverse == TA_REAL_DEFAULT )/* Generated */        optInOffsetOnReverse = 0.000000e+0;/* Generated */     else if( (optInOffsetOnReverse < 0.000000e+0) ||  (optInOffsetOnReverse > 3.000000e+37) )/* Generated */        return ENUM_VALUE(RetCode,TA_BAD_PARAM,BadParam);/* Generated */     if( optInAccelerationInitLong == TA_REAL_DEFAULT )/* Generated */        optInAccelerationInitLong = 2.000000e-2;/* Generated */     else if( (optInAccelerationInitLong < 0.000000e+0) ||  (optInAccelerationInitLong > 3.000000e+37) )/* Generated */        return ENUM_VALUE(RetCode,TA_BAD_PARAM,BadParam);/* Generated */     if( optInAccelerationLong == TA_REAL_DEFAULT )/* Generated */        optInAccelerationLong = 2.000000e-2;/* Generated */     else if( (optInAccelerationLong < 0.000000e+0) ||  (optInAccelerationLong > 3.000000e+37) )/* Generated */        return ENUM_VALUE(RetCode,TA_BAD_PARAM,BadParam);/* Generated */     if( optInAccelerationMaxLong == TA_REAL_DEFAULT )/* Generated */        optInAccelerationMaxLong = 2.000000e-1;/* Generated */     else if( (optInAccelerationMaxLong < 0.000000e+0) ||  (optInAccelerationMaxLong > 3.000000e+37) )/* Generated */        return ENUM_VALUE(RetCode,TA_BAD_PARAM,BadParam);/* Generated */     if( optInAccelerationInitShort == TA_REAL_DEFAULT )/* Generated */        optInAccelerationInitShort = 2.000000e-2;/* Generated */     else if( (optInAccelerationInitShort < 0.000000e+0) ||  (optInAccelerationInitShort > 3.000000e+37) )/* Generated */        return ENUM_VALUE(RetCode,TA_BAD_PARAM,BadParam);/* Generated */     if( optInAccelerationShort == TA_REAL_DEFAULT )/* Generated */        optInAccelerationShort = 2.000000e-2;/* Generated */     else if( (optInAccelerationShort < 0.000000e+0) ||  (optInAccelerationShort > 3.000000e+37) )/* Generated */        return ENUM_VALUE(RetCode,TA_BAD_PARAM,BadParam);/* Generated */     if( optInAccelerationMaxShort == TA_REAL_DEFAULT )/* Generated */        optInAccelerationMaxShort = 2.000000e-1;/* Generated */     else if( (optInAccelerationMaxShort < 0.000000e+0) ||  (optInAccelerationMaxShort > 3.000000e+37) )/* Generated */        return ENUM_VALUE(RetCode,TA_BAD_PARAM,BadParam);/* Generated */     #if !defined(_JAVA)/* Generated */     if( !outReal )/* Generated */        return ENUM_VALUE(RetCode,TA_BAD_PARAM,BadParam);/* Generated */     #endif /* Generated */  #endif /* Generated */    if( startIdx < 1 )/* Generated */       startIdx = 1;/* Generated */    if( startIdx > endIdx )/* Generated */    {/* Generated */       VALUE_HANDLE_DEREF_TO_ZERO(outBegIdx);/* Generated */       VALUE_HANDLE_DEREF_TO_ZERO(outNBElement);/* Generated */       return ENUM_VALUE(RetCode,TA_SUCCESS,Success);/* Generated */    }   /* Generated */    afLong = optInAccelerationInitLong;/* Generated */    afShort = optInAccelerationInitShort;/* Generated */    if( afLong > optInAccelerationMaxLong )/* Generated */       afLong = optInAccelerationInitLong = optInAccelerationMaxLong;/* Generated */    if( optInAccelerationLong > optInAccelerationMaxLong )/* Generated */       optInAccelerationLong = optInAccelerationMaxLong;/* Generated */    if( afShort > optInAccelerationMaxShort) /* Generated */       afShort = optInAccelerationInitShort = optInAccelerationMaxShort;/* Generated */    if( optInAccelerationShort > optInAccelerationMaxShort )/* Generated */       optInAccelerationShort = optInAccelerationMaxShort;      /* Generated */    if(optInStartValue == 0) /* Generated */    {/* Generated */       retCode = FUNCTION_CALL(MINUS_DM)( startIdx, startIdx, inHigh, inLow, 1,/* Generated */                                          VALUE_HANDLE_OUT(tempInt), VALUE_HANDLE_OUT(tempInt),/* Generated */ 									     ep_temp );/* Generated */       if( ep_temp[0] > 0 )/* Generated */          isLong = 0;/* Generated */       else/* Generated */          isLong = 1;/* Generated */       if( retCode != ENUM_VALUE(RetCode,TA_SUCCESS,Success) )/* Generated */       {/* Generated */          VALUE_HANDLE_DEREF_TO_ZERO(outBegIdx);/* Generated */          VALUE_HANDLE_DEREF_TO_ZERO(outNBElement);/* Generated */          return retCode;/* Generated */       }/* Generated */    }/* Generated */    else if( optInStartValue > 0 ) /* Generated */    {/* Generated */       isLong = 1;/* Generated */    }/* Generated */    else /* Generated */    {/* Generated */       isLong = 0;/* Generated */    }/* Generated */    VALUE_HANDLE_DEREF(outBegIdx) = startIdx;/* Generated */    outIdx = 0;/* Generated */    todayIdx = startIdx;/* Generated */    newHigh = inHigh[todayIdx-1];/* Generated */    newLow  = inLow[todayIdx-1];/* Generated */    SAR_ROUNDING(newHigh);/* Generated */    SAR_ROUNDING(newLow);/* Generated */    if(optInStartValue == 0) /* Generated */    {/* Generated */       if( isLong == 1 )/* Generated */       {/* Generated */          ep  = inHigh[todayIdx];/* Generated */          sar = newLow;/* Generated */       }/* Generated */       else/* Generated */       {/* Generated */          ep  = inLow[todayIdx];/* Generated */          sar = newHigh;/* Generated */       }/* Generated */    }/* Generated */    else if ( optInStartValue > 0 ) /* Generated */    {/* Generated */       ep  = inHigh[todayIdx];/* Generated */       sar = optInStartValue;/* Generated */    }/* Generated */    else /* Generated */    {/* Generated */       ep  = inLow[todayIdx];/* Generated */       sar = std_fabs(optInStartValue);/* Generated */    }/* Generated */    SAR_ROUNDING(sar);/* Generated */    newLow  = inLow[todayIdx];/* Generated */    newHigh = inHigh[todayIdx];/* Generated */    while( todayIdx <= endIdx )/* Generated */    {/* Generated */       prevLow  = newLow;/* Generated */       prevHigh = newHigh;/* Generated */       newLow  = inLow[todayIdx];/* Generated */       newHigh = inHigh[todayIdx];   /* Generated */       todayIdx++;/* Generated */       SAR_ROUNDING(newLow);/* Generated */       SAR_ROUNDING(newHigh);/* Generated */       if( isLong == 1 )/* Generated */       {  /* Generated */          if( newLow <= sar )/* Generated */          {/* Generated */             isLong = 0;/* Generated */             sar = ep;/* Generated */             if( sar < prevHigh )/* Generated */                sar = prevHigh;            /* Generated */             if( sar < newHigh )/* Generated */                sar = newHigh;/* Generated */             if( optInOffsetOnReverse != 0.0 )/* Generated */                sar += sar * optInOffsetOnReverse; /* Generated */             outReal[outIdx++] = -sar;/* Generated */             afShort = optInAccelerationInitShort;/* Generated */             ep = newLow;/* Generated */             sar = sar + afShort * (ep - sar);/* Generated */             SAR_ROUNDING( sar );/* Generated */             if( sar < prevHigh )/* Generated */                sar = prevHigh;            /* Generated */             if( sar < newHigh )/* Generated */                sar = newHigh;/* Generated */          }/* Generated */          else/* Generated */          {/* Generated */             outReal[outIdx++] = sar;/* Generated */             if( newHigh > ep )/* Generated */             {/* Generated */                ep = newHigh;/* Generated */                afLong += optInAccelerationLong;/* Generated */                if( afLong > optInAccelerationMaxLong )/* Generated */                   afLong = optInAccelerationMaxLong;/* Generated */             }/* Generated */             sar = sar + afLong * (ep - sar);/* Generated */             SAR_ROUNDING( sar );/* Generated */             if( sar > prevLow )/* Generated */                sar = prevLow;            /* Generated */             if( sar > newLow )/* Generated */                sar = newLow;/* Generated */          }/* Generated */       }/* Generated */       else/* Generated */       {/* Generated */          if( newHigh >= sar )/* Generated */          {/* Generated */             isLong = 1;/* Generated */             sar = ep;/* Generated */             if( sar > prevLow )/* Generated */                sar = prevLow;            /* Generated */             if( sar > newLow )/* Generated */                sar = newLow;/* Generated */             if( optInOffsetOnReverse != 0.0 )/* Generated */                sar -= sar * optInOffsetOnReverse;/* Generated */             outReal[outIdx++] = sar;/* Generated */             afLong = optInAccelerationInitLong;/* Generated */             ep = newHigh;/* Generated */             sar = sar + afLong * (ep - sar);/* Generated */             SAR_ROUNDING( sar );/* Generated */             if( sar > prevLow )/* Generated */                sar = prevLow;            /* Generated */             if( sar > newLow )/* Generated */                sar = newLow;/* Generated */          }/* Generated */          else/* Generated */          {/* Generated */             outReal[outIdx++] = -sar;/* Generated */             if( newLow < ep )/* Generated */             {/* Generated */                ep = newLow;/* Generated */                afShort += optInAccelerationShort;/* Generated */                if( afShort > optInAccelerationMaxShort )/* Generated */                   afShort = optInAccelerationMaxShort;/* Generated */             }/* Generated */             sar = sar + afShort * (ep - sar);/* Generated */             SAR_ROUNDING( sar );/* Generated */             if( sar < prevHigh )/* Generated */                sar = prevHigh;            /* Generated */             if( sar < newHigh )/* Generated */                sar = newHigh;/* Generated */          }/* Generated */       }/* Generated */    }/* Generated */    VALUE_HANDLE_DEREF(outNBElement) = outIdx;/* Generated */    return ENUM_VALUE(RetCode,TA_SUCCESS,Success);/* Generated */ }/* Generated */ /* Generated */ #if defined( _MANAGED )/* Generated */ }}} // Close namespace TicTacTec.TA.Lib/* Generated */ #endif/**** END GENCODE SECTION 5 - DO NOT DELETE THIS LINE ****/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -