📄 ta_trix.c
字号:
if( !tempBuffer ) { VALUE_HANDLE_DEREF_TO_ZERO(outNBElement); VALUE_HANDLE_DEREF_TO_ZERO(outBegIdx); return ENUM_VALUE(RetCode,TA_ALLOC_ERR,AllocErr); } #endif /* Calculate the first EMA */ k = PER_TO_K(optInTimePeriod); retCode = FUNCTION_CALL(INT_EMA)( (startIdx-totalLookback), endIdx, inReal, optInTimePeriod, k, VALUE_HANDLE_OUT(begIdx), VALUE_HANDLE_OUT(nbElement), tempBuffer ); /* Verify for failure or if not enough data after * calculating the EMA. */ if( (retCode != ENUM_VALUE(RetCode,TA_SUCCESS,Success) ) || (VALUE_HANDLE_GET(nbElement) == 0) ) { VALUE_HANDLE_DEREF_TO_ZERO(outNBElement); VALUE_HANDLE_DEREF_TO_ZERO(outBegIdx); ARRAY_FREE( tempBuffer ); return retCode; } nbElementToOutput--; /* Make this variable zero base from now on. */ /* Calculate the second EMA */ nbElementToOutput -= emaLookback; retCode = FUNCTION_CALL_DOUBLE(INT_EMA)( 0, nbElementToOutput, tempBuffer, optInTimePeriod, k, VALUE_HANDLE_OUT(begIdx), VALUE_HANDLE_OUT(nbElement), tempBuffer ); /* Verify for failure or if not enough data after * calculating the EMA. */ if( (retCode != ENUM_VALUE(RetCode,TA_SUCCESS,Success) ) || (VALUE_HANDLE_GET(nbElement) == 0) ) { VALUE_HANDLE_DEREF_TO_ZERO(outNBElement); VALUE_HANDLE_DEREF_TO_ZERO(outBegIdx); ARRAY_FREE( tempBuffer ); return retCode; } /* Calculate the third EMA */ nbElementToOutput -= emaLookback; retCode = FUNCTION_CALL_DOUBLE(INT_EMA)( 0, nbElementToOutput, tempBuffer, optInTimePeriod, k, VALUE_HANDLE_OUT(begIdx), VALUE_HANDLE_OUT(nbElement), tempBuffer ); /* Verify for failure or if not enough data after * calculating the EMA. */ if( (retCode != ENUM_VALUE(RetCode,TA_SUCCESS,Success) ) || (VALUE_HANDLE_GET(nbElement) == 0) ) { VALUE_HANDLE_DEREF_TO_ZERO(outNBElement); VALUE_HANDLE_DEREF_TO_ZERO(outBegIdx); ARRAY_FREE( tempBuffer ); return retCode; } /* Calculate the 1-day Rate-Of-Change */ nbElementToOutput -= emaLookback; retCode = FUNCTION_CALL_DOUBLE(ROC)( 0, nbElementToOutput, tempBuffer, 1, VALUE_HANDLE_OUT(begIdx), outNBElement, outReal ); ARRAY_FREE( tempBuffer ); /* Verify for failure or if not enough data after * calculating the rate-of-change. */ if( (retCode != ENUM_VALUE(RetCode,TA_SUCCESS,Success) ) || ((int)VALUE_HANDLE_DEREF(outNBElement) == 0) ) { VALUE_HANDLE_DEREF_TO_ZERO(outNBElement); VALUE_HANDLE_DEREF_TO_ZERO(outBegIdx); return retCode; } 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::Trix( int startIdx,/* Generated */ int endIdx,/* Generated */ cli::array<float>^ inReal,/* Generated */ int optInTimePeriod, /* From 1 to 100000 *//* Generated */ [Out]int% outBegIdx,/* Generated */ [Out]int% outNBElement,/* Generated */ cli::array<double>^ outReal )/* Generated */ #elif defined( _JAVA )/* Generated */ public RetCode trix( int startIdx,/* Generated */ int endIdx,/* Generated */ float inReal[],/* Generated */ int optInTimePeriod, /* From 1 to 100000 *//* Generated */ MInteger outBegIdx,/* Generated */ MInteger outNBElement,/* Generated */ double outReal[] )/* Generated */ #else/* Generated */ TA_RetCode TA_S_TRIX( int startIdx,/* Generated */ int endIdx,/* Generated */ const float inReal[],/* Generated */ int optInTimePeriod, /* From 1 to 100000 *//* Generated */ int *outBegIdx,/* Generated */ int *outNBElement,/* Generated */ double outReal[] )/* Generated */ #endif/* Generated */ {/* Generated */ double k;/* Generated */ ARRAY_REF(tempBuffer);/* Generated */ VALUE_HANDLE_INT(nbElement);/* Generated */ VALUE_HANDLE_INT(begIdx);/* Generated */ int totalLookback;/* Generated */ int emaLookback, rocLookback;/* Generated */ ENUM_DECLARATION(RetCode) retCode;/* Generated */ int nbElementToOutput;/* 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 = 30;/* Generated */ else if( ((int)optInTimePeriod < 1) || ((int)optInTimePeriod > 100000) )/* 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 */ emaLookback = LOOKBACK_CALL(EMA)( optInTimePeriod );/* Generated */ rocLookback = LOOKBACK_CALL(ROCR)( 1 );/* Generated */ totalLookback = (emaLookback*3) + rocLookback;/* Generated */ if( startIdx < totalLookback )/* Generated */ startIdx = totalLookback;/* 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 */ nbElementToOutput = (endIdx-startIdx)+1+totalLookback;/* Generated */ ARRAY_ALLOC(tempBuffer, nbElementToOutput );/* Generated */ #if !defined( _JAVA )/* Generated */ if( !tempBuffer )/* Generated */ {/* Generated */ VALUE_HANDLE_DEREF_TO_ZERO(outNBElement);/* Generated */ VALUE_HANDLE_DEREF_TO_ZERO(outBegIdx);/* Generated */ return ENUM_VALUE(RetCode,TA_ALLOC_ERR,AllocErr);/* Generated */ }/* Generated */ #endif/* Generated */ k = PER_TO_K(optInTimePeriod); /* Generated */ retCode = FUNCTION_CALL(INT_EMA)( (startIdx-totalLookback), endIdx, inReal,/* Generated */ optInTimePeriod, k,/* Generated */ VALUE_HANDLE_OUT(begIdx), VALUE_HANDLE_OUT(nbElement),/* Generated */ tempBuffer );/* Generated */ if( (retCode != ENUM_VALUE(RetCode,TA_SUCCESS,Success) ) || (VALUE_HANDLE_GET(nbElement) == 0) )/* Generated */ {/* Generated */ VALUE_HANDLE_DEREF_TO_ZERO(outNBElement);/* Generated */ VALUE_HANDLE_DEREF_TO_ZERO(outBegIdx);/* Generated */ ARRAY_FREE( tempBuffer );/* Generated */ return retCode;/* Generated */ }/* Generated */ nbElementToOutput--; /* Generated */ nbElementToOutput -= emaLookback;/* Generated */ retCode = FUNCTION_CALL_DOUBLE(INT_EMA)( 0, nbElementToOutput, tempBuffer,/* Generated */ optInTimePeriod, k,/* Generated */ VALUE_HANDLE_OUT(begIdx), VALUE_HANDLE_OUT(nbElement),/* Generated */ tempBuffer );/* Generated */ if( (retCode != ENUM_VALUE(RetCode,TA_SUCCESS,Success) ) || (VALUE_HANDLE_GET(nbElement) == 0) )/* Generated */ {/* Generated */ VALUE_HANDLE_DEREF_TO_ZERO(outNBElement);/* Generated */ VALUE_HANDLE_DEREF_TO_ZERO(outBegIdx);/* Generated */ ARRAY_FREE( tempBuffer );/* Generated */ return retCode;/* Generated */ }/* Generated */ nbElementToOutput -= emaLookback;/* Generated */ retCode = FUNCTION_CALL_DOUBLE(INT_EMA)( 0, nbElementToOutput, tempBuffer,/* Generated */ optInTimePeriod, k,/* Generated */ VALUE_HANDLE_OUT(begIdx), VALUE_HANDLE_OUT(nbElement),/* Generated */ tempBuffer );/* Generated */ if( (retCode != ENUM_VALUE(RetCode,TA_SUCCESS,Success) ) || (VALUE_HANDLE_GET(nbElement) == 0) )/* Generated */ {/* Generated */ VALUE_HANDLE_DEREF_TO_ZERO(outNBElement);/* Generated */ VALUE_HANDLE_DEREF_TO_ZERO(outBegIdx);/* Generated */ ARRAY_FREE( tempBuffer );/* Generated */ return retCode;/* Generated */ }/* Generated */ nbElementToOutput -= emaLookback;/* Generated */ retCode = FUNCTION_CALL_DOUBLE(ROC)( 0, nbElementToOutput,/* Generated */ tempBuffer,/* Generated */ 1, VALUE_HANDLE_OUT(begIdx), outNBElement,/* Generated */ outReal );/* Generated */ ARRAY_FREE( tempBuffer );/* Generated */ if( (retCode != ENUM_VALUE(RetCode,TA_SUCCESS,Success) ) || ((int)VALUE_HANDLE_DEREF(outNBElement) == 0) )/* Generated */ {/* Generated */ VALUE_HANDLE_DEREF_TO_ZERO(outNBElement);/* Generated */ VALUE_HANDLE_DEREF_TO_ZERO(outBegIdx);/* Generated */ return retCode;/* Generated */ }/* 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 + -