📄 ta_sarext.c
字号:
/* 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 + -