📄 ta_t3.c
字号:
/* Initialize e2 */ tempReal = e1; for( i=optInTimePeriod-1; i > 0 ; i-- ) { e1 = (k*inReal[today++])+(one_minus_k*e1); tempReal += e1; } e2 = tempReal / optInTimePeriod; /* Initialize e3 */ tempReal = e2; for( i=optInTimePeriod-1; i > 0 ; i-- ) { e1 = (k*inReal[today++])+(one_minus_k*e1); e2 = (k*e1)+(one_minus_k*e2); tempReal += e2; } e3 = tempReal / optInTimePeriod; /* Initialize e4 */ tempReal = e3; for( i=optInTimePeriod-1; i > 0 ; i-- ) { e1 = (k*inReal[today++])+(one_minus_k*e1); e2 = (k*e1)+(one_minus_k*e2); e3 = (k*e2)+(one_minus_k*e3); tempReal += e3; } e4 = tempReal / optInTimePeriod; /* Initialize e5 */ tempReal = e4; for( i=optInTimePeriod-1; i > 0 ; i-- ) { e1 = (k*inReal[today++])+(one_minus_k*e1); e2 = (k*e1)+(one_minus_k*e2); e3 = (k*e2)+(one_minus_k*e3); e4 = (k*e3)+(one_minus_k*e4); tempReal += e4; } e5 = tempReal / optInTimePeriod; /* Initialize e6 */ tempReal = e5; for( i=optInTimePeriod-1; i > 0 ; i-- ) { e1 = (k*inReal[today++])+(one_minus_k*e1); e2 = (k*e1)+(one_minus_k*e2); e3 = (k*e2)+(one_minus_k*e3); e4 = (k*e3)+(one_minus_k*e4); e5 = (k*e4)+(one_minus_k*e5); tempReal += e5; } e6 = tempReal / optInTimePeriod; /* Skip the unstable period */ while( today <= startIdx ) { /* Do the calculation but do not write the output */ e1 = (k*inReal[today++])+(one_minus_k*e1); e2 = (k*e1)+(one_minus_k*e2); e3 = (k*e2)+(one_minus_k*e3); e4 = (k*e3)+(one_minus_k*e4); e5 = (k*e4)+(one_minus_k*e5); e6 = (k*e5)+(one_minus_k*e6); } /* Calculate the constants */ tempReal = optInVFactor * optInVFactor; c1 = -(tempReal * optInVFactor); c2 = 3.0 * (tempReal - c1); c3 = -6.0 * tempReal - 3.0 * (optInVFactor-c1); c4 = 1.0 + 3.0 * optInVFactor - c1 + 3.0 * tempReal; /* Write the first output */ outIdx = 0; outReal[outIdx++] = c1*e6+c2*e5+c3*e4+c4*e3; /* Calculate and output the remaining of the range. */ while( today <= endIdx ) { e1 = (k*inReal[today++])+(one_minus_k*e1); e2 = (k*e1)+(one_minus_k*e2); e3 = (k*e2)+(one_minus_k*e3); e4 = (k*e3)+(one_minus_k*e4); e5 = (k*e4)+(one_minus_k*e5); e6 = (k*e5)+(one_minus_k*e6); outReal[outIdx++] = c1*e6+c2*e5+c3*e4+c4*e3; } /* Indicates to the caller the number of output * successfully calculated. */ VALUE_HANDLE_DEREF(outNBElement) = outIdx; 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::T3( int startIdx,/* Generated */ int endIdx,/* Generated */ cli::array<float>^ inReal,/* Generated */ int optInTimePeriod, /* From 2 to 100000 *//* Generated */ double optInVFactor, /* From 0 to 1 *//* Generated */ [Out]int% outBegIdx,/* Generated */ [Out]int% outNBElement,/* Generated */ cli::array<double>^ outReal )/* Generated */ #elif defined( _JAVA )/* Generated */ public RetCode t3( int startIdx,/* Generated */ int endIdx,/* Generated */ float inReal[],/* Generated */ int optInTimePeriod, /* From 2 to 100000 *//* Generated */ double optInVFactor, /* From 0 to 1 *//* Generated */ MInteger outBegIdx,/* Generated */ MInteger outNBElement,/* Generated */ double outReal[] )/* Generated */ #else/* Generated */ TA_RetCode TA_S_T3( int startIdx,/* Generated */ int endIdx,/* Generated */ const float inReal[],/* Generated */ int optInTimePeriod, /* From 2 to 100000 *//* Generated */ double optInVFactor, /* From 0 to 1 *//* Generated */ int *outBegIdx,/* Generated */ int *outNBElement,/* Generated */ double outReal[] )/* Generated */ #endif/* Generated */ {/* Generated */ int outIdx, lookbackTotal;/* Generated */ int today, i;/* Generated */ double k, one_minus_k;/* Generated */ double e1, e2, e3, e4, e5, e6;/* Generated */ double c1, c2, c3, c4;/* Generated */ double tempReal;/* 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 < 2) || ((int)optInTimePeriod > 100000) )/* Generated */ return ENUM_VALUE(RetCode,TA_BAD_PARAM,BadParam);/* Generated */ if( optInVFactor == TA_REAL_DEFAULT )/* Generated */ optInVFactor = 7.000000e-1;/* Generated */ else if( (optInVFactor < 0.000000e+0) || (optInVFactor > 1.000000e+0) )/* 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 */ lookbackTotal = 6 * (optInTimePeriod - 1) + TA_GLOBALS_UNSTABLE_PERIOD(TA_FUNC_UNST_T3,T3);/* Generated */ if( startIdx <= lookbackTotal )/* Generated */ startIdx = lookbackTotal;/* Generated */ if( startIdx > endIdx )/* Generated */ {/* Generated */ VALUE_HANDLE_DEREF_TO_ZERO(outNBElement);/* Generated */ VALUE_HANDLE_DEREF_TO_ZERO(outBegIdx);/* Generated */ return ENUM_VALUE(RetCode,TA_SUCCESS,Success); /* Generated */ }/* Generated */ VALUE_HANDLE_DEREF(outBegIdx) = startIdx;/* Generated */ today = startIdx - lookbackTotal;/* Generated */ k = 2.0/(optInTimePeriod+1.0);/* Generated */ one_minus_k = 1.0-k;/* Generated */ tempReal = inReal[today++];/* Generated */ for( i=optInTimePeriod-1; i > 0 ; i-- ) /* Generated */ tempReal += inReal[today++];/* Generated */ e1 = tempReal / optInTimePeriod;/* Generated */ tempReal = e1;/* Generated */ for( i=optInTimePeriod-1; i > 0 ; i-- ) /* Generated */ {/* Generated */ e1 = (k*inReal[today++])+(one_minus_k*e1);/* Generated */ tempReal += e1;/* Generated */ }/* Generated */ e2 = tempReal / optInTimePeriod;/* Generated */ tempReal = e2;/* Generated */ for( i=optInTimePeriod-1; i > 0 ; i-- ) /* Generated */ {/* Generated */ e1 = (k*inReal[today++])+(one_minus_k*e1);/* Generated */ e2 = (k*e1)+(one_minus_k*e2);/* Generated */ tempReal += e2;/* Generated */ }/* Generated */ e3 = tempReal / optInTimePeriod;/* Generated */ tempReal = e3;/* Generated */ for( i=optInTimePeriod-1; i > 0 ; i-- ) /* Generated */ {/* Generated */ e1 = (k*inReal[today++])+(one_minus_k*e1);/* Generated */ e2 = (k*e1)+(one_minus_k*e2);/* Generated */ e3 = (k*e2)+(one_minus_k*e3);/* Generated */ tempReal += e3;/* Generated */ }/* Generated */ e4 = tempReal / optInTimePeriod;/* Generated */ tempReal = e4;/* Generated */ for( i=optInTimePeriod-1; i > 0 ; i-- ) /* Generated */ {/* Generated */ e1 = (k*inReal[today++])+(one_minus_k*e1);/* Generated */ e2 = (k*e1)+(one_minus_k*e2);/* Generated */ e3 = (k*e2)+(one_minus_k*e3);/* Generated */ e4 = (k*e3)+(one_minus_k*e4);/* Generated */ tempReal += e4;/* Generated */ }/* Generated */ e5 = tempReal / optInTimePeriod;/* Generated */ tempReal = e5;/* Generated */ for( i=optInTimePeriod-1; i > 0 ; i-- ) /* Generated */ {/* Generated */ e1 = (k*inReal[today++])+(one_minus_k*e1);/* Generated */ e2 = (k*e1)+(one_minus_k*e2);/* Generated */ e3 = (k*e2)+(one_minus_k*e3);/* Generated */ e4 = (k*e3)+(one_minus_k*e4);/* Generated */ e5 = (k*e4)+(one_minus_k*e5);/* Generated */ tempReal += e5;/* Generated */ }/* Generated */ e6 = tempReal / optInTimePeriod;/* Generated */ while( today <= startIdx )/* Generated */ {/* Generated */ e1 = (k*inReal[today++])+(one_minus_k*e1);/* Generated */ e2 = (k*e1)+(one_minus_k*e2);/* Generated */ e3 = (k*e2)+(one_minus_k*e3);/* Generated */ e4 = (k*e3)+(one_minus_k*e4);/* Generated */ e5 = (k*e4)+(one_minus_k*e5);/* Generated */ e6 = (k*e5)+(one_minus_k*e6);/* Generated */ }/* Generated */ tempReal = optInVFactor * optInVFactor;/* Generated */ c1 = -(tempReal * optInVFactor);/* Generated */ c2 = 3.0 * (tempReal - c1);/* Generated */ c3 = -6.0 * tempReal - 3.0 * (optInVFactor-c1);/* Generated */ c4 = 1.0 + 3.0 * optInVFactor - c1 + 3.0 * tempReal;/* Generated */ outIdx = 0;/* Generated */ outReal[outIdx++] = c1*e6+c2*e5+c3*e4+c4*e3;/* Generated */ while( today <= endIdx )/* Generated */ {/* Generated */ e1 = (k*inReal[today++])+(one_minus_k*e1);/* Generated */ e2 = (k*e1)+(one_minus_k*e2);/* Generated */ e3 = (k*e2)+(one_minus_k*e3);/* Generated */ e4 = (k*e3)+(one_minus_k*e4);/* Generated */ e5 = (k*e4)+(one_minus_k*e5);/* Generated */ e6 = (k*e5)+(one_minus_k*e6);/* Generated */ outReal[outIdx++] = c1*e6+c2*e5+c3*e4+c4*e3;/* 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 + -