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

📄 ta_var.c

📁 股票主要技术指标源码
💻 C
📖 第 1 页 / 共 2 页
字号:
                           MInteger   outBegIdx,                           MInteger   outNBElement,                           double     outReal[] )#elseTA_RetCode TA_PREFIX(INT_VAR)( int    startIdx,                               int    endIdx,                               const INPUT_TYPE *inReal,                               int    optInTimePeriod, /* From 1 to TA_INTEGER_MAX */                                                      int   *outBegIdx,                               int   *outNBElement,                               double      *outReal )#endif{   double tempReal, periodTotal1, periodTotal2, meanValue1, meanValue2;   int i, outIdx, trailingIdx, nbInitialElementNeeded;   /* Validate the calculation method type and    * identify the minimum number of price bar needed    * to calculate at least one output.    */   nbInitialElementNeeded = (optInTimePeriod-1);   /* Move up the start index if there is not    * enough initial data.    */   if( startIdx < nbInitialElementNeeded )      startIdx = nbInitialElementNeeded;   /* Make sure there is still something to evaluate. */   if( startIdx > endIdx )   {      VALUE_HANDLE_DEREF_TO_ZERO(outBegIdx);      VALUE_HANDLE_DEREF_TO_ZERO(outNBElement);      return ENUM_VALUE(RetCode,TA_SUCCESS,Success);   }   /* Do the MA calculation using tight loops. */   /* Add-up the initial periods, except for the last value. */   periodTotal1 = 0;   periodTotal2 = 0;   trailingIdx = startIdx-nbInitialElementNeeded;   i=trailingIdx;   if( optInTimePeriod > 1 )   {      while( i < startIdx ) {         tempReal = inReal[i++];         periodTotal1 += tempReal;         tempReal *= tempReal;         periodTotal2 += tempReal;      }   }   /* Proceed with the calculation for the requested range.    * Note that this algorithm allows the inReal and    * outReal to be the same buffer.    */   outIdx = 0;   do   {      tempReal = inReal[i++];      /* Square and add all the deviation over       * the same periods.       */      periodTotal1 += tempReal;      tempReal *= tempReal;      periodTotal2 += tempReal;      /* Square and add all the deviation over       * the same period.       */      meanValue1 = periodTotal1 / optInTimePeriod;      meanValue2 = periodTotal2 / optInTimePeriod;      tempReal = inReal[trailingIdx++];      periodTotal1 -= tempReal;      tempReal *= tempReal;      periodTotal2 -= tempReal;      outReal[outIdx++] = meanValue2-meanValue1*meanValue1;   } while( i <= endIdx );   /* All done. Indicate the output limits and return. */   VALUE_HANDLE_DEREF(outNBElement) = outIdx;   VALUE_HANDLE_DEREF(outBegIdx) = startIdx;   return ENUM_VALUE(RetCode,TA_SUCCESS,Success);}/**** START GENCODE SECTION 5 - DO NOT DELETE THIS LINE ****//* Generated */ /* Generated */ #define  USE_SINGLE_PRECISION_INPUT/* Generated */ #if !defined( _MANAGED ) && !defined( _JAVA )/* Generated */    #undef   TA_PREFIX/* Generated */    #define  TA_PREFIX(x) TA_S_##x/* Generated */ #endif/* Generated */ #undef   INPUT_TYPE/* Generated */ #define  INPUT_TYPE float/* Generated */ #if defined( _MANAGED )/* Generated */ enum class Core::RetCode Core::Variance( int    startIdx,/* Generated */                                          int    endIdx,/* Generated */                                          cli::array<float>^ inReal,/* Generated */                                          int           optInTimePeriod, /* From 1 to 100000 *//* Generated */                                          double        optInNbDev, /* From TA_REAL_MIN to TA_REAL_MAX *//* Generated */                                          [Out]int%    outBegIdx,/* Generated */                                          [Out]int%    outNBElement,/* Generated */                                          cli::array<double>^  outReal )/* Generated */ #elif defined( _JAVA )/* Generated */ public RetCode variance( int    startIdx,/* Generated */                          int    endIdx,/* Generated */                          float        inReal[],/* Generated */                          int           optInTimePeriod, /* From 1 to 100000 *//* Generated */                          double        optInNbDev, /* From TA_REAL_MIN to TA_REAL_MAX *//* Generated */                          MInteger     outBegIdx,/* Generated */                          MInteger     outNBElement,/* Generated */                          double        outReal[] )/* Generated */ #else/* Generated */ TA_RetCode TA_S_VAR( int    startIdx,/* Generated */                      int    endIdx,/* Generated */                      const float  inReal[],/* Generated */                      int           optInTimePeriod, /* From 1 to 100000 *//* Generated */                      double        optInNbDev, /* From TA_REAL_MIN to TA_REAL_MAX *//* Generated */                      int          *outBegIdx,/* Generated */                      int          *outNBElement,/* Generated */                      double        outReal[] )/* Generated */ #endif/* Generated */ {/* 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( !inReal ) return ENUM_VALUE(RetCode,TA_BAD_PARAM,BadParam);/* Generated */     #endif /* Generated */     if( (int)optInTimePeriod == TA_INTEGER_DEFAULT )/* Generated */        optInTimePeriod = 5;/* Generated */     else if( ((int)optInTimePeriod < 1) || ((int)optInTimePeriod > 100000) )/* Generated */        return ENUM_VALUE(RetCode,TA_BAD_PARAM,BadParam);/* Generated */     if( optInNbDev == TA_REAL_DEFAULT )/* Generated */        optInNbDev = 1.000000e+0;/* Generated */     else if( (optInNbDev < -3.000000e+37) ||  (optInNbDev > 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 */    return FUNCTION_CALL(INT_VAR)( startIdx, endIdx, inReal,/* Generated */                                   optInTimePeriod,                       /* Generated */                                   outBegIdx, outNBElement, outReal );/* Generated */ }/* Generated */ #if defined( _MANAGED ) && defined( USE_SUBARRAY ) && !defined( USE_SINGLE_PRECISION_INPUT )/* Generated */ enum class Core::RetCode Core::TA_INT_VAR( int    startIdx,/* Generated */                                            int    endIdx,/* Generated */ 							               SubArray^ inReal,/* Generated */                                            int    optInTimePeriod,                       /* Generated */                                            [Out]int% outBegIdx,/* Generated */                                            [Out]int% outNBElement,/* Generated */ 										   cli::array<double>^ outReal )/* Generated */ #elif defined( _MANAGED ) /* Generated */ enum class Core::RetCode Core::TA_INT_VAR( int    startIdx,/* Generated */                                            int    endIdx,/* Generated */ 							               cli::array<INPUT_TYPE>^ inReal,/* Generated */                                            int    optInTimePeriod,                       /* Generated */                                            [Out]int% outBegIdx,/* Generated */                                            [Out]int% outNBElement,/* Generated */ 										   cli::array<double>^ outReal )/* Generated */ #elif defined( _JAVA )/* Generated */ public RetCode TA_INT_VAR( int        startIdx,/* Generated */                            int        endIdx,/* Generated */                            INPUT_TYPE inReal[],/* Generated */                            int        optInTimePeriod,                        /* Generated */                            MInteger   outBegIdx,/* Generated */                            MInteger   outNBElement,/* Generated */                            double     outReal[] )/* Generated */ #else/* Generated */ TA_RetCode TA_PREFIX(INT_VAR)( int    startIdx,/* Generated */                                int    endIdx,/* Generated */                                const INPUT_TYPE *inReal,/* Generated */                                int    optInTimePeriod,                        /* Generated */                                int   *outBegIdx,/* Generated */                                int   *outNBElement,/* Generated */                                double      *outReal )/* Generated */ #endif/* Generated */ {/* Generated */    double tempReal, periodTotal1, periodTotal2, meanValue1, meanValue2;/* Generated */    int i, outIdx, trailingIdx, nbInitialElementNeeded;/* Generated */    nbInitialElementNeeded = (optInTimePeriod-1);/* Generated */    if( startIdx < nbInitialElementNeeded )/* Generated */       startIdx = nbInitialElementNeeded;/* 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 */    periodTotal1 = 0;/* Generated */    periodTotal2 = 0;/* Generated */    trailingIdx = startIdx-nbInitialElementNeeded;/* Generated */    i=trailingIdx;/* Generated */    if( optInTimePeriod > 1 )/* Generated */    {/* Generated */       while( i < startIdx ) {/* Generated */          tempReal = inReal[i++];/* Generated */          periodTotal1 += tempReal;/* Generated */          tempReal *= tempReal;/* Generated */          periodTotal2 += tempReal;/* Generated */       }/* Generated */    }/* Generated */    outIdx = 0;/* Generated */    do/* Generated */    {/* Generated */       tempReal = inReal[i++];/* Generated */       periodTotal1 += tempReal;/* Generated */       tempReal *= tempReal;/* Generated */       periodTotal2 += tempReal;/* Generated */       meanValue1 = periodTotal1 / optInTimePeriod;/* Generated */       meanValue2 = periodTotal2 / optInTimePeriod;/* Generated */       tempReal = inReal[trailingIdx++];/* Generated */       periodTotal1 -= tempReal;/* Generated */       tempReal *= tempReal;/* Generated */       periodTotal2 -= tempReal;/* Generated */       outReal[outIdx++] = meanValue2-meanValue1*meanValue1;/* Generated */    } while( i <= endIdx );/* Generated */    VALUE_HANDLE_DEREF(outNBElement) = outIdx;/* Generated */    VALUE_HANDLE_DEREF(outBegIdx) = startIdx;/* 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 + -